Пример #1
0
    msg += "Usage 1: %s $INPUT_ROOT_FILE\n" % sys.argv[0]
    msg += '\n'
    sys.stderr.write(msg)
    sys.exit(1)


from ROOT import larlight as fmwk
import ROOT

#shit has to be loaded like this
ROOT.gSystem.Load("libBase")
ROOT.gSystem.Load("libDataFormat")
ROOT.gSystem.Load("libSNTest")

# Create ana_processor instance
my_proc = fmwk.ana_processor()
my_proc.set_verbosity(fmwk.MSG.NORMAL)

# Set input root files... need MCShower and shower reco in 1 or many files
for x in xrange(len(sys.argv)):
    if x < 1: continue
    my_proc.add_input_file(sys.argv[x])

# Specify IO mode
my_proc.set_io_mode(fmwk.storage_manager.READ)


# Attach a template process
my_ana= fmwk.HeaderCheck()
my_proc.add_process(my_ana)
Пример #2
0
#

# Load libraries
import os, ROOT, sys
from ROOT import gSystem
import time
gSystem.Load("libAnalysis")
gSystem.Load("libLArUtil")
gSystem.Load("libDavidAna")
gSystem.Load("libGeoAlgo")

# Now import ana_processor & your class. For this example, ana_base.
from ROOT import larlight as fmwk

# Create ana_processor instance
my_proc = fmwk.ana_processor()

# Specify IO mode
my_proc.set_io_mode(fmwk.storage_manager.READ)
#my_proc.set_io_mode(storage_manager.WRITE)
#my_proc.set_io_mode(storage_manager.BOTH)

# Specify what data to read
my_proc.set_data_to_read(fmwk.DATA.MCTruth)
my_proc.set_data_to_read(fmwk.DATA.MCParticle)

# Set input root file: this is decoder output root file.
# This time, we use a sample file prepared.
#my_proc.add_input_file("./../../../NevisDecoder/Decoder/mac/xmit_subrun_2014_01_13_1_dma_no_1.root")
#my_proc.add_input_file("./../../../NevisDecoder/Decoder/mac/xmit_subrun_2014_01_13_1_trigger.root")
my_proc.add_input_file(sys.argv[1])
Пример #3
0
import ROOT,sys
ROOT.gSystem.Load("libClusterRecoUtil")
from ROOT import *
from ROOT import larlight as fmwk

mgr = fmwk.ana_processor()

#arg1 should be input file name
mgr.add_input_file(sys.argv[1])

mgr.set_input_rootdir("scanner")
mgr.set_output_rootdir("scanner")

#arg2 should be output file name
mgr.set_output_file(sys.argv[2])

mgr.set_io_mode(fmwk.storage_manager.BOTH)

mgr.set_ana_output_file("")

proc = fmwk.ClusterMerger()

#secondmerger starts with Cluster data type (not Fuzzy!)
#and outputs Cluster... it overwrites now
proc.SetClusterType(larlight.DATA.Cluster)
proc.SaveOutputCluster(True)


########################################
# attach merge algos here
########################################
Пример #4
0
import sys
from ROOT import *
from ROOT import larlight as fmwk

processor = fmwk.ana_processor()

#need to use BOTH so output from first module is used as input to second
processor.set_io_mode(fmwk.storage_manager.BOTH)
#processor.set_io_mode(fmwk.storage_manager.READ)

processor.set_rootdir('scanner')

for x in xrange(len(sys.argv)):

    if x < 1: continue
    processor.add_input_file(sys.argv[x])

#need to save output file from shower module otherwise it won't work
processor.set_output_file("out.root")
processor.set_output_rootdir("scanner")

processor.set_ana_output_file("")



mod = fmwk.MCShowerClusterer()

#whether to group overlapping hits into single hit objects. TRUE by default
#reduces number of hits by a factor of ~10
mod.SetGroupOverlappingHits(False)
Пример #5
0
    msg  = '\n'
    msg += "Usage 1: %s $INPUT_ROOT_FILE merge_algo_cut_value\n" % sys.argv[0]
    msg += '\n'
    sys.stderr.write(msg)
    sys.exit(1)

from ROOT import gSystem
gSystem.Load("libCMergePerformance")
from ROOT import larlight, cluster

filename = sys.argv[1]
angle_cutval = float(sys.argv[2])
dist_cutval = float(sys.argv[3])

# Create ana_processor instance
my_proc = larlight.ana_processor()

# Set input root file
my_proc.add_input_file(filename)

# Specify IO mode
my_proc.set_io_mode(larlight.storage_manager.READ)

# Specify input TDirectory name
my_proc.set_input_rootdir("scanner")

# Specify output root file name
#this split bs is to just isolate the filename (cut out path, cut out .root)
output_filename = "CMP_ana_out_%s_cut%s_%s.root"%(filename.split('/')[-1][:-5],angle_cutval,dist_cutval)
my_proc.set_ana_output_file(output_filename)
print "output_filename is %s" % output_filename
Пример #6
0
def main(pv_ptr):

    proc = fmwk.ana_processor()

    #    proc.set_verbosity(MSG.DEBUG)

    proc.set_ana_output_file("ana.root")

    proc.set_io_mode(fmwk.storage_manager.READ)

    #    proc.set_data_to_read(fmwk.DATA.Pulse)
    #    proc.set_data_to_read(fmwk.DATA.PMTPulse_FixedWin)
    proc.set_data_to_read(fmwk.DATA.PMTPulse_ThresWin)

    proc.add_input_file(sys.argv[1])

    proc.set_ana_output_file("")

    proc.add_process(pv_ptr)

    while 1:

        proc.process_event()
        if not proc.get_process_status() == proc.PROCESSING:
            break

        # get list of channels that got a pulse
        ch = pv_ptr.next_channel()

        while not ch == fmwk.FEM.INVALID_CH:

            for x in xrange(pv_ptr.get_npulse(ch)):
                print "pulse %d/%d" % (x + 1, pv_ptr.get_npulse(ch))
                h = pv_ptr.next_pulse(ch)

                if not h:
                    break

                options = ['n', 's', 'q', 'c']
                user_input = ''

                while not user_input in options:

                    if user_input:
                        print
                        print "\033[91m" + 'Invalid option: \"%s\"' % user_input + "\033[0m"

                    print
                    sys.stdout.write("\033[95m" + "Options:" + "\033[0m")
                    sys.stdout.write(
                        " ... \"s\" to save image, \"n\" for next pulse, \"c\" to alter cut values, \"q\" to exit.\n"
                    )
                    sys.stdout.flush()
                    print
                    sys.stdout.write("\033[93m" + 'Input [s/n/c/q]: ' +
                                     "\033[0m")
                    sys.stdout.flush()
                    user_input = sys.stdin.readline().rstrip('\n')

                    if user_input == 'q':
                        terminate = True
                        sys.exit(1)
                    if user_input == 'n':
                        break
                    if user_input == 's':
                        out_name = 'pulse_image.gif'
                        pv_ptr.get_canvas().SaveAs("%s+100" % out_name)
                        print 'Image saved in %s ... ' % out_name
                        user_input = ''
                    if user_input == 'c':
                        change_cut_values(pv_ptr)
                        user_input = ''

            ch = pv_ptr.next_channel()