ATLAS Offline Software
Loading...
Searching...
No Matches
LArMissingFebsDBAlg.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 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
49if __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
72 flags=initConfigFlags()
73 addLArCalibFlags(flags)
74
75 flags.Input.Files=[]
76 flags.Input.isMC = args.MC
77 flags.Input.Files = []
78 flags.IOVDb.DatabaseInstance="OFLP200" if args.MC else "CONDBR2"
79 flags.LAr.doAlign=False
80 flags.Input.RunNumbers=[args.runnumber if args.runnumber>0 else 300000]
81 flags.IOVDb.GlobalTag="OFLCOND-MC21-SDR-RUN3-11" if args.MC else "CONDBR2-ES1PA-2023-02"
82 if args.MC:
83 from Campaigns.Utils import Campaign
84 flags.Input.MCCampaign = Campaign.MC21a
85 from AthenaConfiguration.TestDefaults import defaultGeometryTags
86 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
87
88 flags.IOVDb.DBConnection="sqlite://;schema="+args.output+";dbname="+flags.IOVDb.DatabaseInstance
89
90 if args.loglevel:
91 from AthenaCommon import Constants
92 if hasattr(Constants,args.loglevel):
93 flags.Exec.OutputLevel=getattr(Constants,args.loglevel)
94 else:
95 raise ValueError("Unknown log-level, allowed values are ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, FATAL")
96
97 flags.lock()
98
99 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
100 cfg=MainServicesCfg(flags)
101 #MC Event selector since we have no input data file
102 from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
103 cfg.merge(McEventSelectorCfg(flags,
104 FirstLB=args.lbnumber,
105 EventsPerRun = 1,
106 FirstEvent = 1,
107 InitialTimeStamp = 0,
108 TimeStampInterval = 1))
109
110 cfg.merge(LArBadFebDBAlgCfg(flags,
111 args.inputfile,
112 folder=args.folder,
113 tag=args.tag,
114 IOVStart=[args.runnumber,args.lbnumber],
115 IOVEnd=[args.runnumber2,args.lbnumber2]
116 ))
117
118
119
120 sc=cfg.run(1)
121 if sc.isSuccess():
122 sys.exit(0)
123 else:
124 sys.exit(1)
void print(char *figname, TCanvas *c1)
LArBadFebDBAlgCfg(flags, InputFile, dbname="LAR_OFL", folder=None, tag=None, IOVStart=[0, 0], IOVEnd=[0x7FFFFFFF, 0xFFFFFFFF])