18def FPGATrackSimBinnedHitsToolCfg(flags):
19
20 result = ComponentAccumulator()
21 log.info("Setting binning parameters")
22
23
24
25
26 if flags.Trigger.FPGATrackSim.GenScan.initialLayerStudy:
27 cutset = {"rin": flags.Trigger.FPGATrackSim.GenScan.rin,
28 "rout": flags.Trigger.FPGATrackSim.GenScan.rout,
29 "parBins": flags.Trigger.FPGATrackSim.GenScan.parBins,
30 "parMin": flags.Trigger.FPGATrackSim.GenScan.parMin,
31 "parMax": flags.Trigger.FPGATrackSim.GenScan.parMax,
32 "parSet": flags.Trigger.FPGATrackSim.GenScan.parSet
33 }
34 log.info("Running initial layer study, taking FPGATrackSimBinning cuts from flags")
35 log.info(cutset)
36 elif flags.Trigger.FPGATrackSim.GenScan.layerStudyCutFile:
37 if flags.Trigger.FPGATrackSim.oldRegionDefs:
38 cutset = importlib.import_module(flags.Trigger.FPGATrackSim.GenScan.layerStudyCutFile).cuts[flags.Trigger.FPGATrackSim.region]
39 else:
40
41
42 relpath = os.path.join(flags.Trigger.FPGATrackSim.mapsDir, flags.Trigger.FPGATrackSim.GenScan.layerStudyCutFile + ".py")
43 abspath = unixtools.find_datafile(relpath, pathlist=os.getenv(
"CALIBPATH").
split(
":"))
44 spec=importlib.util.spec_from_file_location("FPGATrackSimGenScanCuts", abspath)
45 if spec is None:
46 log.fatal("Failed to load cuts file")
47 cutmodule = importlib.util.module_from_spec(spec)
48 spec.loader.exec_module(cutmodule)
49 cutset=cutmodule.cuts[flags.Trigger.FPGATrackSim.region]
50 log.info("Running layer study using configured cuts file")
51 log.info(cutset)
52 else:
53 log.fatal("Must either set initialLayerStudy=True or set layerStudyCutFile to the name of a cut file!")
54
55
56 BinnnedHits = CompFactory.FPGATrackSimBinnedHits("BinnedHits_LayerStudy")
57 BinnnedHits.OutputLevel=flags.Trigger.FPGATrackSim.loglevel
58 BinnnedHits.FPGATrackSimEventSelectionSvc = result.getPrimaryAndMerge(FPGATrackSimDataPrepConfig.FPGATrackSimEventSelectionSvcCfg(flags))
59
60
61 BinTool = CompFactory.FPGATrackSimBinTool("BinTool_LayerStudy")
62 BinTool.OutputLevel=flags.Trigger.FPGATrackSim.loglevel
63
64
65 binsteps=[]
66 BinDesc=None
67 if (cutset["parSet"]=="PhiSlicedKeyLyrPars"):
68 BinDesc = CompFactory.FPGATrackSimKeyLayerBinDesc("KeyLayerBinDescLayerStudy")
69 BinDesc.OutputLevel=flags.Trigger.FPGATrackSim.loglevel
70 BinDesc.rin=cutset["rin"]
71 BinDesc.rout=cutset["rout"]
72 phirange = FPGATrackSimDataPrepConfig.getPhiRange(flags)
73 if flags.Trigger.FPGATrackSim.GenScan.useLayerRadiiFile:
74 phicenter = (phirange[0]+phirange[1])/2.0
75 BinDesc.PhiOffset = -1.0*phicenter
76
77 BinDesc.region = flags.Trigger.FPGATrackSim.region
78
79
80 step1 = CompFactory.FPGATrackSimBinStep("PhiBinning")
81 step1.OutputLevel=flags.Trigger.FPGATrackSim.loglevel
82 step1.parBins = [1,1,cutset["parBins"][2],cutset["parBins"][3],cutset["parBins"][4]]
83 step2 = CompFactory.FPGATrackSimBinStep("FullBinning")
84 step2.OutputLevel=flags.Trigger.FPGATrackSim.loglevel
85 step2.parBins = cutset["parBins"]
86 binsteps = [step1,step2]
87 else:
88 log.fatal("Unknown Binning Setup: ",cutset["parSet"])
89
90 BinTool.BinDesc = BinDesc
91 BinTool.Steps = binsteps
92
93
94
95 BinTool.d0FractionalPadding =0.05
96 BinTool.z0FractionalPadding =0.05
97 BinTool.etaFractionalPadding =0.05
98 BinTool.phiFractionalPadding =0.05
99 BinTool.qOverPtFractionalPadding =0.05
100 BinTool.parMin = cutset["parMin"]
101 BinTool.parMax = cutset["parMax"]
102 BinnnedHits.BinTool = BinTool
103
104 result.setPrivateTools(BinnnedHits)
105
106 return result
107
std::vector< std::string > split(const std::string &s, const std::string &t=":")