Belle II Software  release-05-01-25
trainRealisticAxialSegmentPairFilter.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 import os
5 import sys
6 import os.path
7 
8 from tracking.run.event_generation import ReadOrGenerateEventsRun
9 from trackfindingcdc.run.training import TrainingRunMixin
10 
11 
13  """Run to record segment pairs encountered at the AxialSegmentPairCreator and retrain its mva method"""
14 
15  n_events = 10000
16 
17  generator_module = "generic"
18 
19  bkg_files = os.path.join(os.environ["VO_BELLE2_SW_DIR"], "bkg")
20 
21 
22  truth = "truth_positive"
23 
24  @property
25  def identifier(self):
26  """Database identifier of the filter being trained"""
27  return "trackfindingcdc_RealisticAxialSegmentPairFilter.xml"
28 
29  def create_path(self):
30  """Setup the recording path after the simulation"""
31  path = super().create_path()
32 
33  # In contrast to other training use only the first *half* loop for more aggressive training
34  path.add_module("TFCDC_WireHitPreparer",
35  flightTimeEstimation="outwards")
36 
37  path.add_module('TFCDC_ClusterPreparer',
38  SuperClusterDegree=3,
39  SuperClusterExpandOverApogeeGap=True)
40 
41  path.add_module("TFCDC_SegmentFinderFacetAutomaton")
42 
43  # Also fix the segment orientation to outwards to make training additionally aggressive
44 
45  if self.task == "train":
46  varSets = [
47  "realistic",
48  "filter(truth)",
49  ]
50  skim = "feasible"
51 
52  elif self.task == "eval":
53  varSets = [
54  "filter(truth)",
55  "filter(realistic)",
56  "filter(feasible)",
57  "filter(simple)",
58  ]
59  skim = ""
60 
61  elif self.task == "explore":
62  varSets = [
63  "basic",
64  "fitless",
65  "hit_gap",
66  "fit",
67  # "filter(simple)",
68  # "filter(feasible)",
69  # "filter(realistic)",
70  "filter(truth)",
71  ]
72  skim = "feasible"
73 
74  else:
75  raise ValueError("Unknown task " + self.task)
76 
77  path.add_module("TFCDC_TrackFinderSegmentPairAutomaton",
78  SegmentPairAxialBridging=True,
79  AxialSegmentPairFilter="unionrecording",
80  AxialSegmentPairFilterParameters={
81  "rootFileName": self.sample_file_name,
82  "varSets": varSets,
83  "skim": skim,
84  },
85  SegmentPairFilter='none',
86  SegmentPairRelationFilter='none')
87 
88  return path
89 
90 
91 def main():
93  run.configure_and_execute_from_commandline()
94 
95 
96 if __name__ == "__main__":
97  import logging
98  logging.basicConfig(stream=sys.stdout, level=logging.INFO, format='%(levelname)s:%(message)s')
99  main()
trainRealisticAxialSegmentPairFilter.RealisticAxialSegmentPairFilterTrainingRun
Definition: trainRealisticAxialSegmentPairFilter.py:12
trainRealisticAxialSegmentPairFilter.RealisticAxialSegmentPairFilterTrainingRun.create_path
def create_path(self)
Definition: trainRealisticAxialSegmentPairFilter.py:29
tracking.run.event_generation.ReadOrGenerateEventsRun
Definition: event_generation.py:26
main
int main(int argc, char **argv)
Run all tests.
Definition: test_main.cc:77
trainRealisticAxialSegmentPairFilter.RealisticAxialSegmentPairFilterTrainingRun.task
task
Process each event according to the user's desired task (train, eval, explore)
Definition: trainRealisticAxialSegmentPairFilter.py:45
tracking.run.event_generation
Definition: event_generation.py:1
trainRealisticAxialSegmentPairFilter.RealisticAxialSegmentPairFilterTrainingRun.identifier
def identifier(self)
Definition: trainRealisticAxialSegmentPairFilter.py:25