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