9 from ROOT
import gROOT, Belle2
10 gROOT.ProcessLine(
"gErrorIgnoreLevel = 4000;")
13 Compare the CDCTrigger2DFitterModule output with the old TRGCDCModule,
14 to confirm that the behaviour of the new code is correct.
25 particlegun_params = {
26 'pdgCodes': [-13, 13],
28 'momentumGeneration':
'inversePt',
29 'momentumParams': [0.3, 10.],
30 'thetaGeneration':
'uniform',
31 'thetaParams': [35, 123],
32 'phiGeneration':
'uniform',
33 'phiParams': [0, 360],
34 'vertexGeneration':
'fixed',
35 'xVertexParams': [0.],
36 'yVertexParams': [0.],
37 'zVertexParams': [0.]}
39 bkgdir =
'/sw/belle2/bkg/'
46 basf2.set_random_seed(seed)
48 basf2.set_log_level(basf2.LogLevel.ERROR)
50 main = basf2.create_path()
52 main.add_module(
'EventInfoSetter', evtNumList=evtnum)
53 main.add_module(
'Progress')
54 main.add_module(
'Gearbox')
55 main.add_module(
'Geometry', components=[
'CDC',
56 'MagneticFieldConstant4LimitedRCDC'])
57 particlegun = basf2.register_module(
'ParticleGun')
58 particlegun.param(particlegun_params)
59 main.add_module(particlegun)
60 main.add_module(
'FullSim')
62 bkgmixer = basf2.register_module(
'BeamBkgMixer')
63 bkgfiles = glob.glob(os.path.join(bkgdir,
'*[!(PXD)(ECL)]??.root'))
64 bkgmixer.param(
'backgroundFiles', bkgfiles)
65 bkgmixer.param(
'components', [
'CDC'])
66 main.add_module(bkgmixer)
67 cdcdigitizer = basf2.register_module(
'CDCDigitizer')
69 cdcdigitizer.param(
'TrigTimeJitter', 32.)
70 main.add_module(cdcdigitizer)
79 trgcdc = basf2.register_module(
'TRGCDC')
88 'FastSimulationMode': simMode,
92 'Fitter3Ds2DFitDrift': fitdrift,
93 'Fitter3DsXtSimple': xtsimple,
94 '2DfinderCollection':
'TRGCDC2DFinderTracks'}
95 trgcdc.param(trgcdc_params)
97 trgcdc.param(
'inputCollection',
'CDCHits4Trg')
98 main.add_module(trgcdc, logLevel=basf2.LogLevel.INFO)
101 main.add_module(
'CDCTriggerETF')
102 main.add_module(
'CDCTrigger2DFitter', logLevel=basf2.LogLevel.INFO,
103 minHits=2, useDriftTime=fitdrift, xtSimple=xtsimple,
104 outputCollectionName=
'FitterTracks')
105 main.add_module(
'CDCTrigger3DFitter', logLevel=basf2.LogLevel.INFO,
107 inputCollectionName=
'FitterTracks',
108 outputCollectionName=
'Fitter3DTracks')
117 test module to compare the output of TRGCDC and CDCTrigger2DFitter/CDCTrigger3DFitter
122 give info for both output lists and warnings in the case of mismatches
127 if oldTracks.getEntries() == newTracks.getEntries():
128 basf2.B2INFO(
"%d tracks" % oldTracks.getEntries())
130 basf2.B2WARNING(
"old version: %d, new version: %d" %
131 (oldTracks.getEntries(), newTracks.getEntries()))
132 for i
in range(max(oldTracks.getEntries(), newTracks.getEntries())):
133 if i < oldTracks.getEntries():
134 ptfactor = 0.3 * 1.5 / 100 * 222.376063
135 oldString =
"phi %.3f pt %.3f charge %d chi2 %.3f z %.3f cot %.3f chi2 %.3f" % \
136 (oldTracks[i].getPhi0() * 180. / np.pi,
137 oldTracks[i].getTransverseMomentum(1.5) / ptfactor,
138 oldTracks[i].getChargeSign(),
139 oldTracks[i].getChi2D(),
140 oldTracks[i].getZ0(),
141 oldTracks[i].getCotTheta(),
142 oldTracks[i].getChi3D())
144 oldString =
"no track"
145 if i < newTracks.getEntries():
146 newString =
"phi %.3f pt %.3f charge %d chi2 %.3f z %.3f cot %.3f chi2 %.3f" % \
147 (newTracks[i].getPhi0() * 180. / np.pi,
148 newTracks[i].getTransverseMomentum(1.5),
149 newTracks[i].getChargeSign(),
150 newTracks[i].getChi2D(),
151 newTracks[i].getZ0(),
152 newTracks[i].getCotTheta(),
153 newTracks[i].getChi3D())
155 newString =
"no track"
156 if oldString == newString:
157 basf2.B2INFO(oldString)
159 basf2.B2WARNING(
"old: " + oldString)
160 basf2.B2WARNING(
"new: " + newString)
163 main.add_module(
TestModule(), logLevel=basf2.LogLevel.INFO)
169 print(basf2.statistics)