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 if runinfo
is not None:
90 flags.LArSCDump.nSamples=runinfo.nSamples()
92 flags.LArSCDump.digitsKey=args.dkey
93 if args.nsamp > 0
and args.nsamp < flags.LArSCDump.nSamples:
94 flags.LArSCDump.nSamples=args.nsamp
96 log.info(
"Autoconfigured: ")
97 log.info(
"nSamples: %d digitsKey %s accKey %s",flags.LArSCDump.nSamples, flags.LArSCDump.digitsKey, args.acckey)
100 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
101 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
104 flags.LAr.doAlign=
False
107 flags.Trigger.triggerConfig =
'DB'
108 flags.Trigger.L1.doCTP =
True
109 flags.Trigger.L1.doMuon =
False
110 flags.Trigger.L1.doCalo =
False
111 flags.Trigger.L1.doTopo =
False
113 flags.Trigger.enableL1CaloLegacy =
True
114 flags.Trigger.enableL1CaloPhase1 =
True
118 flags.IOVDb.SqliteInput=
"/afs/cern.ch/user/p/pavol/public/EMF_otherCond.db"
119 flags.IOVDb.SqliteFolders = (
"/LAR/BadChannelsOfl/BadChannels",
"/LAR/BadChannelsOfl/KnownBADFEBs",
"/LAR/BadChannelsOfl/KnownMNBFEBs",
"/LAR/BadChannelsOfl/MissingFEBs",
"/LAR/Identifier/OnOffIdMap",)
125 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
126 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
131 from LArCabling.LArCablingConfig
import LArOnOffIdMappingCfg
135 from LArCafJobs.LArSCDumperSkeleton
import L1CaloMenuCfg
137 from TrigDecisionTool.TrigDecisionToolConfig
import TrigDecisionToolCfg
144 from LArBadChannelTool.LArBadChannelConfig
import LArBadFebCfg, LArBadChannelCfg
149 log.warning(
"Adding real geometry is not working yet")
156 from LArCalibTools.LArDigits2NtupleConfig
import LArDigits2NtupleCfg
157 acc.merge(
LArDigits2NtupleCfg(flags, AddBadChannelInfo=args.bc, AddFEBTempInfo=
False, isSC=
False, isFlat=
True,
158 OffId=args.offline, AddHash=args.ahash, AddCalib=args.calib, RealGeometry=args.geom,
159 NSamples=flags.LArSCDump.nSamples, FTlist=flags.LArCalib.Preselection.FT, Slotlist=flags.LArCalib.Preselection.Slot, BElist=flags.LArCalib.Preselection.BEC, Sidelist=flags.LArCalib.Preselection.Side,
160 ContainerKey=flags.LArSCDump.digitsKey, AccContainerKey=args.acckey, isCalib=args.iscalib,
161 FillLB=args.evtree, FillBCID=args.bcid,
162 OutputLevel=args.olevel
165 if os.path.exists(args.outfile):
166 os.remove(args.outfile)
167 acc.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+args.outfile+
"' OPT='NEW'" ]))
168 acc.setAppProperty(
"HistogramPersistency",
"ROOT")
171 log.info(
"Input files to be processed:")
172 for f
in flags.Input.Files:
174 log.info(
"Output file: ")
175 log.info(args.outfile)