5 from AthenaConfiguration.ComponentFactory
import CompFactory
7 if __name__==
'__main__':
11 from AthenaCommon
import Logging
12 log = Logging.logging.getLogger(
'LArDigits2Ntuple' )
14 parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
16 parser.add_argument(
'-i',
'--indir', dest=
'indir', default=
"/eos/atlas/atlastier0/rucio/data_test/calibration_pulseall/00414414/data_test.00414414.calibration_pulseall.daq.RAW/", help=
'input files dir', type=str)
17 parser.add_argument(
'-p',
'--inprefix', dest=
'inpref', default=
"data_test", help=
'Input filenames prefix', type=str)
18 parser.add_argument(
'-y',
'--inppatt', dest=
'inppatt', default=
"lb3512", help=
'Input filenames pattern', type=str)
19 parser.add_argument(
'-f',
'--infile', dest=
'infile', default=
"", help=
'Input filename (if given indir and inprefix are ignored', type=str)
20 parser.add_argument(
'-r',
'--run', dest=
'run', default=0, help=
'Run number (if not given trying to judge from input file name)', type=int)
21 parser.add_argument(
'-m',
'--maxev', dest=
'maxev', default=-1, help=
'Max number of events to dump', type=int)
22 parser.add_argument(
'-x',
'--outlevel', dest=
'olevel', default=3, help=
'OuputLevel for dumping algo', type=int)
23 parser.add_argument(
'-o',
'--outfile', dest=
'outfile', default=
"Digits.root", help=
'Output root filename', type=str)
24 parser.add_argument(
'-n',
'--nsamp', dest=
'nsamp', default=0, help=
'Number of samples to dump', type=int)
25 parser.add_argument(
'-a',
'--addHash', dest=
'ahash', default=
False, help=
'Add hash number to output ntuple', action=
"store_true")
26 parser.add_argument(
'-j',
'--addOffline', dest=
'offline', default=
False, help=
'Add offline Id to output ntuple', action=
"store_true")
27 parser.add_argument(
'-k',
'--addCalib', dest=
'calib', default=
False, help=
'Add calib. info to output ntuple', action=
"store_true")
28 parser.add_argument(
'-t',
'--addGeom', dest=
'geom', default=
False, help=
'Add real geom info to output ntuple', action=
"store_true")
29 parser.add_argument(
'-u',
'--addBC', dest=
'bc', default=
False, help=
'Add Bad. chan info to output ntuple', action=
"store_true")
30 parser.add_argument(
'--addBCID', dest=
'bcid', default=
False, help=
'Add BCID info to output ntuple', action=
"store_true")
31 parser.add_argument(
'-v',
'--addEvTree', dest=
'evtree', default=
False, help=
'Add tree with per event info to output ntuple', action=
"store_true")
32 parser.add_argument(
'--EMF', dest=
'emf', default=
False, help=
'Is it for EMF', action=
'store_true')
33 parser.add_argument(
'-d',
'--digikey', dest=
'dkey', default=
"FREE", help=
'Input digits key', type=str)
34 parser.add_argument(
'-e',
'--acckey', dest=
'acckey', default=
"", help=
'Input accumulated calib digits key', type=str)
35 parser.add_argument(
'--CALIB', dest=
'iscalib', default=
False, help=
'Is it from calib run ?', action=
'store_true')
36 parser.add_argument(
'--FTs', dest=
'ft', default=[], nargs=
"+", type=int, help=
'list of FT which will be read out (space separated).')
37 parser.add_argument(
'--posneg', dest=
'posneg', default=[], nargs=
"+", help=
'side to read out (-1 means both), can give multiple arguments (space separated). Default %(default)s.', type=int,choices=
range(-1,2))
38 parser.add_argument(
'--barrel_ec', dest=
'be', default=[], nargs=
"+", help=
'subdet to read out (-1 means both), can give multiple arguments (space separated) Default %(default)s.', type=int,choices=
range(-1,2))
40 args = parser.parse_args()
41 if help
in args
and args.help
is not None and args.help:
45 for _, value
in args._get_kwargs():
50 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
54 from LArCafJobs.LArSCDumperFlags
import addSCDumpFlags
58 if len(args.infile) > 0:
59 flags.Input.Files = [args.infile]
60 elif len(args.inppatt) > 0:
61 from LArCalibProcessing.GetInputFiles
import GetInputFilesFromPattern
64 from LArCalibProcessing.GetInputFiles
import GetInputFilesFromPrefix
68 flags.Input.RunNumbers = [args.run]
70 from LArCalibProcessing.LArCalibConfigFlags
import addLArCalibFlags
72 if len(args.posneg) >= 0:
73 flags.LArCalib.Preselection.Side = args.posneg
75 flags.LArCalib.Preselection.BEC = args.be
77 flags.LArCalib.Preselection.FT = args.ft
83 log.warning(
"Could not get run info, using defaults !")
85 flags.LArSCDump.nSamples=args.nsamp
87 flags.LArSCDump.nSamples=4
89 flags.LArSCDump.nSamples=runinfo.nSamples()
91 flags.LArSCDump.digitsKey=args.dkey
92 if args.nsamp > 0
and args.nsamp < flags.LArSCDump.nSamples:
93 flags.LArSCDump.nSamples=args.nsamp
95 log.info(
"Autoconfigured: ")
96 log.info(
"nSamples: %d digitsKey %s accKey %s",flags.LArSCDump.nSamples, flags.LArSCDump.digitsKey, args.acckey)
99 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
100 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
103 flags.LAr.doAlign=
False
106 flags.Trigger.triggerConfig =
'DB'
107 flags.Trigger.L1.doCTP =
True
108 flags.Trigger.L1.doMuon =
False
109 flags.Trigger.L1.doCalo =
False
110 flags.Trigger.L1.doTopo =
False
112 flags.Trigger.enableL1CaloLegacy =
True
113 flags.Trigger.enableL1CaloPhase1 =
True
117 flags.IOVDb.SqliteInput=
"/afs/cern.ch/user/p/pavol/public/EMF_otherCond.db"
118 flags.IOVDb.SqliteFolders = (
"/LAR/BadChannelsOfl/BadChannels",
"/LAR/BadChannelsOfl/KnownBADFEBs",
"/LAR/BadChannelsOfl/KnownMNBFEBs",
"/LAR/BadChannelsOfl/MissingFEBs",
"/LAR/Identifier/OnOffIdMap",)
124 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
125 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
130 from LArCabling.LArCablingConfig
import LArOnOffIdMappingCfg
134 from LArCafJobs.LArSCDumperSkeleton
import L1CaloMenuCfg
136 from TrigDecisionTool.TrigDecisionToolConfig
import TrigDecisionToolCfg
143 from LArBadChannelTool.LArBadChannelConfig
import LArBadFebCfg, LArBadChannelCfg
148 log.warning(
"Adding real geometry is not working yet")
155 from LArCalibTools.LArDigits2NtupleConfig
import LArDigits2NtupleCfg
156 acc.merge(
LArDigits2NtupleCfg(flags, AddBadChannelInfo=args.bc, AddFEBTempInfo=
False, isSC=
False, isFlat=
True,
157 OffId=args.offline, AddHash=args.ahash, AddCalib=args.calib, RealGeometry=args.geom,
158 NSamples=flags.LArSCDump.nSamples, FTlist=flags.LArCalib.Preselection.FT, Slotlist=flags.LArCalib.Preselection.Slot, BElist=flags.LArCalib.Preselection.BEC, Sidelist=flags.LArCalib.Preselection.Side,
159 ContainerKey=flags.LArSCDump.digitsKey, AccContainerKey=args.acckey, isCalib=args.iscalib,
160 FillLB=args.evtree, FillBCID=args.bcid,
161 OutputLevel=args.olevel
164 if os.path.exists(args.outfile):
165 os.remove(args.outfile)
166 acc.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+args.outfile+
"' OPT='NEW'" ]))
167 acc.setAppProperty(
"HistogramPersistency",
"ROOT")
170 log.info(
"Input files to be processed:")
171 for f
in flags.Input.Files:
173 log.info(
"Output file: ")
174 log.info(args.outfile)