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