ATLAS Offline Software
LArMissingFebsDBAlg.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 from AthenaConfiguration.ComponentFactory import CompFactory
3 from AthenaCommon.Logging import logging
4 
5 
6 def LArBadFebDBAlgCfg(flags,InputFile,dbname="LAR_OFL",folder=None,tag=None,
7  IOVStart=[0,0],IOVEnd=[0x7FFFFFFF,0xFFFFFFFF]):
8 
9  logger = logging.getLogger( "LArBadFebDBAlgCfg" )
10  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
11  result=LArGMCfg(flags)
12 
13  from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg
14  result.merge(LArOnOffIdMappingCfg(flags))
15 
16  if folder is None:
17  if dbname == "LAR_ONL":
18  folder="/LAR/BadChannels/KnownBADFEBs"
19  else:
20  folder="/LAR/BadChannelsOfl/KnownBADFEBs"
21 
22  if tag is not None:
23  if not tag.startswith("LAR"):
24  if not tag.startswith("-"): tag= "-"+tag
25  tag="".join(folder.split("/"))+tag
26 
27  print("Tag=",tag)
28 
29 
30  logger.info("Writing to folder %s, tag %s",folder,tag)
31  result.addCondAlgo(CompFactory.LArBadFebCondAlg("LArKnownBadFebAlg",ReadKey="",InputFileName=InputFile,WriteKey="LArBadFeb"))
32 
33  #Thats the registration algo
34  theLArDBAlg=CompFactory.LArBadChannelDBAlg()
35  theLArDBAlg.WritingMode = 1
36  theLArDBAlg.FEBFolder=folder
37  result.addEventAlgo(theLArDBAlg)
38 
39  from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg
40  result.merge(OutputConditionsAlgCfg(flags,"dummy.pool.root",
41  ObjectList=["AthenaAttributeList#"+folder],
42  IOVTagList=[tag],
43  Run1=IOVStart[0],LB1=IOVStart[1],
44  Run2=IOVEnd[0],LB2=IOVEnd[1]))
45 
46  return result
47 
48 
49 if __name__=="__main__":
50  import sys,argparse
51  parser= argparse.ArgumentParser()
52  parser.add_argument("inputfile")
53  parser.add_argument("--loglevel", default=None, help="logging level (ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, or FATAL")
54  parser.add_argument("-r","--runnumber",default=0, type=int, help="IOV start (runnumber)")
55  parser.add_argument("-l","--lbnumber",default=0, type=int, help="IOV start (LB number)")
56  parser.add_argument("--runnumber2",default=0x7FFFFFFF, type=int, help="IOV start (runnumber)")
57  parser.add_argument("--lbnumber2",default=0xFFFFFFFF, type=int, help="IOV start (LB number)")
58  parser.add_argument("-o","--output",default="BadFebs.db", help="sqlite output file name")
59  parser.add_argument("-f","--folder",default=None, help="database folder to create")
60  parser.add_argument("-t","--tag",default=None, help="folder-level tag (or tag-suffix) to create")
61  parser.add_argument("--MC", action='store_true', default=False, help="Work on MC DB")
62 
63 
64  (args,leftover)=parser.parse_known_args(sys.argv[1:])
65 
66  if len(leftover)>0:
67  print("ERROR, unhandled argument(s):",leftover)
68  sys.exit(-1)
69 
70  from AthenaConfiguration.AllConfigFlags import initConfigFlags
71  from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
73  addLArCalibFlags(flags)
74 
75  flags.Input.isMC = args.MC
76  flags.IOVDb.DatabaseInstance="OFLP200" if args.MC else "CONDBR2"
77  flags.LAr.doAlign=False
78  flags.Input.RunNumbers=[args.runnumber if args.runnumber>0 else 300000]
79  flags.IOVDb.GlobalTag="OFLCOND-MC21-SDR-RUN3-11" if args.MC else "CONDBR2-ES1PA-2023-02"
80  if args.MC:
81  from Campaigns.Utils import Campaign
82  flags.Input.MCCampaign = Campaign.MC21a
83  from AthenaConfiguration.TestDefaults import defaultGeometryTags
84  flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
85 
86  flags.IOVDb.DBConnection="sqlite://;schema="+args.output+";dbname="+flags.IOVDb.DatabaseInstance
87 
88  if args.loglevel:
89  from AthenaCommon import Constants
90  if hasattr(Constants,args.loglevel):
91  flags.Exec.OutputLevel=getattr(Constants,args.loglevel)
92  else:
93  raise ValueError("Unknown log-level, allowed values are ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, FATAL")
94 
95  flags.lock()
96 
97  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
98  cfg=MainServicesCfg(flags)
99  #MC Event selector since we have no input data file
100  from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
101  cfg.merge(McEventSelectorCfg(flags,
102  FirstLB=args.lbnumber,
103  EventsPerRun = 1,
104  FirstEvent = 1,
105  InitialTimeStamp = 0,
106  TimeStampInterval = 1))
107 
108  cfg.merge(LArBadFebDBAlgCfg(flags,
109  args.inputfile,
110  folder=args.folder,
111  tag=args.tag,
112  IOVStart=[args.runnumber,args.lbnumber],
113  IOVEnd=[args.runnumber2,args.lbnumber2]
114  ))
115 
116 
117 
118  sc=cfg.run(1)
119  if sc.isSuccess():
120  sys.exit(0)
121  else:
122  sys.exit(1)
OutputConditionsAlgConfig.OutputConditionsAlgCfg
def OutputConditionsAlgCfg(flags, name="OutputConditionsAlg", outputFile='condobjs.root', **kwargs)
Definition: OutputConditionsAlgConfig.py:5
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
python.McEventSelectorConfig.McEventSelectorCfg
def McEventSelectorCfg(flags, **kwargs)
Definition: McEventSelectorConfig.py:5
LArCablingConfig.LArOnOffIdMappingCfg
def LArOnOffIdMappingCfg(configFlags)
Definition: LArCablingConfig.py:62
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.LArCalibConfigFlags.addLArCalibFlags
def addLArCalibFlags(flags, isSC=False)
Definition: LArCalibConfigFlags.py:3
python.LArMissingFebsDBAlg.LArBadFebDBAlgCfg
def LArBadFebDBAlgCfg(flags, InputFile, dbname="LAR_OFL", folder=None, tag=None, IOVStart=[0, 0], IOVEnd=[0x7FFFFFFF, 0xFFFFFFFF])
Definition: LArMissingFebsDBAlg.py:6