10 from rawdata
import add_unpackers
11 from reconstruction
import add_cosmics_reconstruction
12 from ROOT
import Belle2
17 ''' make MCParticles from reconstructed cosmic tracks '''
20 ''' initialization '''
23 mcParticles.registerInDataStore()
26 ''' event processing '''
30 absPDG = abs(Belle2.Const.muon.getPDGCode())
31 mass = Belle2.Const.muon.getMass()
33 extHits = track.getRelationsWith(
'ExtHits')
35 for extHit
in extHits:
36 if extHit.getDetectorID() != Belle2.Const.TOP:
38 if abs(extHit.getPdgCode()) != absPDG:
40 if extHit.getPosition().Perp() < 123.5:
42 if extHit.getPosition() * extHit.getMomentum() > 0:
44 selExtHits.append(extHit)
45 if len(selExtHits) == 0:
47 sortedExtHits = sorted(selExtHits, key=
lambda x: (x.getTOF()))
48 extHit = sortedExtHits[0]
49 pos = extHit.getPosition()
50 mom = extHit.getMomentum()
52 part = mcParticles.appendNew()
53 part.setPDG(extHit.getPdgCode())
55 part.setProductionVertex(pos)
56 part.setProductionTime(tof)
58 part.setEnergy(math.sqrt(mom.Mag2() + mass**2))
59 part.setValidVertex(
True)
60 part.setStatus(Belle2.MCParticle.c_PrimaryParticle)
61 part.addStatus(Belle2.MCParticle.c_StableInGenerator)
63 if mcParticles.getEntries() > 0:
71 emptypath = create_path()
74 roinput = register_module(
'RootInput')
76 main.add_module(roinput)
79 gearbox = register_module(
'Gearbox')
80 main.add_module(gearbox)
83 geometry = register_module(
'Geometry')
84 main.add_module(geometry)
87 add_unpackers(main, components=[
'CDC'])
90 add_cosmics_reconstruction(main, components=[
'CDC'], merge_tracks=
True)
94 main.add_module(maker)
95 maker.if_false(emptypath)
98 output = register_module(
'RootOutput')
99 output.param(
'branchNames', [
'MCParticles'])
100 main.add_module(output)
103 progress = register_module(
'Progress')
104 main.add_module(progress)