Belle II Software  release-05-01-25
skim_utils.py
1 # !/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 
7 
8 
20 
21 import basf2
22 import ROOT
23 from ROOT import Belle2
24 from basf2 import *
25 
26 
27 class skimOutRNDTrgModule(basf2.Module):
28  """
29  returns True if the event is NOT a random triggered event
30  """
31 
32  def event(self):
33  """
34  check RawFTSW to get the event type
35  """
36 
37  rawFTSW = Belle2.PyStoreArray('RawFTSWs')
38 
39  if not rawFTSW.isValid():
40  B2WARNING('No RawFTSW available - event ignored')
41  self.return_value(0)
42 
43  return
44 
45  # unknown meaning of this number
46  unknownInt = 0
47  if rawFTSW[0].GetTRGType(unknownInt) != Belle2.TRGSummary.TTYP_RAND:
48  self.return_value(1)
49  else:
50  self.return_value(0)
51 
52 
53 class skimSVDBurstEventsModule(basf2.Module):
54  """
55  returns True if the event is a Burst event (number of strips > max number of strips)
56  use set_nMaxStrips(nMaxStrips) to set the max number of strips iof a non-burst event, default is nMaxStrips=5000
57  """
58 
59  def __init__(self):
60  """constructor"""
61 
62  super().__init__()
63 
64  self.nMaxStrips = 5000
65  '''max number of strips for NON-BURST events'''
66 
67  def set_nMaxStrips(self, user_nMaxStrips):
68  """set the max strips, otherwise 5000"""
69 
70  self.nMaxStrips = user_nMaxStrips
71 
72  def event(self):
73  '''event'''
74 
75  strips = Belle2.PyStoreArray('SVDShaperDigits')
76 
77  if not strips.isValid():
78  B2WARNING('No SVDShaperDigits - event ignored')
79  self.return_value(0)
80 
81  return
82 
83  if strips.getEntries() > self.nMaxStrips:
84  self.return_value(1)
85  else:
86  self.return_value(0)
87 
88 
89 class skim6SampleEventsPyModule(basf2.Module):
90  """
91  returns True if the event is acquired with 6 samples
92  """
93 
94  def __init__(self):
95  """constructor"""
96 
97  super().__init__()
98 
99  def event(self):
100  '''event'''
101 
102  # take SVDEventInfo or SVDvVentInfoSim
103  eventInfo = Belle2.PyStoreObj('SVDEventInfo')
104 
105  if not eventInfo.isValid():
106  eventInfo = Belle2.PyStoreObjPtr('SVDEventInfoSim')
107 
108  if not eventInfo.isValid():
109  B2WARNING('No SVDEventInfo/SVDEventInfoSim - event ignored')
110  self.return_value(0)
111 
112  return
113 
114  # check if we acquired 6-sample strips in this event
115  if eventInfo.getNSamples() == 6:
116  self.return_value(1)
117  else:
118  self.return_value(0)
119 
120 
121 """
122 class skimSVDBurstEventsDataSizeModule(basf2.Module):
123 
124  returns True if the event is a Burst event (svd data size above limit))
125  use set_MaxDataSize(maxDataSize) to set the max data sieze of a non-burst event, default is maxDataSize=50kB
126 
127 
128  def __init__(self):
129 
130  super().__init__()
131  self.maxDataSize = 50000
132 
133  def set_maxDataSize(self,user_maxDataSize):
134  "set the max strips, otherwise 5000"
135 
136  self.maxDataSize = user_maxDataSize
137 
138  def event(self):
139 
140  raw = Belle2.PyStoreArray('RawSVDs')
141 
142  if not raw.isValid():
143  B2WARNING('No RawSVDs - event ignored')
144  self.return_value(0)
145 
146  return
147 
148  StoreArray<RawSVD> rawsvd;
149  int nsvd = rawsvd.getEntries();
150  int svdsize = 0;
151  for (int i = 0; i < nsvd; i++) { // Loop over COPPERs
152  int nbytes = rawsvd[i]->GetBlockNwords(0) * sizeof(unsigned int);
153  svdsize += nbytes;
154  }
155 
156  svdSize = 0
157 
158  for aRaw in raw:
159  svdSize+=aRaw.GetBlockNWords(0)*sizeof(unsigned int)
160  if raw.getEntries() > self.maxDataSize:
161  self.return_value(1)
162  else:
163  self.return_value(0)
164 """
165 
166 
167 class skimSVDTriggerBinEventsModule(basf2.Module):
168  """
169  returns True if TriggerBin of the event is the selected one
170  use set_tb(tb) to set the value of the selected TriggerBin (0,1,2,3)
171  """
172 
173  def __init__(self):
174  """constructor"""
175 
176  super().__init__()
177  self.tb = 99 # no selection of TB
178  ''' trigger bin to select'''
179 
180  def set_tb(self, user_tb):
181  '''set the trigger bin, otherwise 99, i.e. no selection'''
182 
183  self.tb = user_tb
184 
185  def event(self):
186  '''event'''
187 
188  if int(self.tb) == 99:
189  self.return_value(1)
190 
191  eventInfo = Belle2.PyStoreObj('SVDEventInfo')
192 
193  if not eventInfo.isValid():
194  B2ERROR('No SVDEventInfo - event ignored')
195  self.return_value(0)
196 
197  return
198 
199  if ord(eventInfo.getModeByte().getTriggerBin()) == int(self.tb):
200  self.return_value(1)
201  else:
202  self.return_value(0)
svd.skim_utils.skimSVDBurstEventsModule
Definition: skim_utils.py:53
svd.skim_utils.skimSVDBurstEventsModule.set_nMaxStrips
def set_nMaxStrips(self, user_nMaxStrips)
Definition: skim_utils.py:67
svd.skim_utils.skimSVDTriggerBinEventsModule.__init__
def __init__(self)
Definition: skim_utils.py:173
svd.skim_utils.skimSVDTriggerBinEventsModule.set_tb
def set_tb(self, user_tb)
Definition: skim_utils.py:180
svd.skim_utils.skim6SampleEventsPyModule.__init__
def __init__(self)
Definition: skim_utils.py:94
svd.skim_utils.skimOutRNDTrgModule.event
def event(self)
Definition: skim_utils.py:32
Belle2::PyStoreObj
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:69
svd.skim_utils.skimOutRNDTrgModule
Definition: skim_utils.py:27
svd.skim_utils.skimSVDTriggerBinEventsModule.event
def event(self)
Definition: skim_utils.py:185
svd.skim_utils.skimSVDBurstEventsModule.__init__
def __init__(self)
Definition: skim_utils.py:59
svd.skim_utils.skimSVDTriggerBinEventsModule
Definition: skim_utils.py:167
svd.skim_utils.skim6SampleEventsPyModule.event
def event(self)
Definition: skim_utils.py:99
svd.skim_utils.skimSVDBurstEventsModule.event
def event(self)
Definition: skim_utils.py:72
svd.skim_utils.skimSVDBurstEventsModule.nMaxStrips
nMaxStrips
Definition: skim_utils.py:64
Belle2::PyStoreArray
a (simplified) python wrapper for StoreArray.
Definition: PyStoreArray.h:58
svd.skim_utils.skimSVDTriggerBinEventsModule.tb
tb
Definition: skim_utils.py:177
svd.skim_utils.skim6SampleEventsPyModule
Definition: skim_utils.py:89