ATLAS Offline Software
LArBadChannelDBAlg.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 from AthenaConfiguration.ComponentFactory import CompFactory
3 from AthenaCommon.Logging import logging
4 
5 
6 def LArBadChannelDBAlgCfg(flags,InputFile,dbname="LAR_OFL",folder=None,tag=None,
7  IOVStart=[0,0],IOVEnd=[0x7FFFFFFF,0xFFFFFFFF]):
8 
9  logger = logging.getLogger( "LArBadChannelDBAlgCfg" )
10  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
11  result=LArGMCfg(flags)
12 
13  if flags.LArCalib.isSC:
14  #Setup SuperCell cabling
15  from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg
16  result.merge(LArOnOffIdMappingSCCfg(flags))
17  else:
18  #Setup regular cabling
19  from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg
20  result.merge(LArOnOffIdMappingCfg(flags))
21 
22 
23  if folder is None:
24  if dbname in ("LAR","LAR_ONL") or flags.Input.isMC:
25  folder="/LAR/BadChannels/BadChannels"
26  else:
27  folder="/LAR/BadChannelsOfl/BadChannels"
28 
29  if flags.LArCalib.isSC:
30  folder+="SC"
31 
32  if tag is None:
33  tag="".join(folder.split("/"))+"-RUN2-Bulk-00"
34 
35  if not tag.startswith("LAR"):
36  if not tag.startswith("-"): tag= "-"+tag
37  tag="".join(folder.split("/"))+tag
38 
39  logger.info("Writing to folder %s, tag %s",folder,tag)
40  theLArBadChannelCondAlgo=CompFactory.LArBadChannelCondAlg(ReadKey="",InputFileName=InputFile)
41  if flags.LArCalib.isSC:
42  theLArBadChannelCondAlgo.CablingKey="LArOnOffIdMapSC"
43  theLArBadChannelCondAlgo.isSC=True
44 
45  result.addCondAlgo(theLArBadChannelCondAlgo)
46 
47  #Thats the registration algo
48  theLArDBAlg=CompFactory.LArBadChannelDBAlg()
49  theLArDBAlg.WritingMode = 0
50  theLArDBAlg.DBFolder=folder
51  if flags.LArCalib.isSC:
52  theLArDBAlg.SuperCell=True
53  result.addEventAlgo(theLArDBAlg)
54 
55  from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg
56  result.merge(OutputConditionsAlgCfg(flags,"dummy.pool.root",
57  ObjectList=["CondAttrListCollection#"+folder],
58  IOVTagList=[tag],
59  Run1=IOVStart[0],LB1=IOVStart[1],
60  Run2=IOVEnd[0],LB2=IOVEnd[1]))
61 
62  return result
63 
64 
65 if __name__=="__main__":
66  import sys,argparse
67  parser= argparse.ArgumentParser()
68  parser.add_argument("inputfile")
69  parser.add_argument("--loglevel", default=None, help="logging level (ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, or FATAL")
70  parser.add_argument("-r","--runnumber",default=0, type=int, help="IOV start (runnumber)")
71  parser.add_argument("-l","--lbnumber",default=0, type=int, help="IOV start (LB number)")
72  parser.add_argument("--runnumber2",default=0x7FFFFFFF, type=int, help="IOV end (runnumber)")
73  parser.add_argument("--lbnumber2",default=0xFFFFFFFF, type=int, help="IOV end (LB number)")
74  parser.add_argument("-o","--output",default="BadChannels.db", help="sqlite output file name")
75  parser.add_argument("-f","--folder",default=None, help="database folder to create")
76  parser.add_argument("-t","--tag",default=None, help="folder-level tag (or tag-suffix) to create")
77  parser.add_argument("--SC", action='store_true', help="Work on SuperCells")
78  parser.add_argument("--MC", action='store_true', help="Work on OFLP200")
79 
80 
81  (args,leftover)=parser.parse_known_args(sys.argv[1:])
82 
83  if len(leftover)>0:
84  print("ERROR, unhandled argument(s):",leftover)
85  sys.exit(-1)
86 
87  from AthenaConfiguration.AllConfigFlags import initConfigFlags
88  from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
90  addLArCalibFlags(flags)
91  flags.Input.Files = []
92  flags.Input.isMC = args.MC
93  from Campaigns.Utils import Campaign
94  flags.Input.MCCampaign = Campaign.Unknown
95  flags.IOVDb.DatabaseInstance="OFLP200" if flags.Input.isMC else "CONDBR2"
96  flags.LAr.doAlign=False
97  flags.Input.RunNumbers=[args.runnumber if args.runnumber>0 else 300000]
98  from AthenaConfiguration.TestDefaults import defaultGeometryTags, defaultConditionsTags
99  flags.IOVDb.GlobalTag=defaultConditionsTags.RUN3_MC if flags.Input.isMC else defaultConditionsTags.RUN3_DATA22
100  flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
101  flags.LArCalib.isSC=args.SC
102  flags.IOVDb.DBConnection=f"sqlite://;schema={args.output};dbname={flags.IOVDb.DatabaseInstance}"
103 
104  if args.loglevel:
105  from AthenaCommon import Constants
106  if hasattr(Constants,args.loglevel):
107  flags.Exec.OutputLevel=getattr(Constants,args.loglevel)
108  else:
109  raise ValueError("Unknown log-level, allowed values are ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, FATAL")
110 
111  flags.lock()
112 
113  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
114  cfg=MainServicesCfg(flags)
115  #MC Event selector since we have no input data file
116  from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
117  cfg.merge(McEventSelectorCfg(flags,
118  FirstLB=args.lbnumber,
119  EventsPerRun = 1,
120  FirstEvent = 1,
121  InitialTimeStamp = 0,
122  TimeStampInterval = 1))
123 
124  cfg.merge(LArBadChannelDBAlgCfg(flags,
125  args.inputfile,
126  folder=args.folder,
127  tag=args.tag,
128  IOVStart=[args.runnumber,args.lbnumber],
129  IOVEnd=[args.runnumber2,args.lbnumber2]
130  ))
131 
132 
133 
134  sc=cfg.run(1)
135  if sc.isSuccess():
136  sys.exit(0)
137  else:
138  sys.exit(1)
LArCablingConfig.LArOnOffIdMappingSCCfg
def LArOnOffIdMappingSCCfg(configFlags)
Definition: LArCablingConfig.py:65
OutputConditionsAlgConfig.OutputConditionsAlgCfg
def OutputConditionsAlgCfg(flags, name="OutputConditionsAlg", outputFile='condobjs.root', **kwargs)
Definition: OutputConditionsAlgConfig.py:5
python.LArBadChannelDBAlg.LArBadChannelDBAlgCfg
def LArBadChannelDBAlgCfg(flags, InputFile, dbname="LAR_OFL", folder=None, tag=None, IOVStart=[0, 0], IOVEnd=[0x7FFFFFFF, 0xFFFFFFFF])
Definition: LArBadChannelDBAlg.py:6
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:310
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:26
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