9 from ROOT
import gROOT, Belle2
10 gROOT.ProcessLine(
"gErrorIgnoreLevel = 4000;")
13 Compare the CDCTriggerTSFModule 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)
76 trgcdc = basf2.register_module(
'TRGCDC')
85 'FastSimulationMode': simMode,
88 trgcdc.param(trgcdc_params)
90 trgcdc.param(
'inputCollection',
'CDCHits4Trg')
91 main.add_module(trgcdc)
93 tsf = basf2.register_module(
'CDCTriggerTSF')
97 'TSHitCollectionName':
'TSHits',
98 'ClockSimulation': clock}
101 tsf.param(
'CDCHitCollectionName',
'CDCHits4Trg')
111 test module to compare the output of TRGCDC and CDCTriggerTSF
116 give info for both output lists and warnings in the case of mismatches
120 if oldHits.getEntries() == newHits.getEntries():
121 basf2.B2INFO(
"%d hits" % oldHits.getEntries())
123 basf2.B2WARNING(
"old version: %d, new version: %d" %
124 (oldHits.getEntries(), newHits.getEntries()))
125 for i
in range(max(oldHits.getEntries(), newHits.getEntries())):
126 if i < oldHits.getEntries():
127 oldString =
"ID %d priority %d LR %d fastest T %d priority T %d found T %d" % \
128 (oldHits[i].getSegmentID(), oldHits[i].getPriorityPosition(),
129 oldHits[i].getLeftRight(), oldHits[i].fastestTime(),
130 oldHits[i].priorityTime(), oldHits[i].foundTime())
133 if i < newHits.getEntries():
134 newString =
"ID %d priority %d LR %d fastest T %d priority T %d found T %d" % \
135 (newHits[i].getSegmentID(), newHits[i].getPriorityPosition(),
136 newHits[i].getLeftRight(), newHits[i].fastestTime(),
137 newHits[i].priorityTime(), newHits[i].foundTime())
140 if oldString == newString:
141 basf2.B2INFO(oldString)
143 basf2.B2WARNING(
"old: " + oldString)
144 basf2.B2WARNING(
"new: " + newString)
147 oldCDCRels = oldHits[i].getRelationsTo(
"CDCHits4Trg")
148 newCDCRels = newHits[i].getRelationsTo(
"CDCHits4Trg")
150 oldCDCRels = oldHits[i].getRelationsTo(
"CDCHits")
151 newCDCRels = newHits[i].getRelationsTo(
"CDCHits")
152 if len(oldCDCRels) == len(newCDCRels):
153 basf2.B2INFO(
"%d related CDCHits" % len(oldCDCRels))
155 basf2.B2WARNING(
"old version: %d related CDCHits" % len(oldCDCRels))
156 basf2.B2WARNING(
"new version: %d related CDCHits" % len(newCDCRels))
157 for irel
in range(max(len(oldCDCRels), len(newCDCRels))):
158 if irel < len(oldCDCRels):
159 oldString =
"relation to hit %d, weight %.1f" % \
160 (oldCDCRels[irel].getArrayIndex(), oldCDCRels.weight(irel))
162 oldString =
"no relation"
163 if irel < len(newCDCRels):
164 newString =
"relation to hit %d, weight %.1f" % \
165 (newCDCRels[irel].getArrayIndex(), newCDCRels.weight(irel))
167 newString =
"no relation"
168 if oldString == newString:
169 basf2.B2INFO(oldString)
171 basf2.B2WARNING(oldString)
172 basf2.B2WARNING(newString)
175 main.add_module(
TestModule(), logLevel=basf2.LogLevel.INFO)
181 print(basf2.statistics)