コード例 #1
0
def Process(tray, name, **kwargs):
    #tray.AddModule("Dump", "dump")

    from icecube import IceHiveZ
    tray.AddModule(
        "I3HiveSplitter",
        "IceHiveSplit",
        InputName="OfflinePulses",
        OutputName="Split",
        Multiplicity=3,
        MultiplicityTimeWindow=1000 * I3Units.ns,
        AcceptTimeWindow=1000 * I3Units.ns,
        RejectTimeWindow=4000 * I3Units.ns,
        MergeOverlap=1,
        ConfiguratorBlock=IceHiveZ.DefaultCB_Splitter(add_DC=True),
        SaveSplitCount=True,
        UpdateTriggerHierarchy=True,
        TrigHierName=
        "I3TriggerHierarchy",  # "QTriggerHierarchy",                                                                                                                      
        ReadoutWindowMinus=4000. * I3Units.ns,
        ReadoutWindowPlus=6000. * I3Units.ns)
コード例 #2
0
ファイル: traysegments.py プロジェクト: mzoll/IceHiveZ
def IceHiveZ_Aggressive(tray, name,
                        InputPulses,
                        SplitPulses,
                        CleanedPulses):
  """
  Perform the hardest agressive splitting that is available;
  You'll probably get fractured up events and some noise-clusters,
  which need to be treated, for example with CoincidentSuite
  """
  from icecube import IceHiveZ
    
  tray.AddModule("I3HiveSplitter","IceHiveZ",
    InputName = InputPulses,
    OutputName = SplitPulses,
    Multiplicity = 3,
    MultiplicityTimeWindow = 1000*I3Units.ns,
    AcceptTimeWindow = 1000*I3Units.ns,
    RejectTimeWindow = 4000*I3Units.ns,
    MergeOverlap = 1,
    HiveConfigurationBlock = IceHiveZ.DefaultHCB_Splitter(),
    SaveSplitCount = True,
    UpdateTriggerHierarchy = True,
    ReadoutWindowMinus = 4000.*I3Units.ns)
    ReadoutWindowPlus = 6000.*I3Units.ns)
コード例 #3
0
from icecube.icetray import I3Units

#=== ARGUMENT PARSING

from argparse import ArgumentParser

parser = ArgumentParser(description=__doc__)
parser.add_argument('gcdfile')
parser.add_argument('outfile')
opts = parser.parse_args()

#== BODY

from icecube import IceHiveZ

hcb = IceHiveZ.DummyHCB(add_DC=True)

#we need the full GCD information
#f = dataio.I3File(os.path.expandvars("$I3_GCD"))
f = dataio.I3File(opts.gcdfile)
while f.more():
    gcdframe = f.pop_frame()

#build the connection block
cb = hcb.buildConnectionBlock(gcdframe["I3Geometry"],
                              gcdframe["I3Calibration"],
                              gcdframe["I3DetectorStatus"])

#save the block to a file from which it can be loaded later;
#only essential information will be save
cb.to_file(opts.outfile)
コード例 #4
0
ファイル: icehiveConfigTest.py プロジェクト: mzoll/IceHiveZ
#!/usr/bin/env python

import os
from icecube import icetray, dataclasses, dataio

f = dataio.I3File(os.path.expandvars("$I3_GCD"))
while f.more():
    gcdframe = f.pop_frame()

geo = gcdframe['I3Geometry']
calib = gcdframe['I3Calibration']
status = gcdframe['I3DetectorStatus']

from icecube import IceHiveZ

hasher = IceHiveZ.CompactOMKeyHashService(geo)

connectorBlock = IceHiveZ.ConnectorBlock(hasher)

connection = IceHiveZ.BoolConnection(hasher)
connection.connect_everything = True
relation = IceHiveZ.Relation(hasher, True)
connector = IceHiveZ.Connector("Fake", hasher, connection, relation)
connectorBlock.addConnector(connector)
コード例 #5
0
ファイル: HiveCleaning.py プロジェクト: mzoll/IceHiveZ
tray.AddModule("Delete",
               "delete_keys_in_use",
               Keys=[
                   "HCMaskedOfflinePulses",
               ])

#tray.AddModule("Dump", "dump")

from icecube import IceHiveZ

tray.AddModule("I3HiveCleaning",
               "HiveClean",
               InputName="MaskedOfflinePulses",
               OutputName="HC" + "MaskedOfflinePulses",
               Multiplicity=1,
               MaxTimeResidualEarly=-float("inf"),
               MaxTimeResidualLate=float("inf"),
               HiveConfigurationBlock=IceHiveZ.DefaultCB_Clean(),
               Stream=icetray.I3Frame.Physics,
               If=lambda f: True)

tray.AddModule("I3Writer",
               "Writer",
               Filename=sys.argv[-1],
               Streams=[icetray.I3Frame.Physics, icetray.I3Frame.DAQ])

tray.AddModule("TrashCan", "End")
tray.Execute()
tray.Finish()
コード例 #6
0
if len(files[0]):
  icetray.logging.log_info("found %d files on %d DOM-hubs worth of hitspool data"%(len(files[0]), len(files)) )
#else:
#  icetray.logging.log_fatal("no suitable files found")

f = dataio.I3File(os.path.expandvars("$I3_GCD"))
while f.more():
  gcdframe= f.pop_frame()

geo = gcdframe['I3Geometry']
calib = gcdframe['I3Calibration']
status = gcdframe['I3DetectorStatus']

from icecube import IceHiveZ

hasher = IceHiveZ.CompactOMKeyHashService(geo)

ht_params = IceHiveZ.HiveTrigger_ParameterSet()
ht_params.multiplicity = 3
ht_params.multiplicityTimeWindow = 1000*I3Units.ns
ht_params.acceptTimeWindow = 1000*I3Units.ns
ht_params.rejectTimeWindow = 4000*I3Units.ns
if not FAST:
  ht_params.connectionBlock = IceHiveZ.DefaultCB_Splitter().buildConnectorBlock(geo, calib, status)
else:
  ht_params.connectionBlock = IceHiveZ.ConnectorBlock(hasher)
  connection = IceHiveZ.BoolConnection(hasher)
  connection.connect_everything = True
  relation = IceHiveZ.Relation(hasher, True)
  connector = IceHiveZ.Connector("Fake", hasher, connection, relation) 
  ht_params.connectionBlock.addConnector(connector)
コード例 #7
0
def DefaultCB_Splitter(add_DC=True):
    import os
    from icecube import ToolZ, IceHiveZ

    #make the omt
    #omt_IC86 = IceHIveZ.OMTopology.from_file(os.path.join(os.path.expandvars("$I3_BUILD"), "IceHiveZ/resources/data/IC86_domTopo.dat"))
    omt_IC86 = ToolZ.IC86Topology.OMTopologyMap(
    )  #use a preconfigured DOMTopo Map for now for IC86

    #create an ad hoc empty HiveConfigurationBlock, that we will fill with Connectors
    hcb = IceHiveZ.ConfiguratorBlock()

    #only treat in ice DOMs; this ignores for example IceTop DOMs
    hcb.takeOMKeys(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["InIce"]), omt_IC86))

    #generate the string topology in the detector
    ht_IC86_ICarray = IceHiveZ.HiveTopology.from_config(
        os.path.join(os.path.expandvars("$I3_BUILD"),
                     "IceHiveZ/resources/data/SingleDenseStars.dat"))

    #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    #create a new configurator
    cs_IC_particle = IceHiveZ.Configurator("IC_particle")

    #configure the connector: here dynamic connector with light-speed
    con_IC_particle = IceHiveZ.DynamicConnectionConfig()
    con_IC_particle.speed = I3Constants.c
    con_IC_particle.time_residual_early = 50.  #ns
    con_IC_particle.time_residual_late = 200.  #ns
    cs_IC_particle.AddConnectionConfig(con_IC_particle)

    #configure the considered DOMs: with the connector, limit-pairs, and the hive configuration file
    rel_IC_particle = IceHiveZ.HiveRelationConfig(ht_IC86_ICarray)
    rel_IC_particle.AddRingLimits([(-90., 90.), (-272.7, 272.7),
                                   (-417., 417.)])
    rel_IC_particle.selfConnect = False
    rel_IC_particle.mutuallyConnect = False
    rel_IC_particle.AddConnectFrom(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["IceCube"]), omt_IC86))
    rel_IC_particle.AddConnectTo(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["IceCube"]), omt_IC86))
    cs_IC_particle.AddRelationConfig(rel_IC_particle)

    #add the configurator to the configuration block
    hcb.add(cs_IC_particle)
    #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    cs_IC_photon = IceHiveZ.Configurator("IC_photon")

    con_IC_photon = IceHiveZ.PhotonDiffusionConnectionConfig()
    con_IC_photon.time_residual_early = 50.  #ns //early
    con_IC_photon.time_residual_late = 50.  #ns //late
    con_IC_photon.lower_cont_quantile = 0.05
    con_IC_photon.upper_cont_quantile = 0.9
    con_IC_photon.min_pdfvalue = 0.
    cs_IC_photon.AddConnectionConfig(con_IC_photon)

    rel_IC_photon = IceHiveZ.HiveRelationConfig(ht_IC86_ICarray)
    rel_IC_photon.AddRingLimits([(-90., 90.), (-272.7, 272.7)])
    rel_IC_photon.selfConnect = False
    rel_IC_photon.mutuallyConnect = False
    rel_IC_photon.AddConnectFrom(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["IceCube"]), omt_IC86))
    rel_IC_photon.AddConnectTo(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["IceCube"]), omt_IC86))
    cs_IC_photon.AddRelationConfig(rel_IC_photon)

    hcb.add(cs_IC_photon)
    #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    cs_IC_static = IceHiveZ.Configurator("IC_static")

    con_IC_static = IceHiveZ.DeltaTimeConnectionConfig()
    con_IC_static.time_difference_early = 200.  #ns
    con_IC_static.time_difference_late = 200.  #ns
    cs_IC_static.AddConnectionConfig(con_IC_static)

    rel_IC_static = IceHiveZ.HiveRelationConfig(ht_IC86_ICarray)
    rel_IC_static.AddRingLimits([
        (-100., 100.),
        (-100., 100.),
    ])
    rel_IC_static.selfConnect = True
    rel_IC_static.mutuallyConnect = False
    rel_IC_static.AddConnectFrom(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["IceCube"]), omt_IC86))
    rel_IC_static.AddConnectTo(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["IceCube"]), omt_IC86))
    cs_IC_static.AddRelationConfig(rel_IC_static)

    hcb.add(cs_IC_static)
    #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>

    ht_IC86_DCarray = IceHiveZ.HiveTopology.from_config(
        os.path.join(os.path.expandvars("$I3_BUILD"),
                     "IceHiveZ/resources/data/DoubleDenseMod.dat"))

    #configure the connector: here dynamic connector with light-speed
    cs_DC_particle = IceHiveZ.Configurator("DC_particle")

    con_DC_particle = IceHiveZ.DynamicConnectionConfig()
    con_DC_particle.speed = I3Constants.c
    con_DC_particle.time_residual_early = 100.  #ns
    con_DC_particle.time_residual_late = 100.  #ns
    cs_DC_particle.AddConnectionConfig(con_DC_particle)

    rel_DC_particle = IceHiveZ.HiveRelationConfig(ht_IC86_DCarray)
    rel_DC_particle.AddRingLimits([(-70., 70.), (-131.5, 131.5),
                                   (-250.8, 250.8)])
    rel_DC_particle.self_connect = False
    rel_DC_particle.mutuallyConnect = False
    rel_DC_particle.AddConnectFrom(
        ToolZ.OMTopology_Comparator(
            ToolZ.OMTopology(["DeepCoreFidutial", "DeepCoreCap"]), omt_IC86))
    rel_DC_particle.AddConnectTo(
        ToolZ.OMTopology_Comparator(
            ToolZ.OMTopology(["DeepCoreFidutial", "DeepCoreCap"]), omt_IC86))
    cs_DC_particle.AddRelationConfig(rel_DC_particle)

    hcb.add(cs_DC_particle)
    #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>

    cs_DC_photon = IceHiveZ.Configurator("DC_photon")

    con_DC_photon = IceHiveZ.PhotonDiffusionConnectionConfig()
    con_DC_photon.time_residual_early = 50.  #ns //early
    con_DC_photon.time_residual_late = 50.  #ns //late
    con_DC_photon.lower_cont_quantile = 0.05
    con_DC_photon.upper_cont_quantile = 0.9
    con_DC_photon.min_pdfvalue = 0.
    cs_DC_photon.AddConnectionConfig(con_DC_photon)

    rel_DC_photon = IceHiveZ.HiveRelationConfig(ht_IC86_DCarray)
    rel_DC_photon.AddRingLimits([(-70., 70.), (-131.5, 131.5),
                                 (-250.8, 250.8)])
    rel_DC_photon.self_connect = False
    rel_DC_photon.mutuallyConnect = False
    rel_DC_photon.AddConnectFrom(
        ToolZ.OMTopology_Comparator(
            ToolZ.OMTopology(["DeepCoreFidutial", "DeepCoreCap"]), omt_IC86))
    rel_DC_photon.AddConnectTo(
        ToolZ.OMTopology_Comparator(
            ToolZ.OMTopology(["DeepCoreFidutial", "DeepCoreCap"]), omt_IC86))
    cs_DC_photon.AddRelationConfig(rel_DC_photon)

    hcb.add(cs_DC_photon)
    #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    cs_DC_static = IceHiveZ.Configurator("DC_static")

    con_DC_static = IceHiveZ.DeltaTimeConnectionConfig()
    con_DC_static.time_difference_early = 150.  #ns
    con_DC_static.time_difference_late = 150.  #ns
    cs_DC_static.AddConnectionConfig(con_DC_static)

    rel_DC_static = IceHiveZ.HiveRelationConfig(ht_IC86_DCarray)
    rel_DC_static.AddRingLimits([(-100., 100.), (-100., 100.)])
    rel_DC_static.self_connect = True
    rel_DC_static.mutuallyConnect = False
    rel_DC_static.AddConnectFrom(
        ToolZ.OMTopology_Comparator(
            ToolZ.OMTopology(["DeepCoreFidutial", "DeepCoreCap"]), omt_IC86))
    rel_DC_static.AddConnectTo(
        ToolZ.OMTopology_Comparator(
            ToolZ.OMTopology(["DeepCoreFidutial", "DeepCoreCap"]), omt_IC86))
    cs_DC_static.AddRelationConfig(rel_DC_static)

    hcb.add(cs_DC_static)

    #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>
    return hcb
コード例 #8
0
def DefaultCB_Clean(add_DC=True):
    import os
    from icecube import IceHiveZ

    #make the omt
    #omt_IC86 = IceHIveZ.OMTopology.from_file(os.path.join(os.path.expandvars("$I3_BUILD"), "IceHiveZ/resources/data/IC86_domTopo.dat"))
    omt_IC86 = IceHiveZ.IC86_OMTopology(
    )  #use a preconfigured DOMTopo Map for now for IC86

    ht_IC86_ICarray = IceHiveZ.HiveTopology.from_config(
        os.path.join(os.path.expandvars("$I3_BUILD"),
                     "IceHiveZ/resources/data/SingleDenseStars.dat"))

    hcb = IceHiveZ.ConfiguratorBlock()

    cs_IC_dt = IceHiveZ.Configurator("IC_dt")

    con_IC_dt = IceHiveZ.DeltaTimeConnectionConfig()
    con_IC_dt.time_difference_early = 600.  #ns
    con_IC_dt.time_difference_late = 600.  #ns
    cs_IC_dt.AddConnectionConfig(con_IC_dt)

    rel_IC_dt = IceHiveZ.HiveRelationConfig(ht_IC86_ICarray)
    rel_IC_dt.AddRingLimits([
        (-70., 70.),
        (-70., 70.),
    ])
    rel_IC_dt.selfConnect = True
    rel_IC_dt.mutuallyConnect = False
    rel_IC_dt.AddConnectFrom(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["IceCube"]), omt_IC86))
    rel_IC_dt.AddConnectTo(
        ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["IceCube"]), omt_IC86))
    cs_IC_dt.AddRelationConfig(rel_IC_dt)

    hcb.add(cs_IC_dt)

    ht_IC86_DCarray = IceHiveZ.HiveTopology.from_config(
        os.path.join(os.path.expandvars("$I3_BUILD"),
                     "IceHiveZ/resources/data/DoubleDenseMod.dat"))

    cs_DC_dt = IceHiveZ.Configurator("DC_dt")

    con_DC_dt = IceHiveZ.DeltaTimeConnectionConfig()
    con_DC_dt.time_difference_early = 600.  #ns
    con_DC_dt.time_difference_late = 600.  #ns
    cs_DC_dt.AddConnectionConfig(con_DC_dt)

    rel_DC_dt = IceHiveZ.HiveRelationConfig(ht_IC86_DCarray)
    rel_DC_dt.AddRingLimits([
        (-70., 70.),
        (-70., 70.),
    ])
    rel_DC_dt.self_connect = True
    rel_DC_dt.mutuallyConnect = False
    rel_DC_dt.AddConnectFrom(
        ToolZ.OMTopology_Comparator(
            ToolZ.OMTopology(["DeepCoreFidutial", "DeepCoreCap"]), omt_IC86))
    rel_DC_dt.AddConnectTo(
        ToolZ.OMTopology_Comparator(
            ToolZ.OMTopology(["DeepCoreFidutial", "DeepCoreCap"]), omt_IC86))
    cs_DC_dt.AddRelationConfig(rel_DC_dt)

    hcb.add(cs_DC_dt)
    #[(-70., 70.),(-144.1, 144.1),(-124.7, 124.7),(-82.8, 82.8)] for infill-string 79,80

    return hcb
コード例 #9
0
args = parser.parse_args()

print "check access"
os.path.exists(os.path.expandvars(args.gcdfile))
os.access(args.outfile, os.W_OK)

#make a ConfigurationBlock by generating one, or loading one
print "construct"

#make the omt
#omt_IC86 = IceHIveZ.OMTopology.from_file(os.path.join(os.path.expandvars("$I3_BUILD"), "IceHiveZ/resources/data/IC86_domTopo.dat"))
omt_IC86 = ToolZ.IC86Topology.OMTopologyMap(
)  #use a preconfigured DOMTopo Map for now for IC86

#create an ad hoc empty HiveConfigurationBlock, that we will fill with Connectors
hcb = IceHiveZ.ConfiguratorBlock()

#only treat in ice DOMs; this ignores for example IceTop DOMs
hcb.takeOMKeys(
    ToolZ.OMTopology_Comparator(ToolZ.OMTopology(["InIce"]), omt_IC86))

#generate the string topology in the detector
ht_IC86_ICarray = IceHiveZ.HiveTopology.from_config(
    os.path.join(os.path.expandvars("$I3_BUILD"),
                 "IceHiveZ/resources/data/SingleDenseStars.dat"))

#create a new configurator
cs_IC_particle = IceHiveZ.Configurator("IC_particle")

#configure the connector: here dynamic connector with light-speed
con_IC_particle = IceHiveZ.DynamicConnectionConfig()
コード例 #10
0
ファイル: HiveClustering.py プロジェクト: mzoll/IceHiveZ
               "delete_keys_in_use",
               Keys=[
                   "MaskedOfflinePulses" + "_Physics",
                   "MaskedOfflinePulses" + "_Noise",
                   "MaskedOfflinePulses" + "_Noised",
               ])

#tray.AddModule("Dump", "dump")

tray.AddModule("I3HiveClustering",
               "IceHiveSplit",
               InputName="OfflinePulses",
               OutputName="HSOfflinePulses",
               Multiplicity=3,
               MultiplicityTimeWindow=1000 * I3Units.ns,
               AcceptTimeWindow=1000 * I3Units.ns,
               RejectTimeWindow=4000 * I3Units.ns,
               MergeOverlap=1,
               ConfiguratorBlock=IceHiveZ.DefaultCB_Splitter(add_DC=True),
               Stream=icetray.I3Frame.Physics,
               If=lambda f: True)

tray.AddModule("I3Writer",
               "Writer",
               Filename=sys.argv[-1],
               Streams=[icetray.I3Frame.Physics, icetray.I3Frame.DAQ])

tray.AddModule("TrashCan", "End")
tray.Execute()
tray.Finish()
コード例 #11
0
from icecube import IceHiveZ

#we need the full GCD information
#f = dataio.I3File(os.path.expandvars("$I3_GCD"))
f = dataio.I3File(
    "/opt/i3/data/GeoCalibDetectorStatus_IC86.55697_corrected_V2.i3.gz")
while f.more():
    gcdframe = f.pop_frame()

geo = gcdframe["I3Geometry"]
calib = gcdframe["I3Calibration"]
status = gcdframe["I3DetectorStatus"]

#make a ConfigurationBlock by generating one, or loading one
print "construct"
hcb = IceHiveZ.DefaultCB_Splitter(add_DC=True)

#build the ConnectorBlock by convolution the ConfigurationBlock with GCD information
print "configure"
cb = hcb.buildConnectorBlock(geo, calib, status)

#save the block to a file from which it can be loaded later;
#only essential information will be save
print "save"
cb.to_file("icehive_cb.dat")

#now lets see if we can load the saved state
print "load"
cbX = IceHiveZ.ConnectorBlock.from_file("icehive_cb.dat")

#this can than be fed to the HiveSplitter in a tray