diff --git a/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalib_PhysWavePredictionConfig.py b/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalib_PhysWavePredictionConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..750df4e11e7de3688ed0be86d2de63ed70b4a4bf --- /dev/null +++ b/LArCalorimeter/LArExample/LArCalibProcessing/python/LArCalib_PhysWavePredictionConfig.py @@ -0,0 +1,150 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.MainServicesConfig import MainServicesCfg + +def LArPhysWavePredictionCfg(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() + CaliWaveTag=rs.getFolderTag(flags.LArCalib.CaliWave.Folder) + DetCellParamsTag=rs.getFolderTag(flags.LArCalib.DetCellParams.Folder) + CaliPulseParamsTag=rs.getFolderTag(flags.LArCalib.CaliPulseParams.Folder) + MphysOverMcalTag=rs.getFolderTag(flags.LArCalib.MPhysOverMCal.Folder) + PhysWaveTag=rs.getFolderTag(flags.LArCalib.PhysWave.Folder) + del rs #Close database + + #Retrieve inputs + from IOVDbSvc.IOVDbSvcConfig import addFolders + result.merge(addFolders(flags,flags.LArCalib.CaliWave.Folder,detDb=flags.LArCalib.Input.Database, tag=CaliWaveTag)) + result.merge(addFolders(flags,flags.LArCalib.CaliPulseParams.Folder,detDb=flags.LArCalib.Input.Database, tag=CaliPulseParamsTag)) + result.merge(addFolders(flags,flags.LArCalib.DetCellParams.Folder,detDb=flags.LArCalib.Input.Database, tag=DetCellParamsTag)) + result.merge(addFolders(flags,"/LAR/ElecCalibOfl/Tdrift/Computed",detDb="LAR_OFL",tag="LARElecCalibOflTdriftComputed-calib-03")) + + + if flags.LArCalib.Input.SubDet == "HEC": + result.merge(addFolders(flags,"/LAR/ElecCalibOfl/PhysWaves/HECIdeal",detDb="LAR_OFL",db="COMP200",tag="LARElecCalibOflPhysWavesHECIdeal-calib-02")) + + + LArPhysWavePredictor = CompFactory.LArPhysWavePredictor( "LArPhysWavePredictor" ) + LArPhysWavePredictor.ProblemsToMask= ["deadCalib","deadReadout","deadPhys","almostDead","short"] + LArPhysWavePredictor.TestMode = False + LArPhysWavePredictor.isSC = flags.LArCalib.isSC + LArPhysWavePredictor.KeyCaliList = [ "LArCaliWave" ] + LArPhysWavePredictor.UseCaliPulseParamsFromJO = False + LArPhysWavePredictor.UseDetCellParamsFromJO = False + LArPhysWavePredictor.UseTdriftFromJO = False + #LArPhysWavePredictor.Tdrift = TdriftVector + LArPhysWavePredictor.UseDoubleTriangle = False + #LArPhysWavePredictor.Tdrift2 = TdriftVector2 + #LArPhysWavePredictor.WeightTriangle2 = TdriftWeight2 + LArPhysWavePredictor.UseTimeShiftFromJO = True + LArPhysWavePredictor.GroupingType = flags.LArCalib.GroupingType + LArPhysWavePredictor.NormalizeCali = flags.LArCalib.Input.SubDet != "HEC" + LArPhysWavePredictor.KeyMphysMcali = "LArMphysOverMcal" + LArPhysWavePredictor.DumpMphysMcali = False # set to True to dump on a ASCII file + LArPhysWavePredictor.KeyPhys = "LArPhysWave" + LArPhysWavePredictor.isHEC = flags.LArCalib.Input.SubDet == "HEC" + + result.addEventAlgo(LArPhysWavePredictor) + + if (flags.LArCalib.Input.SubDet == "HEC"): + LArPhysWaveHECTool=CompFactory.LArPhysWaveHECTool() + LArPhysWaveHECTool.NormalizeCali = False + LArPhysWaveHECTool.TimeOriginShift = False + LArPhysWaveHECTool.SubtractBaseline = False + result.addPublicTool(LArPhysWaveHECTool) + + + else: #not HEC but EM: + LArPhysWaveTool=CompFactory.LArPhysWaveTool() + LArPhysWaveTool.NormalizeCali = False # this is taken care by LArPhysWavePredictor + LArPhysWaveTool.TimeOriginShift = False + LArPhysWaveTool.SubtractBaseline = False + LArPhysWaveTool.InjPointCorrLayer = [ 1, 1, 1, 1 ] + LArPhysWaveTool.InjPointUseTauR = [ 1, 1, 1, 1 ] + result.addPublicTool(LArPhysWaveTool) + + + rootfile=flags.LArCalib.Output.ROOTFile + if rootfile != "": + LArPhysWaves2Ntuple = CompFactory.LArPhysWaves2Ntuple("LArPhysWaves2Ntuple") + LArPhysWaves2Ntuple.NtupleName = "PHYSWAVE" + LArPhysWaves2Ntuple.AddFEBTempInfo = False + LArPhysWaves2Ntuple.KeyList = [ "LArPhysWave" ] + LArPhysWaves2Ntuple.isSC = flags.LArCalib.isSC + result.addEventAlgo(LArPhysWaves2Ntuple) + + LArMphysOverMcal2Ntuple = CompFactory.LArMphysOverMcal2Ntuple( "LArMphysOverMcal2Ntuple" ) + LArMphysOverMcal2Ntuple.ContainerKey = "LArMphysOverMcal" + LArMphysOverMcal2Ntuple.AddFEBTempInfo = False + LArMphysOverMcal2Ntuple.isSC = flags.LArCalib.isSC + result.addEventAlgo(LArMphysOverMcal2Ntuple) + + 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=["LArPhysWaveContainer#LArPhysWave#"+flags.LArCalib.PhysWave.Folder, + "LArMphysOverMcalComplete#LArMphysOverMcal#"+flags.LArCalib.MPhysOverMCal.Folder,], + IOVTagList=[PhysWaveTag,MphysOverMcalTag] + )) + + #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="physwave.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(LArPhysWavePredictionCfg(ConfigFlags)) + + print("Start running...") + cfg.run(1)