Belle II Software development
trgcdct3dDQM.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
22import sys # get argv
23argvs = sys.argv # get arg
24argc = len(argvs) # of arg
25
26if argc == 3:
27 inname = argvs[1]
28 histname = argvs[2]
29 # outname=argvs[2]
30 # histname=argvs[3]
31else:
32 sys.exit("trgcdct3dDQM.py> # of arg is strange. Exit.")
33
34
35# class is2DSkim(basf2.Module):
36# def event(self):
37# Tracks = ROOT.Belle2.PyStoreArray("Tracks")
38# TRGGRLT3DUnpackerStores = ROOT.Belle2.PyStoreArray("TRGCDCT3DUnpackerStores")
39#
40# isTwoTrack = False
41# if len(Tracks) == 2:
42# isTwoTrack = True
43#
44# areTracksClean = True
45# for track in Tracks:
46# trackResult = track.getTrackFitResultWithClosestMass(ROOT.Belle2.Const.pion)
47# if trackResult.getPValue() > 0.1:
48# areTracksClean = False
49#
50# enoughHits = True
51# for track in Tracks:
52# trackResult = track.getTrackFitResultWithClosestMass(ROOT.Belle2.Const.pion)
53# nHitStSl = 0
54# nHitAxSl = 0
55# for iAx in range(5):
56# if (trackResult.getHitPatternCDC().getSLayerNHits(2 * iAx) > 3):
57# nHitAxSl += 1
58# for iSt in range(4):
59# if (trackResult.getHitPatternCDC().getSLayerNHits(2 * iSt + 1) > 3):
60# nHitStSl += 1
61# if nHitStSl < 3:
62# enoughHits = False
63# if nHitAxSl < 4:
64# enoughHits = False
65#
66# is2D = False
67# for iClk, data in enumerate(TRGGRLT3DUnpackerStores):
68# if (data.m_t2d_fnf != 0):
69# is2D = True
70#
71# self.return_value(isTwoTrack and is2D and areTracksClean and enoughHits)
72
73
74if __name__ == '__main__':
75
76 basf2.use_central_database("development")
77# Hot fix for CDCFudgeFactorFromSigma
78 basf2.use_local_database(ROOT.Belle2.FileSystem.findFile("data/trg/cdc/db_CDCFudgeFactorsForSigma.txt"), "localdb")
79
80 empty_path = basf2.create_path()
81# skim = basf2.register_module(is2DSkim())
82# skim.if_value('=0', empty_path, basf2.AfterConditionPath.END)
83
84 # Create main path
85 main = basf2.create_path()
86 # Add modules to main path
87 main.add_module('RootInput', inputFileName=inname)
88# main.add_module('SeqRootInput', inputFileName=inname)
89
90 nmod = [0, 1, 2, 3]
91 for mod in nmod:
92 main.add_module('TRGCDCT3DUnpacker', T3DMOD=mod)
93
94 main.add_module('Gearbox')
95
96 for mod in nmod:
97 # main.add_module(skim)
98 main.add_module('TRGCDCT3DConverter',
99 hitCollectionName='FirmCDCTriggerSegmentHits' + str(mod),
100 addTSToDatastore=True,
101 EventTimeName='FirmBinnedEventT0' + str(mod),
102 addEventTimeToDatastore=True,
103 inputCollectionName='FirmTRGCDC2DFinderTracks' + str(mod),
104 add2DFinderToDatastore=True,
105 outputCollectionName='FirmTRGCDC3DFitterTracks' + str(mod),
106 add3DToDatastore=True,
107 fit3DWithTSIM=0,
108 firmwareResultCollectionName='TRGCDCT3DUnpackerStore' + str(mod),
109 isVerbose=0)
110
111 for mod in nmod:
112 main.add_module('TRGCDCT3DDQM', postScriptName=histname, T3DMOD=mod)
113
114 main.add_module('HistoManager', histoFileName=histname)
115
116 # Process all events
117 basf2.process(main)
118 print(basf2.statistics)