|
| 1 | +from LDMX.Framework import ldmxcfg |
| 2 | +p = ldmxcfg.Process('test') |
| 3 | + |
| 4 | +p.maxTriesPerEvent = 10000 |
| 5 | + |
| 6 | +from LDMX.Biasing import ecal |
| 7 | +from LDMX.SimCore import generators as gen |
| 8 | +from LDMX.SimCore import simulator as sim |
| 9 | +det = 'ldmx-det-v15-8gev' |
| 10 | +mySim = sim.simulator( "mySim" ) |
| 11 | +mySim.setDetector(det, True ) |
| 12 | +mySim.description = 'Deep ECal Gun Simulation' |
| 13 | + |
| 14 | +ene_ang_pos_cmds_ele = [ |
| 15 | + '/gps/ene/type Lin', |
| 16 | + '/gps/ene/min 1 GeV', |
| 17 | + '/gps/ene/max 3 GeV', |
| 18 | + '/gps/ene/gradient 0.', |
| 19 | + '/gps/ene/intercept 1.', |
| 20 | + '/gps/ang/type cos', |
| 21 | + '/gps/pos/type Plane', |
| 22 | + '/gps/pos/shape Square', |
| 23 | + '/gps/pos/centre 0 0 600 mm', |
| 24 | + '/gps/pos/halfx 100 mm', |
| 25 | + '/gps/pos/halfy 100 mm' |
| 26 | + ] |
| 27 | + |
| 28 | +ene_ang_pos_cmds_gamma = [ |
| 29 | + '/gps/ene/type Lin', |
| 30 | + '/gps/ene/min 3 GeV', |
| 31 | + '/gps/ene/max 5 GeV', |
| 32 | + '/gps/ene/gradient 0.', |
| 33 | + '/gps/ene/intercept 1.', |
| 34 | + '/gps/ang/type cos', |
| 35 | + '/gps/pos/type Plane', |
| 36 | + '/gps/pos/shape Square', |
| 37 | + '/gps/pos/centre 0 0 600 mm', |
| 38 | + '/gps/pos/halfx 100 mm', |
| 39 | + '/gps/pos/halfy 100 mm' |
| 40 | + ] |
| 41 | + |
| 42 | +# One electron and one photon both with the above initial kinematics |
| 43 | +gps_cmds = (['/gps/particle e-'] + |
| 44 | + ene_ang_pos_cmds_ele + |
| 45 | + ['/gps/source/add 1', '/gps/particle gamma'] + |
| 46 | + ene_ang_pos_cmds_gamma + |
| 47 | + ['/gps/source/multiplevertex True']) |
| 48 | + |
| 49 | +mySim.generators = [gen.gps('electron_photon', gps_cmds)] |
| 50 | + |
| 51 | +p.sequence = [ mySim ] |
| 52 | + |
| 53 | +################################################################## |
| 54 | +# Below should be the same for all sim scenarios |
| 55 | + |
| 56 | +import os |
| 57 | +import sys |
| 58 | + |
| 59 | +p.maxEvents = int(os.environ['LDMX_NUM_EVENTS']) |
| 60 | +p.run = int(os.environ['LDMX_RUN_NUMBER']) |
| 61 | + |
| 62 | +p.histogramFile = f'hist.root' |
| 63 | +p.outputFiles = [f'events.root'] |
| 64 | + |
| 65 | +# Load the full tracking sequance |
| 66 | +from LDMX.Tracking import full_tracking_sequence |
| 67 | + |
| 68 | +# Load the ECAL modules |
| 69 | +import LDMX.Ecal.EcalGeometry |
| 70 | +import LDMX.Ecal.ecal_hardcoded_conditions |
| 71 | +import LDMX.Ecal.digi as ecal_digi |
| 72 | +import LDMX.Ecal.vetos as ecal_vetos |
| 73 | +import LDMX.Ecal.ecalClusters as ecal_cluster |
| 74 | + |
| 75 | +# Load the HCAL modules |
| 76 | +import LDMX.Hcal.HcalGeometry |
| 77 | +import LDMX.Hcal.hcal_hardcoded_conditions |
| 78 | +import LDMX.Hcal.digi as hcal_digi |
| 79 | +hcal_digi_reco = hcal_digi.HcalSimpleDigiAndRecProducer() |
| 80 | + |
| 81 | + |
| 82 | +# Load electron counting and trigger |
| 83 | +from LDMX.Recon.electronCounter import ElectronCounter |
| 84 | +from LDMX.Recon.simpleTrigger import TriggerProcessor |
| 85 | + |
| 86 | +count = ElectronCounter(1,'ElectronCounter') |
| 87 | +count.input_pass_name = '' |
| 88 | + |
| 89 | +trigger = TriggerProcessor('trigger', 8000.) |
| 90 | + |
| 91 | +# Load the DQM modules |
| 92 | +from LDMX.DQM import dqm |
| 93 | + |
| 94 | +# Define ecal veto and use tracking in it |
| 95 | +ecal_veto = ecal_vetos.EcalVetoProcessor() |
| 96 | +ecal_veto.recoil_from_tracking = False |
| 97 | + |
| 98 | +ecal_mip = ecal_vetos.EcalMipProcessor() |
| 99 | + |
| 100 | +ecal_veto_pnet = ecal_vetos.EcalPnetVetoProcessor() |
| 101 | +ecal_veto_pnet.recoil_from_tracking = False |
| 102 | + |
| 103 | +# Load hcal veto |
| 104 | +import LDMX.Hcal.hcal as hcal |
| 105 | +hcal_veto = hcal.HcalVetoProcessor() |
| 106 | + |
| 107 | +p.logger.termLevel = 1 |
| 108 | +# Example to show trace level logging for trigger (only) |
| 109 | +p.logger.custom(trigger, level = -1) |
| 110 | + |
| 111 | +p.sequence.extend([ |
| 112 | + ecal_digi.EcalDigiProducer(), |
| 113 | + ecal_digi.EcalRecProducer(), |
| 114 | + ecal_cluster.EcalClusterProducer(), |
| 115 | + ecal_veto, |
| 116 | + ecal_mip, |
| 117 | + ecal_veto_pnet, |
| 118 | + hcal_digi_reco, |
| 119 | + hcal_veto, |
| 120 | + trigger, |
| 121 | + dqm.EcalClusterAnalyzer() |
| 122 | + ]) |
| 123 | + |
| 124 | +p.skimDefaultIsDrop() |
| 125 | +p.skimConsider(trigger.instanceName) |
| 126 | + |
| 127 | +almost_all_dqm = [dqm.sample_validation_dqm + dqm.ecal_dqm + dqm.hcal_dqm + dqm.trigger_dqm] |
| 128 | + |
| 129 | +p.sequence.extend(*almost_all_dqm) |
0 commit comments