Esempio n. 1
0
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,