3from AthenaConfiguration.ComponentFactory
import CompFactory
4from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
5from AthenaConfiguration.MainServicesConfig
import MainEvgenServicesCfg
7from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
8from LArCalibUtils.LArHVScaleConfig
import LArHVScaleCfg
9from IOVDbSvc.IOVDbSvcConfig
import addOverride
10from AthenaCommon.Logging
import logging
12def CaloScaleNoiseCfg(flagsIn, absolute=True, mu=60, dt=25, output='cellnoise_data.root', **hvscaleprops):
16 flags.Calo.Noise.fixedLumiForNoise=1
17 flags.LAr.doHVCorr =
False
19 msg = logging.getLogger(
"CaloScaleNoiseCfg")
23 noisetag=
"LARNoiseOflCellNoise-RUN2-UPD1-00"
24 msg.info(
"Noise rescaling using tag %s", noisetag)
27 raise RuntimeError(
"At this point (late run 3), only a dt of 25ns is supported")
29 noisetag=
"LARNoiseOflCellNoisenoise-mc16-EposA3-ofc25mu0-25ns"
31 noisetag=
"LARNoiseOflCellNoisenoise-mc16-EposA3-ofc25mu60-25ns"
33 raise RuntimeError(
"At this point (late run 3), only mu values of 0 and 60 are supported")
36 msg.info(
"Absolute noise scaling using tag %s for mu=%i and dt=%i" , noisetag,mu,dt)
38 result=ComponentAccumulator()
39 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
40 result.merge(LArGMCfg(flags))
41 from TileGeoModel.TileGMConfig
import TileGMCfg
42 result.merge(TileGMCfg(flags))
43 result.merge(CaloNoiseCondAlgCfg(flags,noisetype=
"totalNoise"))
44 result.merge(CaloNoiseCondAlgCfg(flags,noisetype=
"electronicNoise"))
45 result.merge(CaloNoiseCondAlgCfg(flags,noisetype=
"pileupNoise"))
46 if noisetag
is not None:
47 result.merge(addOverride(flags,
"/LAR/NoiseOfl/CellNoise", noisetag))
48 result.merge(LArHVScaleCfg(flags, **hvscaleprops))
49 result.addEventAlgo(CompFactory.CaloRescaleNoise(absScaling=absolute))
52 if os.path.exists(output):
54 result.addService(CompFactory.THistSvc(Output = [
"file1 DATAFILE='"+output+
"' OPT='RECREATE'"]))
55 result.setAppProperty(
"HistogramPersistency",
"ROOT")
59if __name__==
"__main__":
61 from LArCalibUtils.LArHVScaleConfig
import addHvScaleParserArgs, buildHvScaleProps
62 parser= argparse.ArgumentParser(description=
"(Re-)scale noise based on HV DCS values")
63 addHvScaleParserArgs(parser)
64 parser.add_argument(
'datestamp',help=
"time specification like 2007-05-25:14:01:00")
65 parser.add_argument(
'-a',
'--absolute', action=
"store_true",help=
"Absolute rescaling based on noise derived from MC")
66 parser.add_argument(
'-t',
'--globaltag', type=str, help=
"Global conditions tag ")
67 parser.add_argument(
'-s',
'--sqlite', type=str,help=
"sqlite with CellNoise and HVCorr folders to be scaled ")
68 parser.add_argument(
'-o',
'--output', type=str, default=
"cellnoise_data.root",
69 help=
"name stub for root and sqlite output files (default: %(default)s)")
70 addHvScaleParserArgs(parser)
71 args = parser.parse_args()
72 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
73 from LArCalibProcessing.TimeStampToRunLumi
import fillInputFlags
74 flags = initConfigFlags()
75 fillInputFlags(flags, args.datestamp+
'/UTC')
76 print(
"set the runnumber:",flags.Input.RunNumbers)
78 flags.IOVDb.DatabaseInstance=
"CONDBR2"
79 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
80 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
82 flags.IOVDb.GlobalTag=args.globaltag
84 flags.IOVDb.SqliteInput=args.sqlite
85 flags.IOVDb.SqliteFolders=(
"/LAR/NoiseOfl/CellNoise",
"/LAR/ElecCalibFlat/HVScaleCorr",)
87 hvsp=buildHvScaleProps(args)
88 cfg=MainEvgenServicesCfg(flags)
89 cfg.merge(
CaloScaleNoiseCfg(flags,absolute=args.absolute,output=args.output,**hvsp))
90 print(
"Start running...")
void print(char *figname, TCanvas *c1)
CaloScaleNoiseCfg(flagsIn, absolute=True, mu=60, dt=25, output='cellnoise_data.root', **hvscaleprops)