From 7aa91943223a44bf81625b8314a17fe2ca0b60bc Mon Sep 17 00:00:00 2001 From: Walter Lampl <walter.lampl@cern.ch> Date: Mon, 27 Sep 2021 14:37:34 +0200 Subject: [PATCH] New style config of the RTM extraction jobs (LAr Electronic calibration) --- .../LArCalibUtils/LArRTMParamExtractor.h | 2 - .../src/LArRTMParamExtractor.cxx | 18 +- .../python/LArCalibConfigFlags.py | 16 +- .../python/LArCalib_RTMParamsConfig.py | 154 ++++++++++++++++++ .../share/LArCalib_RTMParams_jobOptions.py | 12 +- 5 files changed, 175 insertions(+), 27 deletions(-) create mode 100644 LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalib_RTMParamsConfig.py diff --git a/LArCalorimeter/LArCalibUtils/LArCalibUtils/LArRTMParamExtractor.h b/LArCalorimeter/LArCalibUtils/LArCalibUtils/LArRTMParamExtractor.h index d71e33114e83..04abb9bb8d92 100644 --- a/LArCalorimeter/LArCalibUtils/LArCalibUtils/LArRTMParamExtractor.h +++ b/LArCalorimeter/LArCalibUtils/LArCalibUtils/LArRTMParamExtractor.h @@ -72,11 +72,9 @@ class LArRTMParamExtractor : public AthAlgorithm std::string m_groupingType; // FT selection - bool m_FTselection; std::vector<int> m_FT; int m_PosNeg; // Slot selection - bool m_Slotselection; std::vector<int> m_Slot; // Calib line selection bool m_Calibselection; diff --git a/LArCalorimeter/LArCalibUtils/src/LArRTMParamExtractor.cxx b/LArCalorimeter/LArCalibUtils/src/LArRTMParamExtractor.cxx index 3150e057a28a..64fc3f31123d 100644 --- a/LArCalorimeter/LArCalibUtils/src/LArRTMParamExtractor.cxx +++ b/LArCalorimeter/LArCalibUtils/src/LArRTMParamExtractor.cxx @@ -30,7 +30,7 @@ LArRTMParamExtractor::LArRTMParamExtractor (const std::string& name, ISvcLocator { declareProperty("KeyList" ,m_keylist); declareProperty("TestMode" ,m_testmode = false); - declareProperty("IgnoreDACSelection", m_ignoreDACselection = false); + declareProperty("IgnoreDACSelection", m_ignoreDACselection = true); declareProperty("isSC", m_isSC = false); m_DAC.clear(); @@ -61,11 +61,9 @@ LArRTMParamExtractor::LArRTMParamExtractor (const std::string& name, ISvcLocator declareProperty("ResOscillKeyAfter", m_resOscillKeyAfter = "ResOscillAfter" ) ; declareProperty("GroupingType", m_groupingType); - declareProperty("FTSelection", m_FTselection = false); + declareProperty("FT", m_FT); declareProperty("PosNeg", m_PosNeg=0); - - declareProperty("SlotSelection", m_Slotselection = false); declareProperty("Slot", m_Slot); declareProperty("calibLineSelection", m_Calibselection = false); @@ -140,18 +138,14 @@ StatusCode LArRTMParamExtractor::initialize() { m_dumpResOscill = false ; } - if ( m_FTselection && !m_FT.size() ) - m_FTselection = false; - if ( m_FTselection ) { + if ( !m_FT.empty() ) { msg(MSG::INFO) << "FT selection enabled, will only process data from FT = [ "; for(unsigned i=0; i<m_FT.size()-1; ++i) msg() << m_FT[i] << ", "; ATH_MSG_INFO( m_FT[m_FT.size()-1] << " ] at PosNeg = " << m_PosNeg ); } - if ( m_Slotselection && !m_Slot.size() ) - m_Slotselection = false; - if ( m_Slotselection ) { + if ( !m_Slot.empty() ) { msg(MSG::INFO) << "Slot selection enabled, will only process data from Slot = [ "; for(unsigned i=0; i<m_Slot.size()-1; ++i) msg() << m_Slot[i] << ", "; @@ -393,7 +387,7 @@ StatusCode LArRTMParamExtractor::stop() } // FT selection - if ( m_FTselection ) { + if ( !m_FT.empty() ) { int PosNeg = onlineHelper->pos_neg(itVec.channelId()); int FT = onlineHelper->feedthrough(itVec.channelId()); std::vector<int>::const_iterator selectFT = std::find(m_FT.begin(),m_FT.end(),FT); @@ -409,7 +403,7 @@ StatusCode LArRTMParamExtractor::stop() } // Slot selection - if ( m_Slotselection ) { + if ( !m_Slot.empty() ) { int Slot = onlineHelper->slot(itVec.channelId()); std::vector<int>::const_iterator selectSlot = std::find(m_Slot.begin(),m_Slot.end(),Slot); if ( selectSlot==m_Slot.end() ) { diff --git a/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalibConfigFlags.py b/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalibConfigFlags.py index c937da2da63f..7c6d7dd7381f 100644 --- a/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalibConfigFlags.py +++ b/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalibConfigFlags.py @@ -21,11 +21,13 @@ def addLArCalibFlags(flags): flags.addFlag("LArCalib.PhysWave.Folder", lambda prevFlags: _prefix(prevFlags)+"PhysWaves/RTM") flags.addFlag("LArCalib.Ramp.Folder", lambda prevFlags: _prefix(prevFlags)+"Ramps/RampLinea") flags.addFlag("LArCalib.OFCPhys.Folder", lambda prevFlags: _prefix(prevFlags)+"OFC/PhysWave/RTM/") - flags.addFlag("LArCalib.LArShapeFolder", lambda prevFlags: _prefix(prevFlags)+"Shape/RTM/") - + flags.addFlag("LArCalib.LArShape.Folder", lambda prevFlags: _prefix(prevFlags)+"Shape/RTM/") flags.addFlag("LArCalib.MPhysOverMCal.Folder", lambda prevFlags: _prefix(prevFlags)+"MphysOverMcal/RTM") - + + flags.addFlag("LArCalib.CaliPulseParams.Folder", lambda prevFlags: _prefix(prevFlags)+"CaliPulseParams/RTM") + flags.addFlag("LArCalib.DetCellParams.Folder", lambda prevFlags: _prefix(prevFlags)+"DetCellParams/RTM") + flags.addFlag("LArCalib.GroupingType",lambda prevFlags: "SuperCells" if prevFlags.LArCalib.isSC else "ExtendedSubDetector") @@ -51,6 +53,14 @@ def addLArCalibFlags(flags): flags.addFlag("LArCalib.Preselection.Side",[]) flags.addFlag("LArCalib.Preselection.BEC",[]) flags.addFlag("LArCalib.Preselection.FT",[]) + flags.addFlag("LArCalib.Preselection.Slot",[]) + + + flags.addFlag("LArCalib.RTM.ExtractAll",True) # False = extract only tauR + flags.addFlag("LArCalib.RTM.DumpOmegaScan",False) + flags.addFlag("LArCalib.RTM.DumpResOscill",False) + + flags.addFlag("LArCalib.GlobalTag","LARCALIB-RUN2-00") diff --git a/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalib_RTMParamsConfig.py b/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalib_RTMParamsConfig.py new file mode 100644 index 000000000000..682c12637da2 --- /dev/null +++ b/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalib_RTMParamsConfig.py @@ -0,0 +1,154 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.MainServicesConfig import MainServicesCfg + +def LArRTMParamsCfg(flags): + + #Get basic services and cond-algos + from LArCalibProcessing.LArCalibBaseConfig import LArCalibBaseCfg + result=LArCalibBaseCfg(flags) + + from LArCalibProcessing.utils import FolderTagResolver + FolderTagResolver._globalTag=flags.LArCalib.GlobalTag + rs=FolderTagResolver() + DetCellParamsTag=rs.getFolderTag(flags.LArCalib.DetCellParams.Folder) + CaliPulseParamsTag=rs.getFolderTag(flags.LArCalib.CaliPulseParams.Folder) + CaliWaveTag=rs.getFolderTag(flags.LArCalib.CaliWave.Folder) + del rs #Close database + + #Retrieve CaliWave: + from IOVDbSvc.IOVDbSvcConfig import addFolders + result.merge(addFolders(flags,flags.LArCalib.CaliWave.Folder,detDb=flags.LArCalib.Input.Database, tag=CaliWaveTag)) + + if not flags.LArCalib.RTM.ExtractAll: + #Get information from database: + result.merge(addFolders(flags,flags.LArCalib.DetCellParams.Folder,detDb=flags.LArCalib.Input.Database, tag=DetCellParamsTag)) + result.merge(addFolders(flags,flags.LArCalib.CaliPulseParams.Folder,detDb=flags.LArCalib.Input.Database, tag=CaliPulseParamsTag)) + + + LArRTMParamExtractor = CompFactory.LArRTMParamExtractor() + + LArRTMParamExtractor.useTBB=True + + LArRTMParamExtractor.KeyList = ["LArCaliWave"] + LArRTMParamExtractor.TestMode = False + LArRTMParamExtractor.GroupingType = flags.LArCalib.GroupingType + LArRTMParamExtractor.IgnoreDACSelection = True + LArRTMParamExtractor.isSC = flags.LArCalib.isSC + + LArRTMParamExtractor.ExtractTaur = True + LArRTMParamExtractor.ExtractTcal = flags.LArCalib.RTM.ExtractAll + LArRTMParamExtractor.ExtractFstep = flags.LArCalib.RTM.ExtractAll + LArRTMParamExtractor.ExtractOmega0 = flags.LArCalib.RTM.ExtractAll + + LArRTMParamExtractor.FT = flags.LArCalib.Preselection.FT + LArRTMParamExtractor.PosNeg = 0 if len(flags.LArCalib.Preselection.Side)==0 else flags.LArCalib.Preselection.Side[0] + LArRTMParamExtractor.Slot = flags.LArCalib.Preselection.Slot + + LArRTMParamExtractor.DumpOmegaScan = flags.LArCalib.RTM.DumpOmegaScan + LArRTMParamExtractor.DumpResOscill = flags.LArCalib.RTM.DumpResOscill + + + theLArWFParamTool = CompFactory.LArWFParamTool() + theLArWFParamTool.isSC = flags.LArCalib.isSC + + theLArWFParamTool.UseOmegaScanHelper = True + theLArWFParamTool.CosRespScan = [ False , True , False , False ] # Strips only + theLArWFParamTool.Omega0Min = [ 0.100 , 0.220 , 0.060 , 0.100 ] + theLArWFParamTool.Omega0Max = [ 0.600 , 0.310 , 0.215 , 0.700 ] + theLArWFParamTool.NpointScan = [ 800 , 900 , 310 , 120 ] + theLArWFParamTool.StoreResOscill = [True * 4] if flags.LArCalib.RTM.DumpResOscill else [False *4] + + result.addPublicTool(theLArWFParamTool) + + result.addEventAlgo(LArRTMParamExtractor) + + rootfile=flags.LArCalib.Output.ROOTFile + if rootfile != "": + LArWFParams2Ntuple = CompFactory.LArWFParams2Ntuple("LArWFParams2Ntuple") + LArWFParams2Ntuple.DumpCaliPulseParams = True + LArWFParams2Ntuple.DumpDetCellParams = True + LArWFParams2Ntuple.CaliPulseParamsKey="LArCaliPulseParams_RTM" + LArWFParams2Ntuple.DetCellParamsKey="LArDetCellParams_RTM" + result.addEventAlgo(LArWFParams2Ntuple) + + if flags.LArCalib.RTM.DumpOmegaScan: + LArOmegaScans2Ntuple = CompFactory.LArCaliWaves2Ntuple("LArOmegaScans2Ntuple") + LArOmegaScans2Ntuple.NtupleName = "OMEGASCAN" + LArOmegaScans2Ntuple.KeyList = ["OmegaScan"] + result.addEventAlgo(LArOmegaScans2Ntuple) + + if ( flags.LArCalib.RTM.DumpResOscill ): + LArResOscillsBefore2Ntuple = CompFactory.LArCaliWaves2Ntuple("LArResOscillsBefore2Ntuple") + LArResOscillsBefore2Ntuple.NtupleName = "RESOSCILLBEFORE" + LArResOscillsBefore2Ntuple.KeyList = ["ResOscillBefore"] + result.addEventAlgo(LArResOscillsBefore2Ntuple) + + LArResOscillsAfter2Ntuple = CompFactory.LArCaliWaves2Ntuple("LArResOscillsAfter2Ntuple") + LArResOscillsAfter2Ntuple.NtupleName = "RESOSCILLAFTER" + LArResOscillsAfter2Ntuple.KeyList = ["ResOscillAfter"] + result.addEventAlgo(LArResOscillsAfter2Ntuple) + + import os + if os.path.exists(rootfile): + os.remove(rootfile) + result.addService(CompFactory.NTupleSvc(Output = [ "FILE1 DATAFILE='"+rootfile+"' OPT='NEW'" ])) + result.setAppProperty("HistogramPersistency","ROOT") + pass # end if ROOT ntuple writing + + + + from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg + result.merge(OutputConditionsAlgCfg(flags, + outputFile=flags.LArCalib.Output.POOLFile, + ObjectList=["LArCaliPulseParamsComplete#"+"LArCaliPulseParams_RTM#"+flags.LArCalib.CaliPulseParams.Folder, + "LArDetCellParamsComplete#"+"LArDetCellParams_RTM#"+flags.LArCalib.DetCellParams.Folder,], + IOVTagList=[CaliPulseParamsTag,DetCellParamsTag] + )) + + #RegistrationSvc + result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders = False)) + result.getService("IOVDbSvc").DBInstance="" + + + #MC Event selector since we have no input data file + mcCnvSvc = CompFactory.McCnvSvc() + cfg.addService(mcCnvSvc) + cfg.addService(CompFactory.EvtPersistencySvc("EventPersistencySvc",CnvServices=[mcCnvSvc.getFullJobOptName(),])) + eventSelector=CompFactory.McEventSelector("EventSelector", + RunNumber = flags.LArCalib.Input.RunNumbers[0], + EventsPerRun = 1, + FirstEvent = 0, + InitialTimeStamp = 0, + TimeStampInterval = 1 + ) + + result.addService(eventSelector) + return result + +if __name__ == "__main__": + + + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags + addLArCalibFlags(ConfigFlags) + + + + ConfigFlags.LArCalib.Input.RunNumbers=[401351,] + ConfigFlags.LArCalib.Input.Database="/home/wlampl/calibTest/00400939_00400943_00400945_Barrel-EMB-EMEC_HIGH_40_21.0.20_1/poolFiles/myDB200_00400939_00400943_00400945_EB-EMBA_one.db_Delay" + ConfigFlags.LArCalib.Input.SubDet="EM" + ConfigFlags.LArCalib.BadChannelDB="/home/wlampl/calibTest/00400939_00400943_00400945_Barrel-EMB-EMEC_HIGH_40_21.0.20_1/poolFiles/SnapshotBadChannel_00400939_00400943_00400945_EB-EMBA.db" + ConfigFlags.LArCalib.BadChannelTag="-RUN2-UPD3-00" + ConfigFlags.LArCalib.Output.ROOTFile="larparams.root" + ConfigFlags.IOVDb.DatabaseInstance="CONDBR2" + ConfigFlags.IOVDb.DBConnection="sqlite://;schema=output.sqlite;dbname=CONDDBR2" + ConfigFlags.IOVDb.GlobalTag="LARCALIB-RUN2-02" + #ConfigFlags.Exec.OutputLevel=1 + + cfg=MainServicesCfg(ConfigFlags) + cfg.merge(LArRTMParamsCfg(ConfigFlags)) + + print("Start running...") + cfg.run(1) diff --git a/LArCalorimeter/LArExample/LArCalibProcessing/share/LArCalib_RTMParams_jobOptions.py b/LArCalorimeter/LArExample/LArCalibProcessing/share/LArCalib_RTMParams_jobOptions.py index 7a9ac2630320..637a7a5a9654 100644 --- a/LArCalorimeter/LArExample/LArCalibProcessing/share/LArCalib_RTMParams_jobOptions.py +++ b/LArCalorimeter/LArExample/LArCalibProcessing/share/LArCalib_RTMParams_jobOptions.py @@ -245,20 +245,14 @@ if not 'StoreResOscill' in dir(): # FT/Slot selection # -if not 'FTSelection' in dir(): - FTSelection = False - if not 'PosNeg' in dir(): PosNeg = 0 if not 'FT' in dir(): - FT = [ 0 ] - -if not 'SlotSelection' in dir(): - SlotSelection = False + FT = [] if not 'Slot' in dir(): - Slot = [ 0 ] + Slot = [] # # Input wave type @@ -630,11 +624,9 @@ LArRTMParamExtractor.SuffixRetrievedDetCell = SuffixRetrievedDetCell LArRTMParamExtractor.SuffixExtractedCaliPulse = SuffixExtractedCaliPulse LArRTMParamExtractor.SuffixExtractedDetCell = SuffixExtractedDetCell -LArRTMParamExtractor.FTSelection = FTSelection LArRTMParamExtractor.FT = FT LArRTMParamExtractor.PosNeg = PosNeg -LArRTMParamExtractor.SlotSelection = SlotSelection LArRTMParamExtractor.Slot = Slot LArRTMParamExtractor.DumpOmegaScan = DumpOmegaScan -- GitLab