ATLAS Offline Software
CaloNoise2Ntuple.py
Go to the documentation of this file.
1 #!/bin/env python
2 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 
7 def CaloNoise2NtupleCfg(flags,outputFile):
8 
10  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
11  cfg.merge(LArGMCfg(flags))
12  from TileGeoModel.TileGMConfig import TileGMCfg
13  cfg.merge(TileGMCfg(flags))
14 
15  from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
16  cfg.merge(CaloNoiseCondAlgCfg(flags,"totalNoise"))
17  cfg.merge(CaloNoiseCondAlgCfg(flags,"electronicNoise"))
18  cfg.merge(CaloNoiseCondAlgCfg(flags,"pileupNoise"))
19 
20  cfg.addEventAlgo(CompFactory.CaloNoise2Ntuple())
21  cfg.addService(CompFactory.THistSvc(Output = ["file1 DATAFILE='"+outputFile+"' OPT='RECREATE'"]))
22 
23  return cfg
24 
25 if __name__=="__main__":
26  import sys,argparse
27  parser= argparse.ArgumentParser()
28  parser.add_argument("--loglevel", default=None, help="logging level (ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, or FATAL")
29  parser.add_argument("-r","--runnumber",default=0x7fffffff, type=int, help="run number to query the DB")
30  parser.add_argument("-l","--lbnumber",default=1, type=int, help="LB number to query the DB")
31  parser.add_argument("-d","--database",default=None, help="Database name or sqlite file name")
32  parser.add_argument("-o","--output",default="caloNoise.root", help="output file name")
33  parser.add_argument("-t","--tag",default=None, help="folder-level tag to read")
34  parser.add_argument("-m","--mc", action='store_true', help="data or MC?")
35  parser.add_argument("-p", "--pileup", default=-1., type=float, help="if positive, calculate the noise for a fixed <mu> = specified value")
36  parser.add_argument("--online", action='store_true', help="online noise calculation and conditions")
37 
38  (args,leftover)=parser.parse_known_args(sys.argv[1:])
39 
40  if len(leftover)>0:
41  print("ERROR, unhandled argument(s):",leftover)
42  sys.exit(-1)
43 
44  from AthenaConfiguration.AllConfigFlags import initConfigFlags
46  flags.Input.Files = []
47  flags.Input.isMC = args.mc
48  flags.IOVDb.DatabaseInstance= "OFLP200" if args.mc else "CONDBR2"
49  from Campaigns.Utils import Campaign
50  flags.Input.MCCampaign=Campaign.Unknown
51  flags.LAr.doAlign=False
52  flags.LAr.doHVCorr=False
53  flags.Input.RunNumbers=[args.runnumber]
54  from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags
55  flags.IOVDb.GlobalTag=defaultConditionsTags.RUN3_MC if args.mc else defaultConditionsTags.RUN3_DATA
56  flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
57  flags.Common.isOnline = args.online
58  if args.pileup >= 0.:
59  flags.Calo.Noise.fixedLumiForNoise = args.pileup
60  if args.loglevel:
61  from AthenaCommon import Constants
62  if hasattr(Constants,args.loglevel):
63  flags.Exec.OutputLevel=getattr(Constants,args.loglevel)
64  else:
65  raise ValueError("Unknown log-level, allowed values are ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, FATAL")
66 
67  flags.lock()
68 
69  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
70  cfg=MainServicesCfg(flags)
71  #MC Event selector since we have no input data file
72  from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
73  cfg.merge(McEventSelectorCfg(flags,
74  FirstLB=args.lbnumber,
75  EventsPerRun = 1,
76  FirstEvent = 1,
77  InitialTimeStamp = 0,
78  TimeStampInterval = 1))
79  cfg.addEventAlgo(CompFactory.xAODMaker.EventInfoCnvAlg(AODKey = 'McEventInfo'),sequenceName="AthAlgSeq")
80 
81  cfg.merge(CaloNoise2NtupleCfg(flags,args.output))
82 
83  dbstr=None
84  if args.database:
85  dbstr="sqlite://;schema="+args.database+";dbname=" + flags.IOVDb.DatabaseInstance
86 
87  if args.tag or args.database:
88  from IOVDbSvc.IOVDbSvcConfig import addOverride
89  folder = "/CALO/Noise/CellNoise" if flags.Common.isOnline else "/LAR/NoiseOfl/CellNoise"
90  cfg.merge(addOverride(flags, folder, tag=args.tag, db=dbstr))
91 
92 
93  sc=cfg.run(1)
94  if sc.isSuccess():
95  sys.exit(0)
96  else:
97  sys.exit(1)
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
CaloNoise2Ntuple.CaloNoise2NtupleCfg
def CaloNoise2NtupleCfg(flags, outputFile)
Definition: CaloNoise2Ntuple.py:7
python.CaloNoiseCondAlgConfig.CaloNoiseCondAlgCfg
def CaloNoiseCondAlgCfg(flags, noisetype="totalNoise")
Definition: CaloNoiseCondAlgConfig.py:11
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
python.McEventSelectorConfig.McEventSelectorCfg
def McEventSelectorCfg(flags, **kwargs)
Definition: McEventSelectorConfig.py:5
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
python.IOVDbSvcConfig.addOverride
def addOverride(flags, folder, tag, tagType="tag", db=None)
Definition: IOVDbSvcConfig.py:238
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
TileGMConfig.TileGMCfg
def TileGMCfg(flags)
Definition: TileGMConfig.py:7