Esempio n. 1
0
ERROR_FILE_EXIST = 1
ERROR_WRITE_INIT = 2

# if os.path.isfile(OUT_FNAME):
#     print "Test output file (%s) already exists..." % OUT_FNAME
#     sys.exit(ERROR_FILE_EXIST)

from larcv import larcv
o = larcv.IOManager(larcv.IOManager.kWRITE)
o.reset()
o.set_verbosity(MSG_LEVEL)
o.set_out_file(OUT_FNAME)

stream1 = larcv.DataStream("DataStream1")
stream1.set_verbosity(MSG_LEVEL)
cfg1 = larcv.CreatePSetFromFile(sys.argv[2], "DataStream1")
stream1.configure(cfg1)

stream2 = larcv.DataStream("DataStream2")
stream1.set_verbosity(MSG_LEVEL)
cfg2 = larcv.CreatePSetFromFile(sys.argv[3], "DataStream2")
stream2.configure(cfg2)

p = larcv.ImageMerger()
p.set_verbosity(2)

cfg = larcv.CreatePSetFromFile(sys.argv[1], "ImageMerger")
p.InputImageHolder1(stream2)
p.InputImageHolder2(stream1)

p.configure(cfg)
Esempio n. 2
0
DTYPE='float'
import matplotlib.patches as patches


# In[6]:
iom=larcv.IOManager(larcv.IOManager.kBOTH)
iom.reset()
iom.set_verbosity(2)
iom.add_in_file("/Users/vgenty/Downloads/ccqe_0000_0099.root")
iom.add_in_file("/Users/vgenty/Downloads/ccqe_0100_0199.root")
iom.add_in_file("/Users/vgenty/Downloads/ccqe_0200_0299.root")
iom.set_out_file("/tmp/trash.root")
iom.initialize()

larbysimg=larcv.LArbysImage()
cfg=larcv.CreatePSetFromFile("unit.fcl","LArbysImage")
larbysimg.configure(cfg)
larbysimg.initialize()

pygeo   = geo2d.PyDraw()

for event in [23]:
    print "EVENT IS ",event
    fig,ax=plt.subplots(figsize=(10,10))
    ax.text(-30,75,"Event %d"%event,fontsize=35,color='blue',fontweight='bold')
    ax.plot([-100,100],[-100,100],'-',lw=10,color='black')
    ax.plot([-100,100],[100,-100],'-',lw=10,color='black')
    ax.set_xticks([])
    ax.set_yticks([])
    ax.set_xticklabels([])
    ax.set_yticklabels([])
    def process_entry(self, entry_num):
        """ perform all actions -- send, receive, process, store -- for entry"""

        # get the entries
        ok = self._inlarcv.read_entry(entry_num)
        if not ok:
            raise RuntimeError("could not read larcv entry %d" % (entry_num))

        # get data
        ev_wholeview = self._inlarcv.get_data(larcv.kProductImage2D,
                                              self._adc_producer)
        ev_chstatus = self._inlarcv.get_data(larcv.kProductChStatus,
                                             self._chstatus_producer)

        wholeview_v = ev_wholeview.Image2DArray()
        print("Wholeview meta: ", wholeview_v[0].meta().dump())
        # ev_wholeview_copy = larcv.EventImage2D()
        labels = larcv.EventImage2D()
        labels.Append(larcv.Image2D(wholeview_v[0].meta()))
        labels.Append(larcv.Image2D(wholeview_v[1].meta()))
        labels.Append(larcv.Image2D(wholeview_v[2].meta()))
        labels_v = labels.Image2DArray()
        # labels_v = [larcv.Image2D(wholeview_v[0].meta()),larcv.Image2D(wholeview_v[1].meta()),larcv.Image2D(wholeview_v[2].meta())]
        nplanes = wholeview_v.size()
        run = self._inlarcv.event_id().run()
        subrun = self._inlarcv.event_id().subrun()
        event = self._inlarcv.event_id().event()
        print("num of planes in entry {}: ".format((run, subrun, event)),
              nplanes)

        # crop using UBSplit for infill network
        # we want to break the image into set crops to send in

        # create labels_image_v
        # for img in labels_v:
        #     img.paint(0)

        labels_v = ublarcvapp.InfillDataCropper().ChStatusToLabels(
            labels_v, ev_chstatus)

        # we split the entire image using UBSplitDetector
        scfg = """Verbosity: 3
        InputProducer: \"wire\"
        OutputBBox2DProducer: \"detsplit\"
        CropInModule: true
        OutputCroppedProducer: \"detsplit\"
        BBoxPixelHeight: 512
        BBoxPixelWidth: 496
        CoveredZWidth: 310
        FillCroppedYImageCompletely: true
        DebugImage: false
        MaxImages: -1
        RandomizeCrops: 0
        MaxRandomAttempts: 4
        MinFracPixelsInCrop: -0.0001
        TickForward: true
        """

        fcfg = open("ubsplit.cfg", 'w')
        print(scfg, end="", file=fcfg)
        fcfg.close()

        cfg = larcv.CreatePSetFromFile("ubsplit.cfg", "UBSplitDetector")
        algo = ublarcvapp.UBSplitDetector()
        algo.initialize()
        algo.configure(cfg)
        algo.set_verbosity(2)

        bbox_list = larcv.EventROI()
        img2du = []
        img2dv = []
        img2dy = []
        img2d_list = []
        bbox_v = larcv.EventROI().ROIArray()
        img2d_v = larcv.EventImage2D().Image2DArray()
        algo.process(wholeview_v, img2d_v, bbox_v)

        bbox_labels_list = larcv.EventROI()
        img2du_labels = []
        img2dv_labels = []
        img2dy_labels = []
        img2d_labels_list = []
        bbox_labels_v = larcv.EventROI().ROIArray()
        img2d_labels_v = larcv.EventImage2D().Image2DArray()
        algo.process(labels_v, img2d_labels_v, bbox_labels_v)

        algo.finalize()

        # seperate by planes
        for i in img2d_v:
            p = i.meta().plane()
            if p == 0:
                img2du.append(i)
            elif p == 1:
                img2dv.append(i)
            elif p == 2:
                img2dy.append(i)

        for i in img2d_labels_v:
            p = i.meta().plane()
            if p == 0:
                img2du_labels.append(i)
            elif p == 1:
                img2dv_labels.append(i)
            elif p == 2:
                img2dy_labels.append(i)

        img2d_list.append(img2du)
        img2d_list.append(img2dv)
        img2d_list.append(img2dy)
        img2d_labels_list.append(img2du_labels)
        img2d_labels_list.append(img2dv_labels)
        img2d_labels_list.append(img2dy_labels)

        for plane in img2d_list:
            print("In list", len(plane))
        for plane in img2d_labels_list:
            print("In labels list", len(plane))

        # sparsify image 2d
        thresholds = std.vector("float")(1, 10.0)
        sparseimg_list = []
        usparse_v = []
        vsparse_v = []
        ysparse_v = []

        for a, b in zip(img2d_list, img2d_labels_list):
            for img, label in zip(a, b):
                p = img.meta().plane()
                sparse_img = larcv.SparseImage(img, label, thresholds)
                if (p == 0):
                    usparse_v.append(sparse_img)
                elif (p == 1):
                    vsparse_v.append(sparse_img)
                elif (p == 2):
                    ysparse_v.append(sparse_img)

        sparseimg_list.append(usparse_v)
        sparseimg_list.append(vsparse_v)
        sparseimg_list.append(ysparse_v)

        for plane in sparseimg_list:
            print("In sparse list", len(plane))

        # send messages
        # (send crops to worker to go through network)
        replies = self.send_image_list(sparseimg_list,
                                       run=run,
                                       subrun=subrun,
                                       event=event)
        print("FINISHED SEND STEP")
        self.process_received_images(wholeview_v, ev_chstatus, replies,
                                     img2d_list)
        print("FINISHED PROCESS STEP")

        self._outlarcv.set_id(self._inlarcv.event_id().run(),
                              self._inlarcv.event_id().subrun(),
                              self._inlarcv.event_id().event())

        self._outlarcv.save_entry()
        print("SAVED ENTRY")
        return True
Esempio n. 4
0
ERROR_FILE_EXIST = 1
ERROR_WRITE_INIT = 2

if os.path.isfile(OUT_FNAME):
    cmsg.error("Test output file (%s) already exists..." % OUT_FNAME)
    sys.exit(ERROR_FILE_EXIST)

from larcv import larcv

o = larcv.IOManager(larcv.IOManager.kWRITE)
o.reset()
o.set_verbosity(MSG_LEVEL)
o.set_out_file(OUT_FNAME)

p = larcv.SegmentMask()
cfg = larcv.CreatePSetFromFile(sys.argv[1], "SegmentMask")
p.configure(cfg)
p.initialize()

if not o.initialize():
    sys.exit(ERROR_WRITE_INIT)
for idx in xrange(NUM_EVENT):

    img = larcv.Image2D(10, 10)
    for x in xrange(img.as_vector().size()):
        if x % 2 == 0: img.set_pixel(x, larcv.kROIEminus)
        else: img.set_pixel(x, larcv.kROIGamma)

    event_image1 = o.get_data(larcv.kProductImage2D, "original")
    event_image1.Append(img)
    event_image2 = o.get_data(larcv.kProductImage2D, "target")
    supera_file = sys.argv[1]
    io = larcv.IOManager(larcv.IOManager.kREAD, "supera",
                         larcv.IOManager.kTickBackward)
    io.add_in_file(supera_file)
    io.initialize()

    weights = [
        "sparseinfill_uplane_test.tar", "sparseinfill_vplane_test.tar",
        "sparseinfill_yplane_test.tar"
    ]

    # splitter
    cfg = "../infill_split.cfg"

    pset = larcv.CreatePSetFromFile(cfg, "UBSplitDetector")
    print(pset.dump())

    ubsplit = ublarcvapp.UBSplitDetector()
    ubsplit.configure(pset)
    ubsplit.initialize()

    ubbadch = ublarcvapp.EmptyChannelAlgo()

    nentries = io.get_n_entries()

    for ientry in range(nentries):
        io.read_entry(ientry)

        # Event Image
        ev_img = io.get_data(larcv.kProductImage2D, "wire")
Esempio n. 6
0
    def __init__(self, larcv_input_file, ismc=True):

        # we setup a larcv IOManager for read mode
        self.io = larcv.IOManager(larcv.IOManager.kBOTH)
        self.io.add_in_file(larcv_input_file)
        self.io.set_out_file("baka.root")
        self.io.initialize()

        # we setup some image processor modules

        # split a whole image into 3D-consistent chunks
        # the module will return bounding box defintions
        # the event loop will do the slicing
        ubsplit_cfg = """
        InputProducer: \"wire\"
        OutputBBox2DProducer: \"detsplit\"
        CropInModule: false
        OutputCroppedProducer: \"detsplit\"
        BBoxPixelHeight: 512
        BBoxPixelWidth: 832
        CoveredZWidth: 310
        FillCroppedYImageCompletely: true
        DebugImage: false
        MaxImages: -1
        RandomizeCrops: false
        MaxRandomAttempts: 1000
        MinFracPixelsInCrop: 0.0
        """
        fcfg = open("ubsplit.cfg", 'w')
        print >> fcfg, ubsplit_cfg
        fcfg.close()
        split_pset = larcv.CreatePSetFromFile("ubsplit.cfg", "UBSplitDetector")
        self.split_algo = larcv.UBSplitDetector()
        self.split_algo.configure(split_pset)
        self.split_algo.initialize()
        self.split_algo.set_verbosity(1)

        # cropper for larflow (needed if we do not restitch the output)
        lfcrop_cfg = """Verbosity:0
        InputBBoxProducer: \"detsplit\"
        InputCroppedADCProducer: \"detsplit\"
        InputADCProducer: \"wire\"
        InputVisiProducer: \"pixvisi\"
        InputFlowProducer: \"pixflow\"
        OutputCroppedADCProducer:  \"adc\"
        OutputCroppedVisiProducer: \"visi\"
        OutputCroppedFlowProducer: \"flow\"
        OutputCroppedMetaProducer: \"flowmeta\"
        OutputFilename: \"baka_lf.root\"
        SaveOutput: false
        CheckFlow:  false
        MakeCheckImage: false
        DoMaxPool: false
        RowDownsampleFactor: 2
        ColDownsampleFactor: 2
        MaxImages: -1
        LimitOverlap: false
        RequireMinGoodPixels: false
        MaxOverlapFraction: 0.2
        UseVectorizedCode: true
        IsMC: {}
        """
        flowcrop_cfg = open("ublarflowcrop.cfg", 'w')
        print >> flowcrop_cfg, lfcrop_cfg.format(str(ismc).lower())
        flowcrop_cfg.close()
        flowcrop_pset = larcv.CreatePSetFromFile("ublarflowcrop.cfg",
                                                 "UBLArFlowCrop")
        self.flowcrop_algo = None
        # not yet implemented in larcv1
        #self.flowcrop_algo = larcv.UBCropLArFlow()
        #self.flowcrop_algo.configure( flowcrop_pset )
        #self.flowcrop_algo.initialize()
        #self.flowcrop_algo.set_verbosity(0)
        self.ismc = ismc

        self._nentries = self.io.get_n_entries()
Esempio n. 7
0
    def __init__(self, broker_address,
                 larcv_supera_file,
                 output_larcv_filename,
                 adc_producer="wire",
                 output_producer="larflow",
                 tick_backwards=False,
                 save_cropped_adc=False,
                 flow_dirs=["y2u","y2v"],
                 plane_scale_factors=[1.0,1.0,1.0],
                 receive_timeout_secs=300,
                 **kwargs):
        """
        this class loads either larcv::sparseimage or larcv::image2d data from
        the input file, prepares the data into a binary json (bson) message to
        be sent to the broker. when the broker replies with worker output,
        save it to larcv root file.

        inputs
        ------
        broker_address str address of broker Socket
        larcv_supera_file str path to input data
        output_larcv_file str path to output file

        kwargs
        -------
        adc_producer str (default:"wire") name of ADC image2d tree
        output_producer str (default:"larflow") name of output flow info. will append flow_dir to name.
        tick_backwards bool (default:False) set to True if reading in LArCV1 files
        save_cropped_adc bool (default:False) save the ADC crops
        flow_dirs [list of str] direction of flow. options are ["y2u","y2v"]
        """
        super(UBDenseLArFlowClient,self).__init__(broker_address,**kwargs)

        # setup the input iomanager
        tick_direction = larcv.IOManager.kTickForward
        if tick_backwards:
            tick_direction = larcv.IOManager.kTickBackward
        self._inlarcv = larcv.IOManager(larcv.IOManager.kREAD,"",
                                        tick_direction)
        self._inlarcv.add_in_file(larcv_supera_file)
        self._inlarcv.initialize()

        # setup output iomanager
        self._outlarcv = larcv.IOManager(larcv.IOManager.kWRITE)
        self._outlarcv.set_out_file(output_larcv_filename)
        self._outlarcv.initialize()

        # setup config
        self._adc_producer    = adc_producer
        self._output_producer = output_producer

        # thresholds: adc values must be above this value to be included
        self._threshold_v   = std.vector("float")(3,10.0)

        # global scale factors to apply to ADC values for each plane
        self._plane_scale_factors = plane_scale_factors

        # setup logger
        self._log = logging.getLogger(__name__)

        # setup ubdetsplit
        fcfg = open("tmp_ubsplit.cfg",'w')
        print(self._get_default_ubsplit_cfg(),file=fcfg)
        fcfg.close()
        split_pset = larcv.CreatePSetFromFile( "tmp_ubsplit.cfg","UBSplitDetector")
        self._split_algo = ublarcvapp.UBSplitDetector()
        self._split_algo.configure(split_pset)
        self._split_algo.initialize()
        self._split_algo.set_verbosity(2)

        self.flow_dirs = flow_dirs
        self._timeout_secs = receive_timeout_secs
Esempio n. 8
0
    def process_entry(self, entry_num, tick_backwards):
        """ perform all actions -- send, receive, process, store -- for entry"""

        # get the entries
        ok = self._inlarcv.read_entry(entry_num)
        if not ok:
            raise RuntimeError("could not read larcv entry %d" % (entry_num))

        # get data
        ev_wholeview = self._inlarcv.get_data(larcv.kProductImage2D,
                                              self._adc_producer)
        ev_chstatus = self._inlarcv.get_data(larcv.kProductChStatus,
                                             self._chstatus_producer)
        wholeview_v = ev_wholeview.Image2DArray()
        print("Wholeview meta: ", wholeview_v[0].meta().dump())
        labels_v = ev_wholeview.Image2DArray()
        nplanes = wholeview_v.size()
        run = self._inlarcv.event_id().run()
        subrun = self._inlarcv.event_id().subrun()
        event = self._inlarcv.event_id().event()
        print("num of planes in entry {}: ".format((run, subrun, event)),
              nplanes)

        # crop using UBSplit for infill network
        # we want to break the image into set crops to send in

        # define the bbox_v images and cropped images
        bbox_list = larcv.EventROI()
        img2d_list = larcv.EventImage2D()

        bbox_v = larcv.EventROI().ROIArray()
        img2d_v = larcv.EventImage2D().Image2DArray()

        # we split the entire image using UBSplitDetector
        scfg = """Verbosity: 3
        InputProducer: \"wire\"
        OutputBBox2DProducer: \"detsplit\"
        CropInModule: true
        OutputCroppedProducer: \"detsplit\"
        BBoxPixelHeight: 512
        BBoxPixelWidth: 832
        CoveredZWidth: 310
        FillCroppedYImageCompletely: true
        DebugImage: false
        MaxImages: -1
        RandomizeCrops: false
        MaxRandomAttempts: 4
        MinFracPixelsInCrop: -0.0001
        TickForward: true
        """

        fcfg = open("ubsplit.cfg", 'w')
        print(scfg, end="", file=fcfg)
        fcfg.close()

        cfg = larcv.CreatePSetFromFile("ubsplit.cfg", "UBSplitDetector")
        algo = ublarcvapp.UBSplitDetector()
        algo.initialize()
        algo.configure(cfg)
        algo.set_verbosity(2)

        bbox_list = larcv.EventROI()
        img2du = []
        img2dv = []
        img2dy = []
        img2d_list = []

        bbox_v = larcv.EventROI().ROIArray()
        img2d_v = larcv.EventImage2D().Image2DArray()

        algo.process(wholeview_v, img2d_v, bbox_v)

        # seperate by planes
        for i in img2d_v:
            p = i.meta().plane()
            if p == 0:
                if tick_backwards:
                    scalefactor = 43.0 / 53.0
                    ublarcvapp.InfillImageStitcher().PixelScaling(
                        i, scalefactor)
                img2du.append(i)
            elif p == 1:
                if tick_backwards:
                    scalefactor = (43.0 / 52.0)
                    ublarcvapp.InfillImageStitcher().PixelScaling(
                        i, scalefactor)
                img2dv.append(i)
            elif p == 2:
                if tick_backwards:
                    scalefactor = (48.0 / 59.0)
                    ublarcvapp.InfillImageStitcher().PixelScaling(
                        i, scalefactor)
                img2dy.append(i)

        img2d_list.append(img2du)
        img2d_list.append(img2dv)
        img2d_list.append(img2dy)

        for plane in img2d_list:
            print("In list", len(plane))

        # send messages
        # (send crops to worker to go through network)
        replies = self.send_image_list(img2d_list,
                                       run=run,
                                       subrun=subrun,
                                       event=event)
        print("FINISHED SEND STEP")
        self.process_received_images(wholeview_v, ev_chstatus, replies,
                                     tick_backwards)
        print("FINISHED PROCESS STEP")

        self._outlarcv.set_id(self._inlarcv.event_id().run(),
                              self._inlarcv.event_id().subrun(),
                              self._inlarcv.event_id().event())

        self._outlarcv.save_entry()
        print("SAVED ENTRY")
        return True
Esempio n. 9
0
    def __init__(self, larcv_input_file, ismc=True, workdir="./"):
        """ This class prepares the data.  
        It passes each event through ubsplitdet to make subimages.
        The bbox and adcs from these images are passed to ubcropinfill to crop the truth images.
        
        """
        self.ismc = ismc

        # we setup a larcv IOManager for read mode
        self.io = larcv.IOManager(larcv.IOManager.kREAD)
        self.io.add_in_file(larcv_input_file)
        self.io.initialize()

        # we setup some image processor modules

        # split a whole image into 3D-consistent chunks
        # the module will return bounding box defintions
        # the event loop will do the slicing
        ubsplit_cfg = """
        InputProducer: \"wire\"
        OutputBBox2DProducer: \"detsplit\"
        CropInModule: true
        OutputCroppedProducer: \"detsplit\"
        BBoxPixelHeight: 512
        BBoxPixelWidth: 832
        CoveredZWidth: 310
        FillCroppedYImageCompletely: true
        DebugImage: false
        MaxImages: -1
        RandomizeCrops: false
        MaxRandomAttempts: 1000
        MinFracPixelsInCrop: 0.0
        """
        fcfg = open(workdir + "/ubsplit.cfg", 'w')
        print >> fcfg, ubsplit_cfg
        fcfg.close()
        split_pset = larcv.CreatePSetFromFile(workdir + "/ubsplit.cfg",
                                              "UBSplitDetector")
        self.split_algo = larcv.UBSplitDetector()
        self.split_algo.configure(split_pset)
        self.split_algo.initialize()
        self.split_algo.set_verbosity(0)

        # cropper for infill (needed if we do not restitch the output)
        infillcrop_cfg_str = """Verbosity:0
        InputBBoxProducer: \"detsplit\"
        InputWireProducer: \"wire\"
        InputLabelsProducer: \"Labels\"
        InputADCProducer: \"detsplit\"
        OutputCroppedWireProducer: \"wire\"
        OutputCroppedLabelsProducer: \"Labels\"
        OutputCroppedADCProducer: \"ADC\"
        OutputCroppedWeightsProducer: \"Weights\"
        OutputCroppedMetaProducer: \"meta\"
        OutputFilename: \"baka_cropinfill.root\"
        CheckFlow: false
        MakeCheckImage: false
        DoMaxPool: false
        RowDownsampleFactor: 2
        ColDownsampleFactor: 2
        MaxImages: 10
        LimitOverlap: false
        MaxOverlapFraction: -1
        """
        infillcrop_cfg = open(workdir + "/infillcrop.cfg", 'w')
        print >> infillcrop_cfg, infillcrop_cfg_str
        infillcrop_cfg.close()
        infillcrop_pset = larcv.CreatePSetFromFile(workdir + "/infillcrop.cfg",
                                                   "UBCropInfill")
        self.infillcrop_algo = larcv.UBCropInfill()
        self.infillcrop_algo.configure(infillcrop_pset)
        self.infillcrop_algo.initialize()
        self.infillcrop_algo.set_verbosity(0)

        self._nentries = self.io.get_n_entries()
Esempio n. 10
0
# if os.path.isfile(OUT_FNAME):
#     print "Test output file (%s) already exists..." % OUT_FNAME
#     sys.exit(ERROR_FILE_EXIST)

o = larcv.IOManager(larcv.IOManager.kWRITE)
o.reset()
o.set_verbosity(MSG_LEVEL)
o.set_out_file(OUT_FNAME)

if not o.initialize():
    sys.exit(ERROR_WRITE_INIT)

p = larcv.VtxInRegion()
p.set_verbosity(2)
cfg = larcv.CreatePSetFromFile(sys.argv[1], "VtxInRegion")
p.configure(cfg)

x = []
y = []
for idx1 in xrange(0, 1000, 10):
    for idx2 in xrange(-100, 100, 2):
        event_roi1 = o.get_data(larcv.kProductROI, "vtxinregion")
        bb1 = larcv.ImageMeta(2, 2, 2, 2, 2, 2, 0)  #doesn't matter
        roi1 = larcv.ROI()
        roi1.Type(2)
        roi1.Position(0, idx2, idx1, 0)
        roi1.AppendBB(bb1)
        event_roi1.clear()
        event_roi1.Append(roi1)
Esempio n. 11
0
CHSTATUS_PRODUCER = args.chstatus_name
USE_GAPCH = True
DEVICE = torch.device("cpu")
RETURN_TRUTH = False
BATCHSIZE = 1
SOURCE_PLANE_LIST = ["Y", "U", "V"]
#SOURCE_PLANE_LIST = ["Y"]
#FLOW_DIRS = [ ("Y","U","V",2,0,1) ]
#FLOW_DIRS = [ ("U","V","Y",0,1,2) ]
#FLOW_DIRS = [ ("V","U","Y",1,0,2) ]
FLOW_DIRS = [("Y", "U", "V", 2, 0, 1), ("U", "V", "Y", 0, 1, 2),
             ("V", "U", "Y", 1, 0, 2)]

# DEFINE THE CLASSES THAT MAKE FLOW MATCH VECTORS
# we use a config file
main_pset = larcv.CreatePSetFromFile("prepflowmatchdata.cfg", "ProcessDriver")
driver_pset = main_pset.get_pset("ProcessDriver")
proclist_pset = driver_pset.get_pset("ProcessList")

preplarmatch = {}
for source_plane in SOURCE_PLANE_LIST:
    prepcfg = proclist_pset.get_pset("PrepFlowMatch%s" % (source_plane))
    print(prepcfg.dump())
    preplarmatch[source_plane] = larflow.PrepFlowMatchData("deploy%s" %
                                                           (source_plane))
    preplarmatch[source_plane].configure(prepcfg)
    print("'HAS_MC' SET TO: ", args.has_mc)
    preplarmatch[source_plane].hasMCtruth(args.has_mc)

    if not args.has_wirecell:
        preplarmatch[source_plane].setADCproducer(ADC_PRODUCER)