ATLAS Offline Software
Loading...
Searching...
No Matches
LArBadChannelDBAlg.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentFactory import CompFactory
3from AthenaCommon.Logging import logging
4
5
6def 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
65if __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
89 flags=initConfigFlags()
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)
void print(char *figname, TCanvas *c1)
LArBadChannelDBAlgCfg(flags, InputFile, dbname="LAR_OFL", folder=None, tag=None, IOVStart=[0, 0], IOVEnd=[0x7FFFFFFF, 0xFFFFFFFF])