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