Belle II Software  release-05-01-25
cdc_peelers.py
1 import functools
2 
3 import tracking.harvest.peelers as peelers
4 from tracking.validation.utilities import prob
5 
6 
7 @peelers.format_crop_keys
8 def peel_segment2d(segment, key="{part_name}"):
9  superlayer_id = segment.getISuperLayer()
10  size = segment.size()
11  supercluster_id = segment.getISuperCluster()
12 
13  trajectory2d = segment.getTrajectory2D()
14  trajectory2d_crops = peel_trajectory2d(trajectory2d, key="{part_name}")
15 
16  crops = dict(
17  size=size,
18  superlayer_id=superlayer_id,
19  supercluster_id=supercluster_id,
20  stereo_kind=segment.getStereoKind(),
21  )
22 
23  crops.update(trajectory2d_crops)
24  return crops
25 
26 
27 @peelers.format_crop_keys
28 def peel_trajectory2d(trajectory2d, key="{part_name}"):
29  chi2 = trajectory2d.getChi2()
30  ndf = trajectory2d.getNDF()
31  is_fitted = trajectory2d.isFitted()
32 
33  i_curv = 0
34  curvature_estimate = trajectory2d.getCurvature()
35  curvature_variance = trajectory2d.getLocalVariance(i_curv)
36 
37  return dict(
38  chi2=chi2,
39  ndf=ndf,
40  is_fitted=is_fitted,
41  p_value=prob(chi2, ndf),
42  curvature_estimate=curvature_estimate,
43  curvature_variance=curvature_variance,
44  )
45 
46 
47 @peelers.format_crop_keys
48 def peel_trajectory3d(trajectory3d, key="{part_name}"):
49  i_curv = 0
50  i_tan_lambda = 3
51 
52  curvature_estimate = trajectory3d.getCurvatureXY()
53  curvature_variance = trajectory3d.getLocalVariance(i_curv)
54 
55  tan_lambda_estimate = trajectory3d.getTanLambda()
56  tan_lambda_variance = trajectory3d.getLocalVariance(i_tan_lambda)
57 
58  chi2 = trajectory3d.getChi2()
59  ndf = trajectory3d.getNDF()
60 
61  return dict(
62  chi2=chi2,
63  ndf=ndf,
64  p_value=prob(chi2, ndf),
65  curvature_estimate=curvature_estimate,
66  curvature_variance=curvature_variance,
67  tan_lambda_estimate=tan_lambda_estimate,
68  tan_lambda_variance=tan_lambda_variance,
69  )
70 
71 
72 @peelers.format_crop_keys
73 def peel_segment_pair(segment_pair, key="{part_name}"):
74  from_segment = segment_pair.getFromSegment()
75  to_segment = segment_pair.getToSegment()
76 
77  from_segment_crops = peel_segment2d(from_segment, key="from_{part_name}")
78  to_segment_crops = peel_segment2d(to_segment, key="to_{part_name}")
79 
80  sorted_superlayer_ids = sorted([from_segment_crops["from_superlayer_id"],
81  to_segment_crops["to_superlayer_id"]])
82 
83  superlayer_id_pair = 10.0 * sorted_superlayer_ids[1] + sorted_superlayer_ids[0]
84 
85  trajectory3d = segment_pair.getTrajectory3D()
86  trajectory3d_crops = peel_trajectory3d(trajectory3d, key="{part_name}")
87 
88  crops = dict(
89  superlayer_id_pair=superlayer_id_pair
90  )
91 
92  crops.update(from_segment_crops)
93  crops.update(to_segment_crops)
94  crops.update(trajectory3d_crops)
95 
96  return crops
tracking.harvest.peelers
Definition: peelers.py:1
tracking.validation.utilities
Definition: utilities.py:1