ATLAS Offline Software
Loading...
Searching...
No Matches
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
4from AthenaConfiguration.ComponentFactory import CompFactory
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6
7def CaloNoise2NtupleCfg(flags,outputFile):
8
9 cfg=ComponentAccumulator()
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
25if __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 parser.add_argument("--mu",default=-1, type=int, help="Fixed mu to use (lumi from DB if -1)")
38
39
40 (args,leftover)=parser.parse_known_args(sys.argv[1:])
41
42 if len(leftover)>0:
43 print("ERROR, unhandled argument(s):",leftover)
44 sys.exit(-1)
45
46 from AthenaConfiguration.AllConfigFlags import initConfigFlags
47 flags=initConfigFlags()
48 flags.Input.Files = []
49 flags.Input.isMC = args.mc
50 flags.IOVDb.DatabaseInstance= "OFLP200" if args.mc else "CONDBR2"
51 from Campaigns.Utils import Campaign
52 flags.Input.MCCampaign=Campaign.Unknown
53 flags.LAr.doAlign=False
54 flags.LAr.doHVCorr=False
55 if args.mu >= 0:
56 flags.Calo.Noise.fixedLumiForNoise=args.mu*0.17241*50/25 # pileup noise lumi normalisation
57 flags.Input.RunNumbers=[args.runnumber]
58 from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags
59 flags.IOVDb.GlobalTag=defaultConditionsTags.RUN3_MC if args.mc else defaultConditionsTags.RUN3_DATA
60 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
61 flags.Common.isOnline = args.online
62 if args.pileup >= 0.:
63 flags.Calo.Noise.fixedLumiForNoise = args.pileup
64 if args.loglevel:
65 from AthenaCommon import Constants
66 if hasattr(Constants,args.loglevel):
67 flags.Exec.OutputLevel=getattr(Constants,args.loglevel)
68 else:
69 raise ValueError("Unknown log-level, allowed values are ALL, VERBOSE, DEBUG,INFO, WARNING, ERROR, FATAL")
70
71 flags.lock()
72
73 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
74 cfg=MainServicesCfg(flags)
75 #MC Event selector since we have no input data file
76 from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
77 cfg.merge(McEventSelectorCfg(flags,
78 FirstLB=args.lbnumber,
79 EventsPerRun = 1,
80 FirstEvent = 1,
81 InitialTimeStamp = 0,
82 TimeStampInterval = 1))
83 cfg.addEventAlgo(CompFactory.xAODMaker.EventInfoCnvAlg(AODKey = 'McEventInfo'),sequenceName="AthAlgSeq")
84
85 cfg.merge(CaloNoise2NtupleCfg(flags,args.output))
86
87 dbstr=None
88 if args.database:
89 dbstr="sqlite://;schema="+args.database+";dbname=" + flags.IOVDb.DatabaseInstance
90
91 if args.tag or args.database:
92 from IOVDbSvc.IOVDbSvcConfig import addOverride
93 folder = "/CALO/Noise/CellNoise" if flags.Common.isOnline else "/LAR/NoiseOfl/CellNoise"
94 cfg.merge(addOverride(flags, folder, tag=args.tag, db=dbstr))
95
96
97 sc=cfg.run(1)
98 if sc.isSuccess():
99 sys.exit(0)
100 else:
101 sys.exit(1)
void print(char *figname, TCanvas *c1)
CaloNoise2NtupleCfg(flags, outputFile)