def process_single_stream(cfg, infile, outfile): click.echo('Input: {}'.format(infile)) hybrid_mode = (cfg['clsim_hybrid_mode'] and cfg['icemodel'].lower() != 'spicelea') ignore_muon_light = (cfg['clsim_ignore_muon_light'] and cfg['clsim_hybrid_mode']) click.echo('UseGPUs: {}'.format(cfg['clsim_usegpus'])) click.echo('IceModel: {}'.format(cfg['icemodel'])) if not cfg['icemodel_location'] is None: click.echo('IceModelLocation: {}'.format(cfg['icemodel_location'])) click.echo('DomOversize {}'.format(cfg['clsim_dom_oversize'])) click.echo('UnshadowedFraction: {0:.2f}'.format( cfg['clsim_unshadowed_fraction'])) click.echo('HybridMode: {}'.format(hybrid_mode)) click.echo('IgnoreMuonLight: {}'.format(ignore_muon_light)) click.echo('KeepMCPE: {}'.format(cfg['clsim_keep_mcpe'])) click.echo('Output: {}'.format(outfile)) tray = I3Tray() tray.context['I3FileStager'] = dataio.get_stagers() random_services, _ = create_random_services( dataset_number=cfg['dataset_number'], run_number=cfg['run_number'], seed=cfg['seed'], n_services=process_single_stream.n_streams) random_service = random_services[process_single_stream.i_th_stream] tray.context['I3RandomService'] = random_service tray.Add('I3Reader', FilenameList=[cfg['gcd'], infile]) if hybrid_mode: cascade_tables = segments.LoadCascadeTables(IceModel=cfg['icemodel'], TablePath=SPLINE_TABLES) else: cascade_tables = None if cfg['clsim_usegpus']: use_gpus = True use_cpus = False else: use_gpus = True use_cpus = False tray.AddSegment(segments.PropagatePhotons, "PropagatePhotons", RandomService=random_service, MaxParallelEvents=MAX_PARALLEL_EVENTS, KeepIndividualMaps=cfg['clsim_keep_mcpe'], IceModel=cfg['icemodel'], IceModelLocation=cfg['icemodel_location'], UnshadowedFraction=cfg['clsim_unshadowed_fraction'], IgnoreMuons=ignore_muon_light, HybridMode=hybrid_mode, UseGPUs=use_gpus, UseAllCPUCores=use_cpus, DOMOversizeFactor=cfg['clsim_dom_oversize'], CascadeService=cascade_tables) outfile = outfile.replace(' ', '0') tray.AddModule("I3Writer", "writer", Filename=outfile, Streams=[ icetray.I3Frame.DAQ, icetray.I3Frame.Physics, icetray.I3Frame.Stream('S'), icetray.I3Frame.Stream('M') ]) tray.AddModule("TrashCan", "the can") tray.Execute() tray.Finish()
print "flavor", options.FLAVOR if delayed_zip: print "writing to %s," % outfile print "then zipping to %s" % final_outfile else: print "writing to", outfile print "detector is", options.DETECTOR print "using GCD file", gcdFile print "seed", options.SEED print "scratch space at", scratchDir print "" if options.HYBRIDSIMULATION: print "loading spline tables.." cascade_tables = segments.LoadCascadeTables(IceModel=options.ICEMODEL, TablePath=cascadeTablePath) print "done." else: cascade_tables = None tray = I3Tray() maxDatasetNumber = 10000 maxRunNumber = 100000 maxInternalRunNumber = maxDatasetNumber * maxRunNumber if options.RUNNUMBER < 0: raise RuntimeError("negative run numbers are not supported") elif options.RUNNUMBER >= maxRunNumber: raise RuntimeError("run numbers > %u are not supported" % maxRunNumber)
def process_single_stream(cfg, infile, outfile): click.echo('Input: {}'.format(infile)) hybrid_mode = (cfg['clsim_hybrid_mode'] and cfg['icemodel'].lower() != 'spicelea') ignore_muon_light = (cfg['clsim_ignore_muon_light'] and cfg['clsim_hybrid_mode']) click.echo('UseGPUs: {}'.format(cfg['clsim_usegpus'])) click.echo('IceModel: {}'.format(cfg['icemodel'])) if not cfg['icemodel_location'] is None: click.echo('IceModelLocation: {}'.format(cfg['icemodel_location'])) click.echo('DomOversize {}'.format(cfg['clsim_dom_oversize'])) click.echo('UnshadowedFraction: {0:.2f}'.format( cfg['clsim_unshadowed_fraction'])) click.echo('HybridMode: {}'.format(hybrid_mode)) click.echo('IgnoreMuonLight: {}'.format(ignore_muon_light)) click.echo('KeepMCPE: {}'.format(cfg['clsim_keep_mcpe'])) click.echo('Output: {}'.format(outfile)) tray = I3Tray() tray.context['I3FileStager'] = dataio.get_stagers() random_services, _ = create_random_services( dataset_number=cfg['dataset_number'], run_number=cfg['run_number'], seed=cfg['seed'], n_services=process_single_stream.n_streams) random_service = random_services[process_single_stream.i_th_stream] tray.context['I3RandomService'] = random_service tray.Add('I3Reader', FilenameList=[cfg['gcd'], infile]) if hybrid_mode: cascade_tables = segments.LoadCascadeTables( IceModel=cfg['icemodel'], TablePath=cfg['spline_table_dir']) else: cascade_tables = None if cfg['clsim_usegpus']: use_gpus = True use_cpus = False else: use_gpus = True use_cpus = False if 'additional_clsim_params' in cfg: additional_clsim_params = cfg['additional_clsim_params'] else: additional_clsim_params = {} if not cfg['clsim_input_is_sliced']: MCTreeName = "I3MCTree" MMCTrackListName = "MMCTrackList" else: MCTreeName = "I3MCTree_sliced" MMCTrackListName = None #use_gpus=False #use_cpus=True tray.AddSegment(segments.PropagatePhotons, "PropagatePhotons", GCDFile=cfg['gcd'], RandomService=random_service, KeepIndividualMaps=cfg['clsim_keep_mcpe'], IceModel=cfg['icemodel'], IceModelLocation=cfg['icemodel_location'], UnshadowedFraction=cfg['clsim_unshadowed_fraction'], IgnoreMuons=ignore_muon_light, HybridMode=hybrid_mode, UseGPUs=use_gpus, UseAllCPUCores=use_cpus, DOMOversizeFactor=cfg['clsim_dom_oversize'], CascadeService=cascade_tables, **additional_clsim_params) # tray.AddSegment(clsim.I3CLSimMakeHits, "makeCLSimHits", # GCDFile = cfg['gcd'], # PhotonSeriesName = cfg['photonSeriesName'], # MCTreeName = MCTreeName, # MMCTrackListName = MMCTrackListName, # RandomService = random_service, # MCPESeriesName = cfg['mcpe_series_map'], # UnshadowedFraction = cfg['clsim_unshadowed_fraction'], # UseGPUs = use_gpus, # UseCPUs = use_cpus, # IceModelLocation = os.path.expandvars("$I3_BUILD/ice-models/resources/models/spice_lea"), # ) outfile = outfile.replace(' ', '0') tray.AddModule("I3Writer", "writer", Filename=outfile, Streams=[ icetray.I3Frame.DAQ, icetray.I3Frame.Physics, icetray.I3Frame.Stream('S'), icetray.I3Frame.Stream('M') ]) tray.Execute() del tray