diff --git a/MooreOnlineConf/options/alig_calib/ir_calib.py b/MooreOnlineConf/options/alig_calib/ir_calib.py new file mode 100644 index 0000000000000000000000000000000000000000..797db839581c68425bd03babb8e513e676430491 --- /dev/null +++ b/MooreOnlineConf/options/alig_calib/ir_calib.py @@ -0,0 +1,63 @@ +from Humboldt.options import global_align_config +from PyConf.Algorithms import BeamSpotMonitor, VertexListRefiner +from PyConf.application import make_odin +from MooreOnlineConf.utils import alignment_options +import os +from GaudiKernel.SystemOfUnits import mm +from RecoConf.legacy_rec_hlt1_tracking import (make_all_pvs, make_reco_pvs, + make_PatPV3DFuture_pvs, + make_VeloClusterTrackingSIMD) +import OnlineEnvBase as OnlineEnv + + +def configure_beamspotmon(alignment_config): + # set up input PVs as for BeamSpotMon + # some duplication, could be unified + if alignment_config.Odin is None: + alignment_config.Odin = make_odin() + + online_options = alignment_options(OnlineEnv) + utgid = os.environ["UTGID"] + if OnlineEnv.PartitionName == "LHCbA": + worker_id = utgid.split("_")[1] + else: + worker_id = utgid + + with make_VeloClusterTrackingSIMD.bind(SkipForward=4),\ + make_PatPV3DFuture_pvs.bind(velo_open=True, use_3D_seeding=True, use_beam_spot_cut=False),\ + make_reco_pvs.bind(make_pvs_from_velo_tracks=make_PatPV3DFuture_pvs): + pvs = make_all_pvs() + + selected_pvs = { + "v1": + VertexListRefiner( + InputLocation=pvs["v1"], + MinNumTracks=20, + MinX=-2.5 * mm, # Set to exclude material interactions + MaxX=2.5 * mm, + MinY=-2.5 * mm, + MaxY=2.5 * mm, + MinZ=-200 * mm, # Set to exclude PVs from SMOG cell + MaxZ=500 * mm).OutputLocation + } + + beamspot_bin_file = online_options.analyzer_output_path / f"beamspot-{worker_id}.json" + beamspot_moni = BeamSpotMonitor( + name="AlignBeamSpotMonitor", + ODINLocation=alignment_config.Odin, + PVContainer=selected_pvs["v1"], + MinPVsForCalib=1E9, # large nPVs to never trigger update + LogConditions=True, + MakeDBRunFile=False, # disable wriitng yaml file + conditionsDbPath="", + conditionsPathInDb="bla.yml", + HistPVXMin=-2. * mm, + HistPVXMax=2. * mm, + JsonFile=str(beamspot_bin_file), + OnlineMode=False # updates handled by AlignOnlineIterator + ) + return beamspot_moni + + +beamspot_moni = configure_beamspotmon(global_align_config) +global_align_config.MonitorAlgs.append(beamspot_moni) diff --git a/MooreOnlineConf/options/alig_calib/ir_calib_iterator.py b/MooreOnlineConf/options/alig_calib/ir_calib_iterator.py new file mode 100644 index 0000000000000000000000000000000000000000..a4ae2f0db25f377373ce64e30d8d1f27a46b5c61 --- /dev/null +++ b/MooreOnlineConf/options/alig_calib/ir_calib_iterator.py @@ -0,0 +1,15 @@ +from MooreOnlineConf.utils import alignment_options +import OnlineEnvBase as OnlineEnv +from Configurables import AlignOnlineIterator + +online_options = alignment_options(OnlineEnv) + +ir_input_files = [ + str(online_options.analyzer_output_path / f"beamspot-{node}.json") + for node in online_options.nodes +] + +iterator = AlignOnlineIterator() +special_inputs = {} +special_inputs["IRCalib"] = ir_input_files +iterator.SpecialInput = special_inputs diff --git a/MooreScripts/job/VeloHalf/runAnalyzer.sh b/MooreScripts/job/VeloHalf/runAnalyzer.sh index 679cf48650bc7f537cffaacd4394710cfa6a5541..cabc7caa8edcfab9044a2e40c120aabf0396cfff 100755 --- a/MooreScripts/job/VeloHalf/runAnalyzer.sh +++ b/MooreScripts/job/VeloHalf/runAnalyzer.sh @@ -38,9 +38,12 @@ fi echo "vp_options ${vp_options}" +# note that align_analyzer.py has to be at the end exec_gaudirun \ $MOOREONLINECONFROOT/options/verbosity.py \ $vp_options \ $MOOREONLINECONFROOT/options/align_options.py \ $HUMBOLDTROOT/options/AlignVPHalves_Analyzer.py \ + $MOOREONLINECONFROOT/options/alig_calib/ir_calib.py \ + $HUMBOLDTROOT/options/run_alignment.py \ $MOOREONLINECONFROOT/options/align_analyzer.py diff --git a/MooreScripts/job/VeloHalf/runIterator.sh b/MooreScripts/job/VeloHalf/runIterator.sh index 98f8a9ad4bb48d4f0d35a021ff2682f6867db3d8..b1c98d8b9cbe6a6ce16355f29d2a378b66a7843d 100755 --- a/MooreScripts/job/VeloHalf/runIterator.sh +++ b/MooreScripts/job/VeloHalf/runIterator.sh @@ -19,4 +19,5 @@ exec_gaudirun --application=Online::OnlineApplication \ $MOOREONLINECONFROOT/options/verbosity.py \ $MOOREONLINECONFROOT/options/align_options.py \ $HUMBOLDTROOT/options/AlignVPHalves_Iterator.py \ + $MOOREONLINECONFROOT/options/alig_calib/ir_calib_iterator.py \ $MOOREONLINECONFROOT/options/align_iterator.py diff --git a/MooreScripts/job/VeloRightHalf/runAnalyzer.sh b/MooreScripts/job/VeloRightHalf/runAnalyzer.sh index 67cd2beb300f1991732494dedcc799a7c2bbbaae..9e12fd2b82357a0163916021d0ceab1fdcc22d14 100755 --- a/MooreScripts/job/VeloRightHalf/runAnalyzer.sh +++ b/MooreScripts/job/VeloRightHalf/runAnalyzer.sh @@ -38,9 +38,12 @@ fi echo "vp_options ${vp_options}" +# note that align_analyzer.py has to be at the end exec_gaudirun \ $MOOREONLINECONFROOT/options/verbosity.py \ $vp_options \ $MOOREONLINECONFROOT/options/align_options.py \ $HUMBOLDTROOT/options/AlignVPRightHalf_Analyzer.py \ + $MOOREONLINECONFROOT/options/alig_calib/ir_calib.py \ + $HUMBOLDTROOT/options/run_alignment.py \ $MOOREONLINECONFROOT/options/align_analyzer.py diff --git a/MooreScripts/job/VeloRightHalf/runIterator.sh b/MooreScripts/job/VeloRightHalf/runIterator.sh index bb7fd9db40a23549468e976778a29996372d3246..d2aca5d31958683e354c7bf1730f73521c74adef 100755 --- a/MooreScripts/job/VeloRightHalf/runIterator.sh +++ b/MooreScripts/job/VeloRightHalf/runIterator.sh @@ -19,4 +19,5 @@ exec_gaudirun --application=Online::OnlineApplication \ $MOOREONLINECONFROOT/options/verbosity.py \ $MOOREONLINECONFROOT/options/align_options.py \ $HUMBOLDTROOT/options/AlignVPRightHalf_Iterator.py \ + $MOOREONLINECONFROOT/options/alig_calib/ir_calib_iterator.py \ $MOOREONLINECONFROOT/options/align_iterator.py