Ejemplo n.º 1
0
def writeSigHitsMapToFrame(frame, domsUsed, hitThresh, domThresh, maxResidual,
                           geoMap):

    primary = frame["NuGPrimary"]
    mctree = frame["I3MCTree"]
    track = dataclasses.I3MCTree.first_child(mctree, primary)
    track.shape = dataclasses.I3Particle.InfiniteTrack
    mcpeMap = frame["MCPESeriesMap"]
    significantMCPEMap = simclasses.I3MCPESeriesMap()
    for omkey in domsUsed:
        position = geoMap[omkey].position
        if omkey not in mcpeMap:
            continue
        if passDOM(mcpeMap[omkey], hitThresh, maxResidual, position, track):
            significantMCPEMap[omkey] = getSignificantMCPEs(
                mcpeMap[omkey], hitThresh)

    # sanity check
    if len(mcpeMap) < domThresh:
        raise ValueError(
            "Not enough DOMs in map. Make sure to filter with passFrame before calling this function"
        )

    frame.Put("MCPESeriesMap_significant_hits", significantMCPEMap)

    return frame
Ejemplo n.º 2
0
def StressTestPEGenerator( frame, \
                            hit_times = None, weights = None, ) :

    # if weights not set, set it to list filled with None with same size as hit_times
    weights = weights if weights else  [ None for h in hit_times ] 
     
    if len( hit_times ) != len( weights ) :
        print("ERROR : Different sizes for 'hit_times' and 'weights'.")
        print("Either 'weights' needs to be empty (unweighted) or of the same size as 'hit_times'.")
        sys.exit(0)

    mcpes = sc.I3MCPESeries()
    for t,w in zip( hit_times, weights ) :
        hit = sc.I3MCPE()
        hit.time = t
        hit.npe = w if w else 1
        mcpes.append( hit )

    # this goes in the frame
    mcpe_map = sc.I3MCPESeriesMap()
    for omkey, geo in frame.Get("I3Geometry").omgeo :
        # Only InIce and IceTop DOMs
        if 0 < omkey.om < 65:
            mcpe_map[ omkey ] = mcpes

    frame["I3MCPESeriesMap"] = mcpe_map
Ejemplo n.º 3
0
def makeHits(frame):
    hits = simclasses.I3MCPESeriesMap()
    geo = frame["I3Geometry"]
    doms = list(geo.omgeo.keys())
    for dom in doms:
        hits[dom] = simclasses.I3MCPESeries()
        for i in range(0, 10):
            hit = simclasses.I3MCPE()
            hit.npe = 1
            hit.time = 29000 * i
            hits[dom].append(hit)

    #dom = list(geo.omgeo.keys())[3]
    #hits[dom] = simclasses.I3MCPESeries()
    #for i in range(0,10):
    #hit = simclasses.I3MCPE()
    #hit.npe=1
    #hit.time=29000*i
    #hits[dom].append(hit)
    #dom = list(geo.omgeo.keys())[4]
    #hits[dom] = simclasses.I3MCPESeries()
    #for i in range(0,10):
    #hit = simclasses.I3MCPE()
    #hit.npe=1
    #hit.time=29000*i
    #hits[dom].append(hit)
    #dom = list(geo.omgeo.keys())[5]
    #hits[dom] = simclasses.I3MCPESeries()
    #for i in range(0,10):
    #hit = simclasses.I3MCPE()
    #hit.npe=1
    #hit.time=29000*i
    #hits[dom].append(hit)
    frame["MCPESeriesMap"] = hits
Ejemplo n.º 4
0
 def Process(self):
     frame = icetray.I3Frame(icetray.I3Frame.DAQ)        
     mcpes = simclasses.I3MCPESeries()
     for i in range(1000) :            
         mcpes.append(simclasses.I3MCPE(1))
     mcpemap = simclasses.I3MCPESeriesMap()
     mcpemap[icetray.OMKey(21,30)] = mcpes
     frame["I3MCPESeriesMap"] = mcpemap
     self.PushFrame(frame)
Ejemplo n.º 5
0
def CombineHits(frame,
        InputHits = ["I3MCPESeriesMapTracks", "I3MCPESeriesMapCascades"],
        OutputHits = "I3MCPESeriesMap"):
    from icecube import dataclasses, polyplopia, simclasses

    newhits = simclasses.I3MCPESeriesMap()
    for hitmap in InputHits:
        hits = frame[hitmap]
        polyplopia.MergeHits(newhits,hits,0.0)
    frame[OutputHits] = newhits
    return True
Ejemplo n.º 6
0
def makeHits(frame):
    hits = simclasses.I3MCPESeriesMap()
    geo = frame["I3Geometry"]
    dom = list(geo.omgeo.keys())[2]
    hits[dom] = simclasses.I3MCPESeries()
    for i in range(0, 10):
        hit = simclasses.I3MCPE()
        hit.npe = 10
        hit.time = 10 * i
        hits[dom].append(hit)
    dom = list(geo.omgeo.keys())[3]
    hits[dom] = simclasses.I3MCPESeries()
    for i in range(0, 10):
        hit = simclasses.I3MCPE()
        hit.npe = 10
        hit.time = 10 * i
        hits[dom].append(hit)
    frame["MCPESeriesMap"] = hits
    frame["I3EventHeader"] = dataclasses.I3EventHeader()
Ejemplo n.º 7
0
    def DAQ(self, frame):
        min_time = self.time_window[0]
        max_time = self.time_window[1]

        peseries = simclasses.I3MCPESeries()

        # put 1000 within the time window
        for i in range(1000):
            pe = simclasses.I3MCPE()
            pe.time = random.uniform(min_time / 10., max_time / 10.)
            peseries.append(pe)

        # determine the median time
        times = sorted([pe.time for pe in peseries])
        median_time = times[int(len(times) / 2.)]

        # put 250 outside the time window
        for i in range(250):
            pe = simclasses.I3MCPE()
            time = min_time - random.uniform(100 * I3Units.ms,
                                             1000 * I3Units.ms)
            pe.time = time
            peseries.append(pe)

        for i in range(250):
            pe = simclasses.I3MCPE()
            time = max_time + random.uniform(100 * I3Units.ms,
                                             1000 * I3Units.ms)
            pe.time = time
            peseries.append(pe)

        pemap = simclasses.I3MCPESeriesMap()
        pemap[icetray.OMKey(21, 30)] = peseries

        frame["I3MCPESeriesMap"] = pemap

        self.PushFrame(frame)
        if survived(photon,omkey):
            mcpe = simclasses.I3MCPE()
            #mcpe.id = dataclasses.I3ParticleID(photon.particleMajorID, photon.particleMinorID)
            mcpe.npe = 1
            mcpe.time = photon.time #TODO: change to corrected time
            mcpeList.append(mcpe)
            photonList.append(photon)
    
    return mcpeList, photonList

# TODO: def getCorrectedTime(photon, omkey):

while( infile.more() ):
    frame = infile.pop_daq()
    photonDOMMap = frame["I3Photons"]
    mcpeMap = simclasses.I3MCPESeriesMap()
    succPhotonMap = simclasses.I3CompressedPhotonSeriesMap()
    for modkey in photonDOMMap.keys():
        mcpeList, photonList = generateMCPEList(photonDOMMap[modkey], modkey)
        omkey = OMKey(modkey.string, modkey.om, 0)
        if len(mcpeList) > 0:
            mcpeMap[omkey] = mcpeList
            succPhotonMap[modkey] = photonList
    
    frame["MCPESeriesMap"] = mcpeMap

    # only add frame to file if a hit was generated
    if passFrame(frame, mcpeMap.keys(), int(args.hitThresh), int(args.domThresh)):
        frame["SuccPhotonMap"] = succPhotonMap
        frame.Delete("I3Photons")
        outfile.push(frame)
Ejemplo n.º 9
0
def TestSetup(frame, add_empty_trigger=False, add_mchits=True):

    p = dataclasses.I3Particle()
    p.time = TIME

    frame["MCPrimary"] = p

    mctree = dataclasses.I3MCTree()
    mctree.add_primary(p)
    frame["MCTree"] = mctree

    # I3MMCTrack
    mmctrack = simclasses.I3MMCTrack()
    mmctrack.SetParticle(p)
    mmctrack.ti = TIME
    mmctrack.tc = TIME
    mmctrack.tf = TIME
    mmctracklist = simclasses.I3MMCTrackList()
    mmctracklist.append(mmctrack)
    frame["MMCTracks"] = mmctracklist

    # I3TriggerHierarchy
    t = dataclasses.I3Trigger()
    t.time = TIME
    t.fired = True
    trigger_h = dataclasses.I3TriggerHierarchy()
    if not add_empty_trigger:
        trigger_h.insert(t)
    frame["Trigger"] = trigger_h

    # I3VectorI3Trigger
    t1 = dataclasses.I3Trigger()
    t1.time = TIME
    t1.fired = True
    trigger_v = dataclasses.I3VectorI3Trigger()
    trigger_v.append(t1)
    frame["TriggerVector"] = trigger_v

    # I3FlasherInfoVector
    fi = dataclasses.I3FlasherInfo()
    fi.flash_time = TIME
    fi_v = dataclasses.I3FlasherInfoVect()
    fi_v.append(fi)
    frame["FlasherInfos"] = fi_v

    # I3DOMLaunchSeriesMap
    d = dataclasses.I3DOMLaunch()
    d.time = TIME
    launchseries = dataclasses.I3DOMLaunchSeries()
    launchseries.append(d)
    launchmap = dataclasses.I3DOMLaunchSeriesMap()
    launchmap[icetray.OMKey(21, 30)] = launchseries
    frame["DOMLaunchMap"] = launchmap

    # I3MCHit
    mchit = dataclasses.I3MCHit()
    mchit.time = TIME
    mchitseries = dataclasses.I3MCHitSeries()
    mchitseries.append(mchit)
    mchitmap = dataclasses.I3MCHitSeriesMap()
    mchitmap[icetray.OMKey(21, 30)] = mchitseries
    if add_mchits:
        frame["MCHitMap"] = mchitmap

    # I3MCPE
    mcpe = simclasses.I3MCPE()
    mcpe.time = TIME
    mcpeseries = simclasses.I3MCPESeries()
    mcpeseries.append(mcpe)
    mcpemap = simclasses.I3MCPESeriesMap()
    mcpemap[icetray.OMKey(21, 30)] = mcpeseries
    frame["MCPEMap"] = mcpemap

    # I3MCPulse
    mcpulse = simclasses.I3MCPulse()
    mcpulse.time = TIME
    mcpulseseries = simclasses.I3MCPulseSeries()
    mcpulseseries.append(mcpulse)
    mcpulsemap = simclasses.I3MCPulseSeriesMap()
    mcpulsemap[icetray.OMKey(21, 30)] = mcpulseseries
    frame["MCPulseMap"] = mcpulsemap

    # I3Double
    sometime = dataclasses.I3Double(TIME)
    frame["SomeTime"] = sometime
    nottime = dataclasses.I3Double(TIME)
    frame["NotTime"] = nottime