File indexing completed on 2026-09-09 08:23:51
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 from g4units import ns
0012
0013
0014 def run():
0015 import DigiTest
0016 digi = DigiTest.Test(geometry=None)
0017 keep_raw = False
0018 rdr_output = DigiTest.DEBUG
0019 erase_combined = True
0020
0021 if digi.keep_raw:
0022 keep_raw = True
0023 if digi.output_level:
0024 rdr_output = int(digi.output_level)
0025 if digi.erase_combined:
0026 erase_combined = int(erase_combined)
0027
0028 attenuation = digi.attenuation
0029 input_action = digi.input_action('DigiParallelActionSequence/READER')
0030
0031 input_action.adopt_action('DigiDDG4ROOT/SignalReader',
0032 mask=0x0,
0033 keep_raw=keep_raw,
0034 input=[digi.next_input()],
0035 OutputLevel=rdr_output)
0036 digi.info('Created input.signal')
0037
0038 digi.info('Creating spillover sequence for EARLIER bunch crossings.....')
0039
0040 spillover = input_action.adopt_action('DigiSequentialActionSequence/Spillover-25')
0041 evtreader = spillover.adopt_action('DigiDDG4ROOT/Reader-25ns',
0042 mask=0x1,
0043 keep_raw=keep_raw,
0044 input=[digi.next_input()],
0045 OutputLevel=rdr_output)
0046 attenuate = spillover.adopt_action('DigiAttenuatorSequence/Att-25ns',
0047 t0=-25 * ns,
0048 signal_decay='exponential',
0049 processor_type='DigiAttenuator',
0050 input_mask=evtreader.mask,
0051 input_segment='inputs',
0052 containers=attenuation)
0053 hist_drop = spillover.adopt_action('DigiHitHistoryDrop/Drop-25ns', masks=[evtreader.mask])
0054 digi.check_creation([spillover, evtreader, attenuate, hist_drop])
0055 digi.info('Created input.spillover-25')
0056
0057 spillover = input_action.adopt_action('DigiSequentialActionSequence/Spillover-50')
0058 evtreader = spillover.adopt_action('DigiDDG4ROOT/Reader-50ns',
0059 mask=0x2,
0060 keep_raw=keep_raw,
0061 input=[digi.next_input()],
0062 OutputLevel=rdr_output)
0063 attenuate = spillover.adopt_action('DigiAttenuatorSequence/Att-50ns',
0064 t0=-50 * ns,
0065 input_mask=evtreader.mask,
0066 containers=attenuation,
0067 OutputLevel=rdr_output)
0068 hist_drop = spillover.adopt_action('DigiHitHistoryDrop/Drop-50ns', masks=[evtreader.mask])
0069 digi.check_creation([spillover, evtreader, attenuate, hist_drop])
0070 digi.info('Created input.spillover-50')
0071
0072 spillover = input_action.adopt_action('DigiSequentialActionSequence/Spillover-75')
0073 evtreader = spillover.adopt_action('DigiDDG4ROOT/Reader-75ns',
0074 mask=0x3,
0075 keep_raw=keep_raw,
0076 input=[digi.next_input()],
0077 OutputLevel=rdr_output)
0078 attenuate = spillover.adopt_action('DigiAttenuatorSequence/Att-75ns',
0079 t0=-75 * ns,
0080 input_mask=evtreader.mask,
0081 containers=attenuation,
0082 OutputLevel=rdr_output)
0083 hist_drop = spillover.adopt_action('DigiHitHistoryDrop/Drop-75ns', masks=[evtreader.mask])
0084 digi.check_creation([spillover, evtreader, attenuate, hist_drop])
0085 digi.info('Created input.spillover-75')
0086
0087 digi.info('Creating spillover sequence for LATER bunch crossings.....')
0088
0089 spillover = input_action.adopt_action('DigiSequentialActionSequence/Spillover+25')
0090 evtreader = spillover.adopt_action('DigiDDG4ROOT/Reader+25ns',
0091 mask=0x4,
0092 keep_raw=keep_raw,
0093 input=[digi.next_input()],
0094 OutputLevel=rdr_output)
0095 attenuate = spillover.adopt_action('DigiAttenuatorSequence/Att+25ns',
0096 t0=25 * ns,
0097 input_mask=evtreader.mask,
0098 containers=attenuation,
0099 OutputLevel=rdr_output)
0100 hist_drop = spillover.adopt_action('DigiHitHistoryDrop/Drop+25ns', masks=[evtreader.mask])
0101 digi.check_creation([spillover, evtreader, attenuate, hist_drop])
0102 digi.info('Created input.spillover+25')
0103
0104 spillover = input_action.adopt_action('DigiSequentialActionSequence/Spillover+50')
0105 evtreader = spillover.adopt_action('DigiDDG4ROOT/Reader+50ns',
0106 mask=0x5,
0107 keep_raw=keep_raw,
0108 input=[digi.next_input()],
0109 OutputLevel=rdr_output)
0110 attenuate = spillover.adopt_action('DigiAttenuatorSequence/Att+50ns',
0111 t0=50 * ns,
0112 input_mask=evtreader.mask,
0113 containers=attenuation,
0114 OutputLevel=rdr_output)
0115 hist_drop = spillover.adopt_action('DigiHitHistoryDrop/Drop_50ns', masks=[evtreader.mask])
0116 digi.check_creation([spillover, evtreader, attenuate, hist_drop])
0117 digi.info('Created input.spillover+50')
0118
0119 spillover = input_action.adopt_action('DigiSequentialActionSequence/Spillover+75')
0120 evtreader = spillover.adopt_action('DigiDDG4ROOT/Reader+75ns',
0121 mask=0x6,
0122 keep_raw=keep_raw,
0123 input=[digi.next_input()],
0124 OutputLevel=rdr_output)
0125 attenuate = spillover.adopt_action('DigiAttenuatorSequence/Att+75ns',
0126 t0=75 * ns,
0127 input_mask=evtreader.mask,
0128 containers=attenuation,
0129 OutputLevel=rdr_output)
0130 hist_drop = spillover.adopt_action('DigiHitHistoryDrop/Drop+75ns', masks=[evtreader.mask])
0131 digi.check_creation([spillover, evtreader, attenuate, hist_drop])
0132 digi.info('Created input.spillover+75')
0133
0134 event = digi.event_action('DigiSequentialActionSequence/EventAction')
0135 combine = event.adopt_action('DigiContainerCombine/Combine',
0136 input_masks=[0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6],
0137 input_segment='inputs',
0138 output_mask=0xFEED,
0139 output_segment='deposits')
0140 combine.erase_combined = erase_combined
0141 evtdump = event.adopt_action('DigiStoreDump/StoreDump')
0142 digi.check_creation([combine, evtdump])
0143 digi.info('Created event.dump')
0144
0145 digi.run_checked(num_events=5, num_threads=5, parallel=3)
0146
0147
0148 if __name__ == '__main__':
0149 run()