Belle II Software development
trgcdct3dUnpackerConverter.py
1#!/usr/bin/env python
2
3
10
11# -----------------------------------------------------------------------------------
12#
13# CDCTRGT3D Unpacker and Converter
14#
15# usage : %> basf2 trgcdct3dUnpackerConverter -i [input sroot file name] -o [output root file name]
16#
17# -----------------------------------------------------------------------------------
18
19import basf2
20import ROOT.Belle2
21
22
23class is2DSkim(basf2.Module):
24 """check the 2D skim with Tracks StoreArray"""
25
26 def event(self):
27 """event function of the is2DSkim class"""
28 Tracks = ROOT.Belle2.PyStoreArray("Tracks")
29 TRGGRLT3DUnpackerStores = ROOT.Belle2.PyStoreArray("TRGCDCT3DUnpackerStores")
30
31 isTwoTrack = False
32 if len(Tracks) == 2:
33 isTwoTrack = True
34
35 areTracksClean = True
36 for track in Tracks:
37 trackResult = track.getTrackFitResultWithClosestMass(ROOT.Belle2.Const.pion)
38 if trackResult.getPValue() > 0.1:
39 areTracksClean = False
40
41 enoughHits = True
42 for track in Tracks:
43 trackResult = track.getTrackFitResultWithClosestMass(ROOT.Belle2.Const.pion)
44 nHitStSl = 0
45 nHitAxSl = 0
46 for iAx in range(5):
47 if (trackResult.getHitPatternCDC().getSLayerNHits(2 * iAx) > 3):
48 nHitAxSl += 1
49 for iSt in range(4):
50 if (trackResult.getHitPatternCDC().getSLayerNHits(2 * iSt + 1) > 3):
51 nHitStSl += 1
52 if nHitStSl < 3:
53 enoughHits = False
54 if nHitAxSl < 4:
55 enoughHits = False
56
57 is2D = False
58 for iClk, data in enumerate(TRGGRLT3DUnpackerStores):
59 if (data.m_t2d_fnf != 0):
60 is2D = True
61
62 self.return_value(isTwoTrack and is2D and areTracksClean and enoughHits)
63
64
65if __name__ == '__main__':
66
67 basf2.use_central_database("development")
68 # Hot fix for CDCFudgeFactorFromSigma
69 basf2.use_local_database(ROOT.Belle2.FileSystem.findFile("data/trg/cdc/db_CDCFudgeFactorsForSigma.txt"), "localdb")
70
71 empty_path = basf2.create_path()
72 skim = basf2.register_module(is2DSkim())
73 skim.if_value('=0', empty_path, basf2.AfterConditionPath.END)
74
75 # Create main path
76 main = basf2.create_path()
77 # Add modules to main path
78 main.add_module('RootInput')
79 main.add_module('TRGCDCT3DUnpacker')
80 main.add_module(skim)
81 main.add_module('Gearbox')
82 main.add_module('TRGCDCT3DConverter',
83 hitCollectionName='FirmCDCTriggerSegmentHits',
84 addTSToDatastore=True,
85 EventTimeName='FirmBinnedEventT0',
86 addEventTimeToDatastore=True,
87 inputCollectionName='FirmTRGCDC2DFinderTracks',
88 add2DFinderToDatastore=True,
89 outputCollectionName='FirmTRGCDC3DFitterTracks',
90 add3DToDatastore=True,
91 fit3DWithTSIM=0,
92 firmwareResultCollectionName='TRGCDCT3DUnpackerStores',
93 isVerbose=0)
94 main.add_module(
95 'RootOutput',
96 branchNames=[
97 'TRGCDCT3DUnpackerStores',
98 'FirmCDCTriggerSegmentHits',
99 'FirmBinnedEventT0',
100 'FirmTRGCDC2DFinderTracks',
101 'FirmTRGCDC3DFitterTracks'])
102 # Process all events
103 basf2.process(main)
104 print(basf2.statistics)