Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
CaloScaleNoiseConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentFactory import CompFactory
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 from AthenaConfiguration.MainServicesConfig import MainEvgenServicesCfg
6 
7 from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
8 from LArCalibUtils.LArHVScaleConfig import LArHVScaleCfg
9 from IOVDbSvc.IOVDbSvcConfig import addOverride
10 from AthenaCommon.Logging import logging
11 
12 def CaloScaleNoiseCfg(flagsIn,absolute=True,mu=60,dt=25,output='cellnoise_data.root'):
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 
20  msg = logging.getLogger("CaloScaleNoiseCfg")
21  #pick noise-tag depending on mu and dt
22 
23  if not absolute:
24  #relative rescale, use current UPD-online tag
25  noisetag="LARNoiseOflCellNoise-RUN2-UPD1-00"
26  msg.info("Noise rescaling using tag %s", noisetag)
27  else:
28  if (dt!=25):
29  raise RuntimeError("At this point (early run 3), only a dt of 25ns is supported")
30 
31  if mu==0:
32  noisetag="LARNoiseOflCellNoisenoise-mc16-EposA3-ofc25mu0-25ns"
33  elif mu==60:
34  noisetag="LARNoiseOflCellNoisenoise-mc16-EposA3-ofc25mu60-25ns"
35  else:
36  raise RuntimeError("At this point (early run 3), only mu values of 0 and 60 are supported")
37 
38 
39  msg.info("Absolute noise scaling using tag %s for mu=%i and dt=%i" , noisetag,mu,dt)
40 
41  result=ComponentAccumulator()
42 
43  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
44  result.merge(LArGMCfg(flags))
45  from TileGeoModel.TileGMConfig import TileGMCfg
46  result.merge(TileGMCfg(flags))
47 
48 
49  result.merge(CaloNoiseCondAlgCfg(flags,noisetype="totalNoise"))
50  result.merge(CaloNoiseCondAlgCfg(flags,noisetype="electronicNoise"))
51  result.merge(CaloNoiseCondAlgCfg(flags,noisetype="pileupNoise"))
52 
53 
54  if absolute:
55  result.merge(addOverride(flags,"/LAR/NoiseOfl/CellNoise",noisetag))
56  else:
57  result.merge(addOverride(flags,"/LAR/NoiseOfl/CellNoise",noisetag))
58 
59  result.merge(LArHVScaleCfg(flags))
60 
61  result.addEventAlgo(CompFactory.CaloRescaleNoise(absScaling=absolute))
62 
63  import os
64  rootfile="cellnoise_data.root"
65  if os.path.exists(rootfile):
66  os.remove(rootfile)
67  result.addService(CompFactory.THistSvc(Output = ["file1 DATAFILE='"+output+"' OPT='RECREATE'"]))
68  result.setAppProperty("HistogramPersistency","ROOT")
69 
70  return result
71 
72 
73 if __name__=="__main__":
74  import sys, argparse
75  parser= argparse.ArgumentParser(description="(Re-)scale noise based on HV DCS values")
76  parser.add_argument('datestamp',help="time specification like 2007-05-25:14:01:00")
77  parser.add_argument('-a', '--absolute', action="store_true", help="Absolute rescaling based on noise derived from MC")
78  parser.add_argument('-t', '--globaltag', type=str, help="Global conditions tag ")
79  parser.add_argument('-s', '--sqlite', type=str,help="sqlite with CellNoise and HVCorr folders to be scaled ")
80  parser.add_argument('-o', '--output',type=str,default="cellnoise_data.root",help="name stub for root and sqlite output files")
81  args = parser.parse_args()
82  print(args)
83 
84  from time import strptime
85  from calendar import timegm
86  try:
87  ts=strptime(args.datestamp+'/UTC','%Y-%m-%d:%H:%M:%S/%Z')
88  TimeStamp=int(timegm(ts))
89  TimeStamp_ns=TimeStamp*1000000000
90  except ValueError as e:
91  print("ERROR in time specification, use e.g. 2007-05-25:14:01:00")
92  print(e)
93  sys.exit(-1)
94 
95 
96  from LArCalibProcessing.TimeStampToRunLumi import TimeStampToRunLumi
97  rlb=TimeStampToRunLumi(TimeStamp_ns)
98  if rlb is None:
99  #rlb=[0x7FFFFFFF-1,0]
100  rlb=[999999,0]
101  print("WARNING: CaloScaleNoise: Failed to convert time",TimeStamp_ns,"into a run/lumi number. Using 'infinite' run-number",rlb[0])
102 
103 
104  from AthenaConfiguration.AllConfigFlags import initConfigFlags
105  flags = initConfigFlags()
106  flags.Input.RunNumbers=[rlb[0]]
107  print("set the runnumber: ",flags.Input.RunNumbers)
108  flags.Input.TimeStamps=[TimeStamp]
109  flags.Input.Files=[]
110  flags.IOVDb.DatabaseInstance="CONDBR2"
111  from AthenaConfiguration.TestDefaults import defaultGeometryTags
112  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
113 
114  if args.globaltag:
115  flags.IOVDb.GlobalTag=args.globaltag
116 
117  if args.sqlite:
118  flags.IOVDb.SqliteInput=args.sqlite
119  flags.IOVDb.SqliteFolders=("/LAR/NoiseOfl/CellNoise","/LAR/ElecCalibFlat/HVScaleCorr",)
120 
121  flags.lock()
123  cfg.merge(CaloScaleNoiseCfg(flags,absolute=args.absolute,output=args.output))
124 
125  print("Start running...")
126  cfg.run(1)
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.CaloScaleNoiseConfig.CaloScaleNoiseCfg
def CaloScaleNoiseCfg(flagsIn, absolute=True, mu=60, dt=25, output='cellnoise_data.root')
Definition: CaloScaleNoiseConfig.py:12
python.MainServicesConfig.MainEvgenServicesCfg
def MainEvgenServicesCfg(flags, LoopMgr="AthenaEventLoopMgr", withSequences=True)
Definition: MainServicesConfig.py:353
python.IOVDbSvcConfig.addOverride
def addOverride(flags, folder, tag, db=None)
Definition: IOVDbSvcConfig.py:233
python.LArMinBiasAlgConfig.int
int
Definition: LArMinBiasAlgConfig.py:59
python.CaloNoiseCondAlgConfig.CaloNoiseCondAlgCfg
def CaloNoiseCondAlgCfg(flags, noisetype="totalNoise")
Definition: CaloNoiseCondAlgConfig.py:11
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.LArHVScaleConfig.LArHVScaleCfg
def LArHVScaleCfg(configFlags)
Definition: LArHVScaleConfig.py:8
python.TimeStampToRunLumi.TimeStampToRunLumi
def TimeStampToRunLumi(tmstmp, guard=1, dbInstance="CONDBR2")
Definition: TimeStampToRunLumi.py:3
TileGMConfig.TileGMCfg
def TileGMCfg(flags)
Definition: TileGMConfig.py:7