6 from ROOT
import Belle2
7 from cdctrigger
import add_cdc_trigger
8 from math
import pi, tan
9 from interactive
import embed
12 generate tracks with particle gun, simulate CDC and CDC trigger, save the output.
22 particlegun_params = {
23 'pdgCodes': [-13, 13],
25 'momentumGeneration':
'inversePt',
26 'momentumParams': [0.3, 10.],
27 'thetaGeneration':
'uniform',
28 'thetaParams': [35, 145],
29 'phiGeneration':
'uniform',
30 'phiParams': [0, 360],
31 'vertexGeneration':
'uniform',
32 'xVertexParams': [0, 0.0],
33 'yVertexParams': [0, 0.0],
34 'zVertexParams': [-50.0, 50.0]}
41 basf2.set_random_seed(seed)
45 main = basf2.create_path()
47 empty_path = basf2.create_path()
49 main.add_module(
'EventInfoSetter', evtNumList=evtnum)
50 main.add_module(
'Progress')
51 main.add_module(
'Gearbox')
52 main.add_module(
'Geometry', components=[
'BeamPipe',
54 'MagneticFieldConstant4LimitedRCDC'])
55 particlegun = basf2.register_module(
'ParticleGun')
56 particlegun.param(particlegun_params)
57 main.add_module(particlegun)
60 z_SL0 = [-31 - 1.5 / tan(30 / 180. * pi), 57 + 1.5 / tan(17 / 180. * pi)]
66 """Reject tracks with bad combination of z0 and theta"""
69 """Initialization of Skim"""
74 """event function of Skim"""
77 z0 = self.
mc[0].getVertex().Z()
79 vec = self.
mc[0].getMomentum()
81 if z_SL0[0] < z0 + r_SL0 / vec.Pt() * vec.Z() < z_SL0[1]:
87 skim.if_false(empty_path)
89 main.add_module(
'FullSim')
90 main.add_module(
'CDCDigitizer')
100 main.add_module(
'CDCTriggerTSF',
104 original2d = register_module(
'CDCTrigger2DFinder')
108 original2d.param(
'testFilename',
'tracks.txt')
110 fast2d = register_module(
'CDCTrigger2DFinder')
114 fast2d.param(
'testFilename',
'fasttracks.txt')
115 fast2d.param(
'suppressClone',
True)
116 fast2d.param(
'outputCollectionName',
"TRGCDC2DFinderFastTracks")
117 main.add_module(original2d)
118 main.add_module(fast2d)
122 main.add_module(
'CDCTriggerETF', trueEventTime=trueEventTime)
124 main.add_module(
'CDCTrigger2DFitter')
125 main.add_module(
'CDCTrigger2DFitter',
126 inputCollectionName=
"TRGCDC2DFinderFastTracks",
127 outputCollectionName=
"TRGCDC2DFitterFastTracks")
128 main.add_module(
'CDCTrigger3DFitter')
129 main.add_module(
'CDCTrigger3DFitter',
130 inputCollectionName=
"TRGCDC2DFitterFastTracks",
131 outputCollectionName=
"TRGCDC3DFitterFastTracks")
133 main.add_module(
'CDCTriggerNeuro',
135 main.add_module(
'CDCTriggerNeuro',
137 inputCollectionName=
"TRGCDC2DFinderFastTracks",
138 outputCollectionName=
"TRGCDCNeuroFastTracks")
142 """analyze the difference between 2D with and without clone suppression"""
145 """Initilization of Ana"""
185 """event function of Ana"""
197 ts_hits = self.
trk2d[0].getRelationsTo(
'CDCTriggerSegmentHits')
198 B2DEBUG(10,
'TS size: {}'.format(ts_hits.size()))
199 fast_ts_hits = self.
fast_trk2d[0].getRelationsTo(
'CDCTriggerSegmentHits')
200 B2DEBUG(10,
'fast TS size: {}'.format(fast_ts_hits.size()))
206 all_numbers =
','.join([
'{}'] * 8)
211 B2INFO(
'2D fitter retention rate: {:.2%} (original)/ {:.2%} (fast)'.format(
213 B2INFO(
'3D fitter retention rate: {:.2%} (original)/ {:.2%} (fast)'.format(
215 B2INFO(
'3D neuro retention rate: {:.2%} (original)/ {:.2%} (fast)'.format(
219 main.add_module(
Ana())
220 main.add_module(
'RootOutput', outputFileName=
'cdctrigger.root')
227 print(basf2.statistics)