Belle II Software  release-06-02-00
collections.py
1 #!/usr/bin/env python3
2 
3 
10 from variables import utils
11 
12 
13 deltae_mbc = ["Mbc", "deltaE"]
14 
15 
16 kinematics = ['px', 'py', 'pz', 'pt', 'p', 'E']
17 
18 
19 cluster = [
20  'clusterKlId',
21  'clusterPulseShapeDiscriminationMVA',
22  'clusterHasPulseShapeDiscrimination',
23  'clusterNumberOfHadronDigits',
24  'clusterDeltaLTemp',
25  'minC2TDist',
26  'nECLClusterTrackMatches',
27  'clusterZernikeMVA',
28  'clusterReg',
29  'clusterAbsZernikeMoment40',
30  'clusterAbsZernikeMoment51',
31  'clusterBelleQuality',
32  'clusterClusterID',
33  'clusterConnectedRegionID',
34  'clusterE1E9',
35  'clusterE9E21',
36  'clusterE9E25',
37  'clusterEoP',
38  'clusterErrorE',
39  'clusterErrorPhi',
40  'clusterErrorTheta',
41  'clusterErrorTiming',
42  'clusterHighestE',
43  'clusterHasFailedErrorTiming',
44  'clusterHasFailedTiming',
45  'clusterHasNPhotons',
46  'clusterHasNeutralHadron',
47  'clusterLAT',
48  'clusterNHits',
49  'clusterPhi',
50  'clusterR',
51  'clusterSecondMoment',
52  'clusterTheta',
53  'clusterTiming',
54  'clusterTrackMatch',
55  'goodBelleGamma',
56 ]
57 
58 
59 event_level_cluster = [
60  'nECLOutOfTimeCrystals',
61  'nECLOutOfTimeCrystalsBWDEndcap',
62  'nECLOutOfTimeCrystalsBarrel',
63  'nECLOutOfTimeCrystalsFWDEndcap',
64  'nRejectedECLShowers',
65  'nRejectedECLShowersBWDEndcap',
66  'nRejectedECLShowersBarrel',
67  'nRejectedECLShowersFWDEndcap',
68 ]
69 
70 
71 cluster_average = [
72  'maxWeightedDistanceFromAverageECLTime',
73  'weightedAverageECLTime'
74 ]
75 
76 
77 klm_cluster = [
78  'klmClusterKlId',
79  'klmClusterTiming',
80  'klmClusterPositionX',
81  'klmClusterPositionY',
82  'klmClusterPositionZ',
83  'klmClusterInnermostLayer',
84  'klmClusterLayers',
85  'klmClusterEnergy',
86  'klmClusterMomentum',
87  'klmClusterIsBKLM',
88  'klmClusterIsEKLM',
89  'klmClusterIsForwardEKLM',
90  'klmClusterIsBackwardEKLM',
91  'klmClusterTheta',
92  'klmClusterPhi',
93  'nKLMClusterTrackMatches',
94  'nMatchedKLMClusters',
95 ]
96 
97 
98 dalitz_3body = [
99  'daughterInvM(0, 1)', # invariant mass of daughters 1 and 2
100  'daughterInvM(0, 2)', # invariant mass of daughters 1 and 3
101  'daughterInvM(1, 2)', # invariant mass of daughters 2 and 3
102 ]
103 
104 
105 track = ['dr', 'dx', 'dy', 'dz', 'd0', 'z0', 'pValue', 'ndf']
106 
107 
108 track_hits = ['nCDCHits', 'nPXDHits', 'nSVDHits', 'nVXDHits']
109 
110 
111 mc_truth = ['isSignal', 'mcErrors', 'mcPDG']
112 
113 
114 
115 mc_kinematics = ['mcE', 'mcP', 'mcPT', 'mcPX', 'mcPY', 'mcPZ', 'mcPhi']
116 
117 
118 mc_variables = [
119  'genMotherID',
120  'genMotherP',
121  'genMotherPDG',
122  'genParticleID',
123  'isCloneTrack',
124  'mcDecayVertexX',
125  'mcDecayVertexY',
126  'mcDecayVertexZ',
127  'mcDecayTime',
128  'mcE',
129  'mcErrors',
130  'mcInitial',
131  'mcP',
132  'mcPDG',
133  'mcPT',
134  'mcPX',
135  'mcPY',
136  'mcPZ',
137  'mcPhi',
138  'mcVirtual',
139  'nMCMatches',
140 ]
141 
142 
143 pid = ['kaonID', 'pionID', 'protonID', 'muonID', 'electronID', 'electronID_noTOP', 'deuteronID',
144  'binaryPID(211, 13)', 'binaryPID(211, 321)', 'binaryPID(211, 2212)', 'binaryPID(321, 2212)']
145 
146 
147 roe_multiplicities = [
148  'nROE_Charged()',
149  'nROE_Photons()',
150  'nROE_NeutralHadrons()'
151 ]
152 
153 
154 roe_kinematics = [
155  'roeE()',
156  'roeM()',
157  'roeP()',
158  'roeMbc()',
159  'roeDeltae()'
160 ]
161 
162 
163 recoil_kinematics = [
164  'pRecoil',
165  'eRecoil',
166  'mRecoil',
167  'pRecoilPhi',
168  'pRecoilTheta',
169  'pxRecoil',
170  'pyRecoil',
171  'pzRecoil',
172 ]
173 
174 
175 flight_info = [
176  'flightTime',
177  'flightDistance',
178  'flightTimeErr',
179  'flightDistanceErr',
180 ]
181 
182 
183 mc_flight_info = ['mcFlightTime', 'mcFlightDistance']
184 
185 
186 vertex = [
187  'distance',
188  'significanceOfDistance',
189  'dx',
190  'dy',
191  'dz',
192  'x',
193  'y',
194  'z',
195  'x_uncertainty',
196  'y_uncertainty',
197  'z_uncertainty',
198  'dr',
199  'dphi',
200  'dcosTheta',
201  'prodVertexX',
202  'prodVertexY',
203  'prodVertexZ',
204  'prodVertexXErr',
205  'prodVertexYErr',
206  'prodVertexZErr',
207  'chiProb',
208 ]
209 
210 
211 mc_vertex = [
212  'mcDecayVertexX',
213  'mcDecayVertexY',
214  'mcDecayVertexZ',
215  'mcDecayVertexFromIPDistance',
216  'mcDecayVertexRho',
217  'mcProductionVertexX',
218  'mcProductionVertexY',
219  'mcProductionVertexZ'
220 ]
221 
222 
223 tag_vertex = [
224  'DeltaT',
225  'DeltaTErr',
226  'DeltaZ',
227  'DeltaZErr',
228  'DeltaBoost',
229  'DeltaBoostErr',
230  'TagVLBoost',
231  'TagVLBoostErr',
232  'TagVOBoost',
233  'TagVOBoostErr',
234  'TagVpVal',
235  'TagVNDF',
236  'TagVChi2',
237  'TagVChi2IP',
238  'TagVx',
239  'TagVxErr',
240  'TagVy',
241  'TagVyErr',
242  'TagVz',
243  'TagVzErr',
244 ]
245 
246 
247 mc_tag_vertex = [
248  'mcDeltaTau',
249  'mcDeltaT',
250  'mcDeltaBoost',
251  'mcTagVLBoost',
252  'mcTagVOBoost',
253  'mcLBoost',
254  'mcOBoost',
255  'mcTagVx',
256  'mcTagVy',
257  'mcTagVz',
258 ]
259 
260 
261 momentum_uncertainty = [
262  'E_uncertainty',
263  'pxErr',
264  'pyErr',
265  'pzErr',
266 ]
267 
268 
269 reco_stats = [
270  'nTracks',
271 ]
272 
273 
274 inv_mass = ['M', 'ErrM', 'SigM', 'InvM']
275 
276 
277 extra_energy = ["roeEextra()"]
278 
279 
280 event_level_tracking = [
281  "nExtraCDCHits",
282  "nExtraCDCHitsPostCleaning",
283  "hasExtraCDCHitsInLayer(0)",
284  "hasExtraCDCHitsInLayer(1)",
285  "hasExtraCDCHitsInLayer(2)",
286  "hasExtraCDCHitsInLayer(3)",
287  "hasExtraCDCHitsInLayer(4)",
288  "hasExtraCDCHitsInLayer(5)",
289  "hasExtraCDCHitsInLayer(6)",
290  "hasExtraCDCHitsInLayer(7)",
291  "nExtraCDCSegments",
292  "trackFindingFailureFlag",
293 ]
294 
295 
296 event_shape = [
297  "foxWolframR1",
298  "foxWolframR2",
299  "foxWolframR3",
300  "foxWolframR4",
301  "harmonicMomentThrust0",
302  "harmonicMomentThrust1",
303  "harmonicMomentThrust2",
304  "harmonicMomentThrust3",
305  "harmonicMomentThrust4",
306  "cleoConeThrust0",
307  "cleoConeThrust1",
308  "cleoConeThrust2",
309  "cleoConeThrust3",
310  "cleoConeThrust4",
311  "cleoConeThrust5",
312  "cleoConeThrust6",
313  "cleoConeThrust7",
314  "cleoConeThrust8",
315  "sphericity",
316  "aplanarity",
317  "thrust",
318  "thrustAxisCosTheta",
319 ]
320 
321 
322 event_kinematics = [
323  "missingMomentumOfEvent",
324  "missingMomentumOfEvent_Px",
325  "missingMomentumOfEvent_Py",
326  "missingMomentumOfEvent_Pz",
327  "missingMomentumOfEvent_theta",
328  "missingMomentumOfEventCMS",
329  "missingMomentumOfEventCMS_Px",
330  "missingMomentumOfEventCMS_Py",
331  "missingMomentumOfEventCMS_Pz",
332  "missingMomentumOfEventCMS_theta",
333  "missingEnergyOfEventCMS",
334  "missingMass2OfEvent",
335  "visibleEnergyOfEventCMS",
336  "totalPhotonsEnergyOfEvent"
337 ]
338 
339 
340 mc_event_kinematics = [
341  'genMissingMass2OfEvent',
342  'genMissingEnergyOfEventCMS',
343  'genMissingMomentumOfEventCMS',
344  'genTotalPhotonsEnergyOfEvent',
345  'genVisibleEnergyOfEventCMS'
346 ]
347 
348 
349 belle_track_hit = [
350  "BelleFirstCDCHitX",
351  "BelleFirstCDCHitY",
352  "BelleFirstCDCHitZ",
353  "BelleLastCDCHitX",
354  "BelleLastCDCHitY",
355  "BelleLastCDCHitZ"
356 ]
357 
358 # now register all the variables declared in this file as collections
359 # TODO: this is still not optimal but better than before. Should we not just
360 # get rid of the collections in the manager?
361 for name, value in list(globals().items()):
362  if isinstance(value, list):
363  utils.add_collection(value, name)