ATLAS Offline Software
Loading...
Searching...
No Matches
LArBadChannel2Ascii.py
Go to the documentation of this file.
1# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentFactory import CompFactory
3from IOVDbSvc.IOVDbSvcConfig import addFolders
4
5def LArBadChannel2AsciiCfg(flags,OutputFile,dbname="LAR_OFL",folder=None,tag=None,summaryfile=""):
6 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
7 result=LArGMCfg(flags)
8
9 if flags.LArCalib.isSC:
10 #Setup SuperCell cabling
11 from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg
12 result.merge(LArOnOffIdMappingSCCfg(flags))
13 else:
14 #Setup regular cabling
15 from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg
16 result.merge(LArOnOffIdMappingCfg(flags))
17
18
19 if folder is None:
20 if dbname in ("LAR","LAR_ONL") or flags.Input.isMC:
21 folder="/LAR/BadChannels/BadChannels"
22 else:
23 folder="/LAR/BadChannelsOfl/BadChannels"
24
25 if flags.LArCalib.isSC:
26 folder+="SC"
27
28 if tag is not None:
29 if not tag.startswith("LAR"):
30 if not tag.startswith("-"): tag= "-"+tag
31 tag="".join(folder.split("/"))+tag
32
33 print("Tag=",tag)
34
35 result.merge(addFolders(flags,folder,dbname,tag=tag,
36 className="CondAttrListCollection"))
37 theLArBadChannelCondAlgo=CompFactory.LArBadChannelCondAlg(ReadKey=folder)
38 if flags.LArCalib.isSC:
39 theLArBadChannelCondAlgo.CablingKey="LArOnOffIdMapSC"
40 theLArBadChannelCondAlgo.isSC=True
41
42 result.addCondAlgo(theLArBadChannelCondAlgo)
43
44 if summaryfile!="":
45 if (not flags.LArCalib.isSC):
46 from LArBadChannelTool.LArBadFebsConfig import LArKnownBadFebCfg
47 result.merge(LArKnownBadFebCfg(flags))
48
49 theLArBadChannels2Ascii=CompFactory.LArBadChannel2Ascii(SkipDisconnected=True)
50 theLArBadChannels2Ascii.FileName=OutputFile
51 theLArBadChannels2Ascii.WithMissing=False if (summaryfile=="" and not flags.LArCalib.isSC) else True
52 theLArBadChannels2Ascii.ExecutiveSummaryFile=summaryfile
53 theLArBadChannels2Ascii.BFKey="LArKnownBadFEBs"
54 if (flags.LArCalib.isSC):
55 theLArBadChannels2Ascii.LArOnOffIdMapKey="LArOnOffIdMapSC"
56 theLArBadChannels2Ascii.SuperCell=True
57 result.addEventAlgo(theLArBadChannels2Ascii)
58
59 return result
60
61
62
63if __name__=="__main__":
64 import sys,argparse
65 parser= argparse.ArgumentParser()
66 parser.add_argument("--loglevel", default=None, help="logging level (ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, or FATAL")
67 parser.add_argument("-r","--runnumber",default=0x7fffffff, type=int, help="run number to query the DB")
68 parser.add_argument("-l","--lbnumber",default=1, type=int, help="LB number to query the DB")
69 parser.add_argument("-d","--database",default="LAR_OFL", help="Database name or sqlite file name")
70 parser.add_argument("-o","--output",default="bc_output.txt", help="output file name")
71 parser.add_argument("-f","--folder",default=None, help="database folder to read")
72 parser.add_argument("-t","--tag",default=None, help="folder-level tag to read")
73 parser.add_argument("-s","--summary",default="", help="Executive summary file")
74 parser.add_argument("--SC", action='store_true', help="Work on SuperCells")
75 parser.add_argument("--MC", action='store_true', default=False, help="Work on MC DB")
76
77 (args,leftover)=parser.parse_known_args(sys.argv[1:])
78
79 if len(leftover)>0:
80 print("ERROR, unhandled argument(s):",leftover)
81 sys.exit(-1)
82
83 from AthenaConfiguration.AllConfigFlags import initConfigFlags
84 from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
85 flags=initConfigFlags()
86 addLArCalibFlags(flags)
87 flags.Input.Files = []
88 flags.Input.isMC = args.MC
89 flags.IOVDb.DatabaseInstance="OFLP200" if args.MC else "CONDBR2"
90 flags.LAr.doAlign=False
91 flags.Input.RunNumbers=[args.runnumber]
92 flags.IOVDb.GlobalTag="OFLCOND-MC21-SDR-RUN3-11" if args.MC else "CONDBR2-ES1PA-2023-02"
93 if args.MC:
94 from Campaigns.Utils import Campaign
95 flags.Input.MCCampaign = Campaign.MC21a
96
97 from AthenaConfiguration.TestDefaults import defaultGeometryTags
98 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
99 flags.LArCalib.isSC=args.SC
100
101 if args.loglevel:
102 from AthenaCommon import Constants
103 if hasattr(Constants,args.loglevel):
104 flags.Exec.OutputLevel=getattr(Constants,args.loglevel)
105 else:
106 raise ValueError("Unknown log-level, allowed values are ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, FATAL")
107
108 flags.lock()
109
110 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
111 cfg=MainServicesCfg(flags)
112 #MC Event selector since we have no input data file
113 from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
114 cfg.merge(McEventSelectorCfg(flags,
115 FirstLB=args.lbnumber,
116 EventsPerRun = 1,
117 FirstEvent = 1,
118 InitialTimeStamp = 0,
119 TimeStampInterval = 1))
120
121 cfg.merge(LArBadChannel2AsciiCfg(flags,args.output,
122 dbname=args.database,
123 folder=args.folder,
124 tag=args.tag,
125 summaryfile=args.summary))
126
127
128
129 sc=cfg.run(1)
130 if sc.isSuccess():
131 sys.exit(0)
132 else:
133 sys.exit(1)
void print(char *figname, TCanvas *c1)
LArBadChannel2AsciiCfg(flags, OutputFile, dbname="LAR_OFL", folder=None, tag=None, summaryfile="")