5from AthenaConfiguration.ComponentFactory
import CompFactory
7if __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 digits key', type=str)
35 parser.add_argument(
'-l',
'--acccalibkey', dest=
'acccalibkey', default=
"", help=
'Input accumulated calib digits key', type=str)
36 parser.add_argument(
'--CALIB', dest=
'iscalib', default=
False, help=
'Is it from calib run ?', action=
'store_true')
37 parser.add_argument(
'--RDO', dest=
'rdo', default=
False, help=
'Is it from pool file ?', action=
'store_true')
38 parser.add_argument(
'--FTs', dest=
'ft', default=[], nargs=
"+", type=int, help=
'list of FT which will be read out (space separated).')
39 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))
40 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))
42 args = parser.parse_args()
43 if help
in args
and args.help
is not None and args.help:
47 for _, value
in args._get_kwargs():
52 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
53 flags = initConfigFlags()
56 from LArCafJobs.LArSCDumperFlags
import addSCDumpFlags
60 if len(args.infile) > 0:
61 flags.Input.Files = [args.infile]
62 elif len(args.inppatt) > 0:
63 from LArCalibProcessing.GetInputFiles
import GetInputFilesFromPattern
64 flags.Input.Files = GetInputFilesFromPattern(args.indir,args.inppatt)
66 from LArCalibProcessing.GetInputFiles
import GetInputFilesFromPrefix
67 flags.Input.Files = GetInputFilesFromPrefix(args.indir,args.inpref)
70 flags.Input.RunNumbers = [args.run]
72 from LArCalibProcessing.LArCalibConfigFlags
import addLArCalibFlags
73 addLArCalibFlags(flags)
74 if len(args.posneg) >= 0:
75 flags.LArCalib.Preselection.Side = args.posneg
77 flags.LArCalib.Preselection.BEC = args.be
79 flags.LArCalib.Preselection.FT = args.ft
83 runinfo=getLArFormatForRun(flags.Input.RunNumbers[0], connstring=
"COOLONL_LAR/CONDBR2")
85 log.warning(
"Could not get run info, using defaults !")
87 flags.LArSCDump.nSamples=args.nsamp
89 flags.LArSCDump.nSamples=4
91 if runinfo
is not None:
92 flags.LArSCDump.nSamples=runinfo.nSamples()
94 flags.LArSCDump.digitsKey=args.dkey
95 if args.nsamp > 0
and args.nsamp < flags.LArSCDump.nSamples:
96 flags.LArSCDump.nSamples=args.nsamp
98 log.info(
"Autoconfigured: ")
99 log.info(
"nSamples: %d digitsKey %s accKey %s accCalibKey %s",flags.LArSCDump.nSamples, flags.LArSCDump.digitsKey, args.acckey, args.acccalibkey)
102 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
103 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
106 flags.LAr.doAlign=
False
110 flags.Input.isMC=
True
113 flags.Trigger.triggerConfig =
'DB'
114 flags.Trigger.L1.doCTP =
True
115 flags.Trigger.L1.doMuon =
False
116 flags.Trigger.L1.doCalo =
False
117 flags.Trigger.L1.doTopo =
False
119 flags.Trigger.enableL1CaloLegacy =
True
120 flags.Trigger.enableL1CaloPhase1 =
True
124 flags.IOVDb.SqliteInput=
"/afs/cern.ch/user/p/pavol/public/EMF_otherCond.db"
125 flags.IOVDb.SqliteFolders = (
"/LAR/BadChannelsOfl/BadChannels",
"/LAR/BadChannelsOfl/KnownBADFEBs",
"/LAR/BadChannelsOfl/KnownMNBFEBs",
"/LAR/BadChannelsOfl/MissingFEBs",
"/LAR/Identifier/OnOffIdMap",)
131 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
132 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
134 acc = MainServicesCfg(flags)
135 acc.merge(LArGMCfg(flags))
137 from LArCabling.LArCablingConfig
import LArOnOffIdMappingCfg
138 acc.merge(LArOnOffIdMappingCfg(flags))
141 from LArCafJobs.LArSCDumperSkeleton
import L1CaloMenuCfg
142 acc.merge(L1CaloMenuCfg(flags))
143 from TrigDecisionTool.TrigDecisionToolConfig
import TrigDecisionToolCfg
144 tdt = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
150 from LArBadChannelTool.LArBadChannelConfig
import LArBadFebCfg, LArBadChannelCfg
151 acc.merge(LArBadChannelCfg(flags))
152 acc.merge(LArBadFebCfg(flags))
155 log.warning(
"Adding real geometry is not working yet")
156 acc.addCondAlgo(CompFactory.CaloAlignCondAlg(LArAlignmentStore=
"",CaloCellPositionShiftFolder=
""))
157 acc.addCondAlgo(CompFactory.CaloSuperCellAlignCondAlg())
160 from LArCalibTools.LArDigits2NtupleConfig
import LArDigits2NtupleCfg
161 acc.merge(LArDigits2NtupleCfg(flags, AddBadChannelInfo=args.bc, AddFEBTempInfo=
False, isSC=
False, isFlat=
True,
162 OffId=args.offline, AddHash=args.ahash, AddCalib=args.calib, RealGeometry=args.geom,
163 NSamples=flags.LArSCDump.nSamples, FTlist=flags.LArCalib.Preselection.FT, Slotlist=flags.LArCalib.Preselection.Slot, BElist=flags.LArCalib.Preselection.BEC, Sidelist=flags.LArCalib.Preselection.Side,
164 ContainerKey=flags.LArSCDump.digitsKey, AccContainerKey=args.acckey, AccCalibContainerKey=args.acccalibkey, isCalib=args.iscalib,
165 FillLB=args.evtree, FillBCID=args.bcid, isRDO=args.rdo,
166 OutputLevel=args.olevel
169 if os.path.exists(args.outfile):
170 os.remove(args.outfile)
171 acc.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+args.outfile+
"' OPT='NEW'" ]))
172 acc.setAppProperty(
"HistogramPersistency",
"ROOT")
175 log.info(
"Input files to be processed:")
176 for f
in flags.Input.Files:
178 log.info(
"Output file: ")
179 log.info(args.outfile)