ATLAS Offline Software
Loading...
Searching...
No Matches
Merge_LAr_blobs.py
Go to the documentation of this file.
1#!/bin/env python
2# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
4
12
13
14import os,sys,getopt
15from AthenaConfiguration.TestDefaults import defaultGeometryTags
16import argparse
17
18parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
19parser.add_argument('-r', "--run", dest='run', default=0x7fffffff, help="Run number. Default %(default)s.")
20parser.add_argument('-i', "--indb", dest='indb', default="COOLONL_LAR/CONDBR2",help="Input DB for base constants. Default %(default)s.")
21parser.add_argument('-p', "--patchdb", dest='patchdb', default="freshConstantsOnl.db", help="Patching DB, from which constants are taken only for the specified region(s). Default %(default)s.")
22parser.add_argument('-o', "--outdb", dest='outdb', default="new.db", help="Output DB. Default %(default)s.")
23parser.add_argument('-f', "--folder", dest='folder', default="/LAR/ElecCalibFlat/OFC", help="COOL folder. Default %(default)s.")
24parser.add_argument('-s', "--issc", dest='issc', default=False, action="store_true", help="Is this SuperCell Data? Default %(default)s.")
25parser.add_argument('-d', "--det", dest='patchdet', default=[], nargs='+', type=int, help="Detector to patch. Default %(default)s. EMB = 0, EMEC OW = 1, EMEC IW = 2, HEC = 3, FCAL = 4")
26parser.add_argument('-ft', "-FT", dest='patchFT', default=[], nargs='+', type=str, help="Feedthrough to patch. Default %(default)s")
27parser.add_argument('-ch', dest='patchChan', default=[], nargs='+', type=str, help="Channel(s) to patch. Default %(default)s")
28
30 try:
31 int(s, 16)
32 return True
33 except ValueError:
34 return False
35
36# std::string LArOnlineID_Base::feedthrough_name( const HWIdentifier id )const{
37
38args = parser.parse_args()
39if help in args and args.help is not None and args.help:
40 parser.print_help()
41 sys.exit(0)
42
43filled = [ len(x) > 0 for x in [args.patchdet, args.patchFT, args.patchChan] ]
44
45if filled.count(True) == 0:
46 print("No list of HW to patch was provided! Please provide desired detectors/FTs/channels to patch")
47 sys.exit(1)
48elif filled.count(True) > 1:
49 print("Ambiguous options given. Please only provide one unit of HW to patch (detectors/FTs/channels)")
50 sys.exit(1)
51
52if os.path.isfile(args.outdb):
53 print(f"OUTPUT FILE {args.outdb} ALREADY EXISTS! Please check, and delete it / supply a different output name")
54 sys.exit(1)
55
56else:
57 # Convert channel list to int (including hex conversion, where needed)
58 args.patchChan = [int(ch,16) if is_hexadecimal(ch) else int(ch) for ch in args.patchChan]
59
60if ".db" in args.indb:
61 indb="sqlite://;schema="+args.indb+";dbname=CONDBR2"
62else:
63 indb=args.indb
64if ".db" in args.patchdb:
65 patchdb="sqlite://;schema="+args.patchdb+";dbname=CONDBR2"
66else:
67 patchdb=args.patchdb
68if ".db" in args.outdb:
69 outdb="sqlite://;schema="+args.outdb+";dbname=CONDBR2"
70else:
71 outdb=args.outdb
72
73#Don't let PyRoot open X-connections
74sys.argv = sys.argv[:1] + ['-b']
75
76detdescrtag=defaultGeometryTags.RUN3
77defTag="CONDBR2-BLKPA-2024-01"
78
79from AthenaConfiguration.AllConfigFlags import initConfigFlags
80flags=initConfigFlags()
81from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
82addLArCalibFlags(flags,isSC=args.issc)
83flags.Input.Files = []
84flags.Input.TimeStamps = [1000]
85flags.Input.isMC=False
86flags.Input.RunNumbers=[int(args.run)]
87flags.IOVDb.DatabaseInstance="CONDBR2" if int(args.run)>222222 else "COMP200"
88flags.IOVDb.GlobalTag=defTag
89flags.GeoModel.AtlasVersion = detdescrtag
90flags.LAr.doAlign=False
91from AthenaCommon.Constants import INFO
92flags.Exec.OutputLevel=INFO
93flags.lock()
94
95from RootUtils import PyROOTFixes # noqa F401
96from AthenaConfiguration.MainServicesConfig import MainServicesCfg
97cfg=MainServicesCfg(flags)
98
99from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
100cfg.merge (McEventSelectorCfg (flags))
101
102#if geo:
103# from LArGeoAlgsNV.LArGMConfig import LArGMCfg
104# cfg.merge(LArGMCfg(flags))
105#else:
106from DetDescrCnvSvc.DetDescrCnvSvcConfig import DetDescrCnvSvcCfg
107cfg.merge(DetDescrCnvSvcCfg(flags))
108
109if flags.LArCalib.isSC:
110 #Setup SuperCell cabling
111 from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg
112 cfg.merge(LArOnOffIdMappingSCCfg(flags))
113else:
114 #Setup regular cabling
115 from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg
116 cfg.merge(LArOnOffIdMappingCfg(flags))
117
118from LArConditionsCommon.LArBlobMergeAlg import LArBlobMergeAlg
119theLArMergeAlg=LArBlobMergeAlg("LArBlobMergeAlg", fld=args.folder,
120 inputdb=indb,
121 patchingdb=patchdb,
122 outputdb=outdb,
123 runnum=int(args.run),
124 patchdet=args.patchdet,
125 patchFT=args.patchFT,
126 patchChan=args.patchChan,
127 isSC=flags.LArCalib.isSC)
128cfg.addEventAlgo(theLArMergeAlg)
129
130cfg.run(2) # to make sure all conditions are red-out,
131 # actual code is in algo stop
void print(char *figname, TCanvas *c1)