def setUp(self): config = {} config['layers'] = 444 config['thickness_layer'] = 40.0 config['thickness_bar'] = 10.0 config['density_iron'] = 7.87 config['density_scint'] = 1.06 self.max_size = config['layers'] * config['thickness_layer'] / 2 self.dist = GA.composite_z(config)
physics_list = G4.G4physicslists.QGSP_BERT() gRunManager.SetUserInitialization(physics_list) physics_list.SetDefaultCutValue(1.0 * mm) physics_list.SetCutsWithDefault() # # Generator actions # pos = [] width = rc['width'] * rc['bars'] pos.append(uniform(loc=-width / 2, scale=width)) pos.append(uniform(loc=-width / 2, scale=width)) pos.append(GeneratorAction.composite_z(rc)) #config['vertex'] mom = [0, 0, config['energy_MeV']] pid = config['pid'] if GeneratorAction.is_neutrino_code(config['pid']): if config['distribution'] == 'point': raise NotImplementedError assert config['distribution'] == 'electron' or\ config['distribution'] == 'muon' or\ config['distribution'] == 'flat' log.warning('Energy argument ignored... assuming 3.8 GeV muons')
detector = BoxDetectorConstruction('%s.gdml' % material) gRunManager.SetUserInitialization(detector) physics_list = G4.G4physicslists.QGSP_BERT() gRunManager.SetUserInitialization(physics_list) physics_list.SetDefaultCutValue(1.0 * mm) physics_list.SetCutsWithDefault() pos = [] pos.append(0) pos.append(0) pos.append(uniform(loc=-6000, scale=1000)) mom = [0, 0, randint(1, 2 * 7, scale=500)] # Scale: GeV -> MeV pid = 13 pga = GeneratorAction.ParticleGenerator(pos, mom, pid) pga = GeneratorAction.VlenfGeneratorAction(pga) gRunManager.SetUserAction(pga) processors = [] processors.append("AppendTruth") processors.append("CouchManager") myEA = EventAction.VlenfEventAction(processors) gRunManager.SetUserAction(myEA) myTA = TrackingAction.LengthTrackingAction() gRunManager.SetUserAction(myTA) # This is a trick that, if enabled, lets the event action notify the