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)