diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py index b85a3711d..33bd4672c 100644 --- a/DDG4/python/DDG4.py +++ b/DDG4/python/DDG4.py @@ -670,7 +670,7 @@ def setupDetector(self, name, action, collections=None): return (seq, acts) return (seq, acts[0]) - def setupCalorimeter(self, name, type=None, collections=None): # noqa: A002 + def setupCalorimeter(self, name, type=None, collections=None): # noqa: A001,A002 """ Setup subdetector of type 'calorimeter' and assign the proper sensitive action @@ -686,7 +686,7 @@ def setupCalorimeter(self, name, type=None, collections=None): # noqa: A002 typ = self.sensitive_types[typ] return self.setupDetector(name, typ, collections) - def setupTracker(self, name, type=None, collections=None): # noqa: A002 + def setupTracker(self, name, type=None, collections=None): # noqa: A001,A002 """ Setup subdetector of type 'tracker' and assign the proper sensitive action diff --git a/examples/ClientTests/scripts/BoxOfStraws.py b/examples/ClientTests/scripts/BoxOfStraws.py index 1ea12406d..c817f8979 100644 --- a/examples/ClientTests/scripts/BoxOfStraws.py +++ b/examples/ClientTests/scripts/BoxOfStraws.py @@ -13,7 +13,6 @@ from __future__ import absolute_import, unicode_literals import os import time -import cmath import DDG4 from DDG4 import OutputLevel as Output from g4units import GeV, MeV, m @@ -46,70 +45,49 @@ def run(): ui = geant4.setupCshUI() if args.batch: ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate'] - + if args.print: + logger.setPrintLevel(int(args.print)) + # # Configure field geant4.setupTrackingField(prt=True) - # Configure Event actions - prt = DDG4.EventAction(kernel, 'Geant4ParticlePrint/ParticlePrint') - prt.OutputLevel = Output.DEBUG - prt.OutputType = 3 - kernel.eventAction().adopt(prt) - - generator_output_level = Output.DEBUG - + # # Configure G4 geometry setup seq, act = geant4.addDetectorConstruction("Geant4DetectorGeometryConstruction/ConstructGeo") act.DebugVolumes = True # # Assign sensitive detectors according to the declarations 'tracker' or 'calorimeter', etc seq, act = geant4.addDetectorConstruction("Geant4DetectorSensitivesConstruction/ConstructSD") - # + # # Assign sensitive detectors in Geant4 by matching a regular expression in the detector sub-tree seq, act = geant4.addDetectorConstruction("Geant4RegexSensitivesConstruction/ConstructSDRegEx") act.Detector = 'BoxOfStrawsDet' - act.Regex = '/world_volume_(.*)/BoxOfStrawsDet_(.*)/row_(.*)/straw_(.*)' act.OutputLevel = Output.ALWAYS - act.enableUI() - + act.Regex = '/world_volume_(.*)/BoxOfStrawsDet_(.*)/row_(.*)/straw_(.*)' + # # Configure I/O geant4.setupROOTOutput('RootOutput', 'BoxOfStraws_' + time.strftime('%Y-%m-%d_%H-%M')) - + # # Setup particle gun gun = geant4.setupGun("Gun", particle='e+', energy=10 * GeV, multiplicity=1) - gun.OutputLevel = Output.DEBUG - + # # And handle the simulation particles. part = DDG4.GeneratorAction(kernel, "Geant4ParticleHandler/ParticleHandler") kernel.generatorAction().adopt(part) part.SaveProcesses = ['Decay'] part.MinimalKineticEnergy = 100 * MeV - part.OutputLevel = Output.DEBUG # generator_output_level - part.enableUI() user = DDG4.Action(kernel, "Geant4TCUserParticleHandler/UserParticleHandler") user.TrackingVolume_Zmax = 2.5 * m user.TrackingVolume_Rmax = 2.5 * m - user.enableUI() part.adopt(user) - + # # Map sensitive detectors of type 'BoxOfStraws' to Geant4CalorimeterAction sd = geant4.description.sensitiveDetector(str('BoxOfStrawsDet')) logger.info(f'+++ BoxOfStraws: SD type: {str(sd.type())}') seq, act = geant4.setupDetector(name='BoxOfStrawsDet', action='MyTrackerSDAction') act.HaveCellID = False - + # # Now build the physics list: phys = geant4.setupPhysics(str('QGSP_BERT')) - ph = DDG4.PhysicsList(kernel, str('Geant4PhysicsList/Myphysics')) - # Add b osons to the model (redundant if already implemented by the model) - ph.addParticleGroup(str('G4BosonConstructor')) - ph.addParticleGroup(str('G4BaryonConstructor')) - ph.addParticleGroup(str('G4MesonConstructor')) - ph.addParticleGroup(str('G4LeptonConstructor')) - # Add multiple scattering in the material - ph.addParticleProcess(str('e[+-]'), str('G4eMultipleScattering'), -1, 1, 1) - # Interactivity - ph.enableUI() - phys.adopt(ph) phys.dump() geant4.execute() diff --git a/examples/ClientTests/src/BoxOfStraws_geo.cpp b/examples/ClientTests/src/BoxOfStraws_geo.cpp index b6ce0e352..fca3363a1 100644 --- a/examples/ClientTests/src/BoxOfStraws_geo.cpp +++ b/examples/ClientTests/src/BoxOfStraws_geo.cpp @@ -17,12 +17,13 @@ // //========================================================================== #include +#include #include using namespace dd4hep; static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector sens) { - double tol = 1e-2; + double tol = 1e-5 * dd4hep::mm; xml_det_t x_det = e; xml_dim_t x_box = x_det.child(_U(box)); xml_dim_t x_rot = x_det.child(_U(rotation));