ATLAS Offline Software
Loading...
Searching...
No Matches
CaloScaleNoiseConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentFactory import CompFactory
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.MainServicesConfig import MainEvgenServicesCfg
6
7from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
8from LArCalibUtils.LArHVScaleConfig import LArHVScaleCfg
9from IOVDbSvc.IOVDbSvcConfig import addOverride
10from AthenaCommon.Logging import logging
11
12def CaloScaleNoiseCfg(flagsIn, absolute=True, mu=60, dt=25, output='cellnoise_data.root', **hvscaleprops):
13
14 #Clone flags-container and modify it, since this is not a standard reco job
15 flags=flagsIn.clone()
16 flags.Calo.Noise.fixedLumiForNoise=1
17 flags.LAr.doHVCorr = False #Avoid double-rescaling
18 flags.lock()
19 msg = logging.getLogger("CaloScaleNoiseCfg")
20 #pick noise-tag depending on mu and dt
21 if not absolute:
22 #relative rescale, use current UPD-online tag
23 noisetag="LARNoiseOflCellNoise-RUN2-UPD1-00"
24 msg.info("Noise rescaling using tag %s", noisetag)
25 else:
26 if (dt!=25):
27 raise RuntimeError("At this point (late run 3), only a dt of 25ns is supported")
28 if mu==0:
29 noisetag="LARNoiseOflCellNoisenoise-mc16-EposA3-ofc25mu0-25ns"
30 elif mu==60:
31 noisetag="LARNoiseOflCellNoisenoise-mc16-EposA3-ofc25mu60-25ns"
32 else:
33 raise RuntimeError("At this point (late run 3), only mu values of 0 and 60 are supported")
34
35
36 msg.info("Absolute noise scaling using tag %s for mu=%i and dt=%i" , noisetag,mu,dt)
37
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))
50
51 import os
52 if os.path.exists(output):
53 os.remove(output)
54 result.addService(CompFactory.THistSvc(Output = ["file1 DATAFILE='"+output+"' OPT='RECREATE'"]))
55 result.setAppProperty("HistogramPersistency","ROOT")
56 return result
57
58
59if __name__=="__main__":
60 import argparse
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)
77 flags.Input.Files=[]
78 flags.IOVDb.DatabaseInstance="CONDBR2"
79 from AthenaConfiguration.TestDefaults import defaultGeometryTags
80 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
81 if args.globaltag:
82 flags.IOVDb.GlobalTag=args.globaltag
83 if args.sqlite:
84 flags.IOVDb.SqliteInput=args.sqlite
85 flags.IOVDb.SqliteFolders=("/LAR/NoiseOfl/CellNoise","/LAR/ElecCalibFlat/HVScaleCorr",)
86 flags.lock()
87 hvsp=buildHvScaleProps(args)
88 cfg=MainEvgenServicesCfg(flags)
89 cfg.merge(CaloScaleNoiseCfg(flags,absolute=args.absolute,output=args.output,**hvsp))
90 print("Start running...")
91 cfg.run(1)
void print(char *figname, TCanvas *c1)
CaloScaleNoiseCfg(flagsIn, absolute=True, mu=60, dt=25, output='cellnoise_data.root', **hvscaleprops)