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