diff --git a/bind/example.py b/bind/example.py index 9ec268f..8a427b3 100644 --- a/bind/example.py +++ b/bind/example.py @@ -1,10 +1,24 @@ from G4Calo import GeometryDescriptor, G4System +import sys cw = GeometryDescriptor() + + for _ in range(25): - cw.addLayer(0.5, "G4Pb", False) + cw.addLayer(0.5, "G4_Pb", False) cw.addLayer(1.,"G4_POLYSTYRENE",True,1) #directly use G4System as a global singleton G4System.init(cw) + + +df = G4System.run_batch(10, 'gamma', 1) +cw = GeometryDescriptor() + +for _ in range(5): + cw.addLayer(0.5, "G4_Pb", False) + cw.addLayer(1.,"G4_POLYSTYRENE",True,1) + +G4System.init(cw) +df = G4System.run_batch(10, 'gamma', 1) \ No newline at end of file diff --git a/include/GeometryDescriptor.hh b/include/GeometryDescriptor.hh index 619ff42..54a4b99 100644 --- a/include/GeometryDescriptor.hh +++ b/include/GeometryDescriptor.hh @@ -134,6 +134,10 @@ public: } } + bool isEmpty()const{ + return layers.size() == 0; + } + void setG4System(G4System* g4system){ this->g4system = g4system; } diff --git a/src/G4System.cc b/src/G4System.cc index 9bd61b6..9137f8f 100644 --- a/src/G4System.cc +++ b/src/G4System.cc @@ -14,6 +14,9 @@ void G4System::init(GeometryDescriptor &CW){ if(CW.isAssigned()){ throw std::runtime_error("GeometryDescriptor already assigned"); } + if(CW.isEmpty()){ + throw std::runtime_error("GeometryDescriptor is empty"); + } if(assigned_cw != nullptr){ //reassign assigned_cw->unAssign();