def create_hole_ice_gcd_file(input_gcd, output_gcd, hole_ice_cylinders): hole_ice_cylinder_positions = dataclasses.I3VectorI3Position() hole_ice_cylinder_radii = dataclasses.I3VectorFloat() hole_ice_cylinder_scattering_lengths = dataclasses.I3VectorFloat() hole_ice_cylinder_absorption_lengths = dataclasses.I3VectorFloat() if len(hole_ice_cylinders) > 0: hole_ice_cylinder_positions = dataclasses.I3VectorI3Position( [cylinder["position"] for cylinder in hole_ice_cylinders]) hole_ice_cylinder_radii = dataclasses.I3VectorFloat( [cylinder["radius"] for cylinder in hole_ice_cylinders]) hole_ice_cylinder_scattering_lengths = dataclasses.I3VectorFloat( [cylinder["scattering_length"] for cylinder in hole_ice_cylinders]) hole_ice_cylinder_absorption_lengths = dataclasses.I3VectorFloat( [cylinder["absorption_length"] for cylinder in hole_ice_cylinders]) tray = I3Tray() tray.AddModule("I3Reader", Filename=input_gcd) tray.AddModule(add_hole_ice_to_geometry_frame, positions=hole_ice_cylinder_positions, radii=hole_ice_cylinder_radii, scattering_lengths=hole_ice_cylinder_scattering_lengths, absorption_lengths=hole_ice_cylinder_absorption_lengths, Streams=[icetray.I3Frame.Geometry]) tray.AddModule("I3Writer", Filename=output_gcd) tray.AddModule("TrashCan") tray.Execute() tray.Finish()
def PerformPropagationSimulation(): tray = I3Tray() tray.AddModule("I3Reader", FilenameList=input_files) tray.AddService("I3SPRNGRandomServiceFactory", Seed=options.seed, NStreams=2, StreamNum=1) randomService = phys_services.I3SPRNGRandomService(seed=options.seed, nstreams=10000, streamnum=1) common_clsim_parameters = dict( PhotonSeriesName="PropagatedPhotons", RandomService=randomService, UseGPUs=options.use_gpus, UseCPUs=not options.use_gpus, ParallelEvents=options.number_of_parallel_runs, IceModelLocation=options.ice_model_file, UnWeightedPhotons=True, #UnWeightedPhotonsScalingFactor=0.01, DOMOversizeFactor=1.0, UnshadowedFraction=1.0, FlasherInfoVectName=("I3FlasherInfo" if options.use_flasher_info_vect else ""), FlasherPulseSeriesName=("PhotonFlasherPulseSeries" if not options.use_flasher_info_vect else ""), UseHoleIceParameterization=options. use_hole_ice_approximation, # Angular Acceptance Modification. ) # In production, we do not need to save the photons. Thus, we skip this for # performance and disk space reasons. But one can activate # `--save-photon-paths` for visualization or debug reasons. # if options.save_photon_paths: tray.AddSegment( clsim.I3CLSimMakePhotons, StopDetectedPhotons=False, PhotonHistoryEntries=10000, ExtraArgumentsToI3CLSimModule=dict( SaveAllPhotons=True, SaveAllPhotonsPrescale=1.0, MaxNumOutputPhotonsCorrectionFactor=1.0, SimulateHoleIce=options.use_hole_ice_simulation, HoleIceScatteringLengthFactor=options.scattering_factor, HoleIceAbsorptionLengthFactor=options.absorption_factor), **common_clsim_parameters) icetray.set_log_level(icetray.I3LogLevel.LOG_DEBUG) else: extra_args = dict() if options.use_hole_ice_simulation: extra_args = dict( SimulateHoleIce=options.use_hole_ice_simulation, HoleIceScatteringLengthFactor=options.scattering_factor, HoleIceAbsorptionLengthFactor=options.absorption_factor) tray.AddSegment(clsim.I3CLSimMakeHits, StopDetectedPhotons=True, ExtraArgumentsToI3CLSimModule=extra_args, **common_clsim_parameters) if not options.save_photon_paths: # This does only work with the `I3CLSimMakeHits` module, thus does # not work with `save_photon_paths`. tray.AddModule(ReadOutAngularAcceptance, Streams=[icetray.I3Frame.DAQ]) tray.AddModule("I3Writer", Filename=options.output_i3_file) tray.AddModule("TrashCan") if options.number_of_frames == 0: tray.Execute() else: tray.Execute(options.number_of_frames) tray.Finish()
#!/usr/bin/env python from os.path import expandvars import math, sys import icecube from icecube import icetray, dataclasses, dataio, phys_services, simclasses from icecube.icetray import I3Tray from I3Tray import * tray = I3Tray() geofile = sys.argv[1] infile = sys.argv[2] outfile = sys.argv[3] omKeyVec = [] def testFrame(frame): if (frame.Has("MCPESeriesMap_withNoise")): mcpePID = frame["MCPESeriesMap_withNoise"] for tKey, tPID in mcpePID: if (tPID[0].major_ID != 0): omKeyVec.append(tKey) #print omKeyVec def evtSelect(frame): if (not (frame.Has('I3EventHeader'))): return False evtList = [ 6700, 10711, 40543, 81598, 108219, 117890, 118562, 129007, 155464,