18 from rawdata
import add_unpackers
19 from reconstruction
import add_cosmics_reconstruction
20 from ROOT
import Belle2
25 ''' make MCParticles from reconstructed cosmic tracks '''
28 ''' initialization '''
31 mcParticles.registerInDataStore()
34 ''' event processing '''
38 absPDG = abs(Belle2.Const.muon.getPDGCode())
39 mass = Belle2.Const.muon.getMass()
41 extHits = track.getRelationsWith(
'ExtHits')
43 for extHit
in extHits:
44 if extHit.getDetectorID() != Belle2.Const.TOP:
46 if abs(extHit.getPdgCode()) != absPDG:
48 if extHit.getPosition().Perp() < 123.5:
50 if extHit.getPosition() * extHit.getMomentum() > 0:
52 selExtHits.append(extHit)
53 if len(selExtHits) == 0:
55 sortedExtHits = sorted(selExtHits, key=
lambda x: (x.getTOF()))
56 extHit = sortedExtHits[0]
57 pos = extHit.getPosition()
58 mom = extHit.getMomentum()
60 part = mcParticles.appendNew()
61 part.setPDG(extHit.getPdgCode())
63 part.setProductionVertex(pos)
64 part.setProductionTime(tof)
66 part.setEnergy(math.sqrt(mom.Mag2() + mass**2))
67 part.setValidVertex(
True)
68 part.setStatus(Belle2.MCParticle.c_PrimaryParticle)
69 part.addStatus(Belle2.MCParticle.c_StableInGenerator)
71 if mcParticles.getEntries() > 0:
78 main = b2.create_path()
79 emptypath = b2.create_path()
82 roinput = b2.register_module(
'RootInput')
84 main.add_module(roinput)
87 gearbox = b2.register_module(
'Gearbox')
88 main.add_module(gearbox)
91 geometry = b2.register_module(
'Geometry')
92 main.add_module(geometry)
95 add_unpackers(main, components=[
'CDC'])
98 add_cosmics_reconstruction(main, components=[
'CDC'], merge_tracks=
True)
102 main.add_module(maker)
103 maker.if_false(emptypath)
106 output = b2.register_module(
'RootOutput')
107 output.param(
'branchNames', [
'MCParticles'])
108 main.add_module(output)
111 progress = b2.register_module(
'Progress')
112 main.add_module(progress)
a (simplified) python wrapper for StoreArray.