Belle II Software  release-06-01-15
generateTrueLRTable.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 import basf2
13 import os
14 import glob
15 from ROOT import gROOT, Belle2
16 gROOT.ProcessLine("gErrorIgnoreLevel = 4000;") # ignore endless root errors for background files...
17 
18 """
19 Run the Track Segment Finder and save a table of true left/right for each hit pattern.
20 This table can be used to create the left/right LUT (see createTSLUT.py),
21 or to evaluate it (see evaluateTSLUT.py).
22 """
23 
24 # ------------ #
25 # user options #
26 # ------------ #
27 
28 # general options
29 seed = 1
30 evtnum = 100000
31 clock = False
32 backgroundLevel = 0.
33 bkgdir = '/sw/belle2/bkg/'
34 particlegun_params = {
35  'pdgCodes': [-13, 13],
36  'nTracks': 1,
37  'momentumGeneration': 'inversePt',
38  'momentumParams': [0.27, 7.2], # no curling tracks
39  'thetaGeneration': 'uniformCos',
40  'thetaParams': [35, 123], # hit all super layers
41  'phiGeneration': 'uniform',
42  'phiParams': [0, 360],
43  'vertexGeneration': 'fixed',
44  'xVertexParams': [0.],
45  'yVertexParams': [0.],
46  'zVertexParams': [0.]}
47 # filenames for the generates tables
48 # including the seed in the filename allows to combine several runs later
49 innerFilename = 'innerTrueLRTable_Bkg%.1f_%d.dat' % (backgroundLevel, seed)
50 outerFilename = 'outerTrueLRTable_Bkg%.1f_%d.dat' % (backgroundLevel, seed)
51 
52 # ------------------------- #
53 # create path up to trigger #
54 # ------------------------- #
55 
56 # set random seed
57 basf2.set_random_seed(seed)
58 # suppress messages and warnings during processing:
59 basf2.set_log_level(basf2.LogLevel.ERROR)
60 
61 main = basf2.create_path()
62 
63 main.add_module('EventInfoSetter', evtNumList=evtnum)
64 main.add_module('Progress')
65 main.add_module('Gearbox')
66 main.add_module('Geometry', components=['CDC',
67  'MagneticFieldConstant4LimitedRCDC'])
68 particlegun = basf2.register_module('ParticleGun')
69 particlegun.param(particlegun_params)
70 main.add_module(particlegun)
71 main.add_module('FullSim')
72 if backgroundLevel > 0:
73  bkgmixer = basf2.register_module('BeamBkgMixer')
74  bkgfiles = glob.glob(os.path.join(bkgdir, '*[!(PXD)(ECL)]??.root'))
75  bkgmixer.param('backgroundFiles', bkgfiles)
76  bkgmixer.param('components', ['CDC'])
77  bkgmixer.param('overallScaleFactor', backgroundLevel)
78  main.add_module(bkgmixer)
79 cdcdigitizer = basf2.register_module('CDCDigitizer')
80 if clock:
81  cdcdigitizer.param('TrigTimeJitter', 32.)
82 main.add_module(cdcdigitizer)
83 
84 tsf = basf2.register_module('CDCTriggerTSF')
85 tsf_params = {
86  'InnerTSLUTFile': Belle2.FileSystem.findFile("data/trg/cdc/innerLUT_v3.0.coe"),
87  'OuterTSLUTFile': Belle2.FileSystem.findFile("data/trg/cdc/outerLUT_v3.0.coe"),
88  'ClockSimulation': clock,
89  'makeTrueLRTable': True,
90  'innerTrueLRTableFilename': innerFilename,
91  'outerTrueLRTableFilename': outerFilename}
92 tsf.param(tsf_params)
93 if clock:
94  tsf.param('CDCHitCollectionName', 'CDCHits4Trg')
95 main.add_module(tsf)
96 
97 # Process events
98 basf2.process(main)
99 
100 # Print call statistics
101 print(basf2.statistics)
static std::string findFile(const std::string &path, bool silent=false)
Search for given file or directory in local or central release directory, and return absolute path if...
Definition: FileSystem.cc:145