from pydiana.init import *
from pydiana.pat import trigger_tryout
from tqdm import tqdm
[docs]
def main(input:str,channel:int,run:int,trigger:str,params:list,cuts:str="",num:int=1,owner:str='DAQ',label:str="Pulse"):
#Reading channel rundata
chrundata = pydianaIO.get_channel_run_data(filename=input,
ch=channel,
run=run,
)
#READING Pulses
datafile = pydianaIO.openfile(input)
if cuts!='':
cuts = f"Channel == {channel} && "+args.cuts
else:
cuts = f"Channel == {channel}"
pulses = pydianaIO.get_random_pulses( datafile = datafile,
num = num,
cuts = cuts,
owner=owner,
label=label,
)
plots=[]
for signal in tqdm(pulses,leave=True,desc='Triggering Pulses'):
p = trigger_tryout.main(trigger=trigger,
stream = signal,
params = params,
channel = channel,
SamplingFrequency =chrundata.fSamplingFrequency,
Window = len(signal)/chrundata.fSamplingFrequency,
Debounce = 0,
)
plots.append(p)
return plots
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description="Program for testing trigger algorithms on data.")
parser.add_argument('-t','--trigger', type=str,help='String indicating the trigger to be used.',required=True)
parser.add_argument('-i','--input', type=str,help='String indicating the path to the input file to be triggered.',required=True)
parser.add_argument('-n','--num', type=int,help='How many pulses to trigger.',required=True)
parser.add_argument('-r','--run', type=int,help='Run number.',required=True)
parser.add_argument('-p','--params' , action='append',help='List with all the trigger-specific parameters. Repeat flag for each argument.')
parser.add_argument('-ch','--channel', type=int,help='Integer with the channel to trigger.',default=7)
parser.add_argument('-c','--cuts', type=str,help='Cuts to be applied to the data.',default="")
parser.add_argument('-o','--owner', type=str,help='Pulse Owner.',default="DAQ")
parser.add_argument('-l','--label', type=str,help='Pulse label.',default="Pulse")
args = parser.parse_args()
if args.params is not None:
for i in range(len(args.params)):
try:
args.params[i]=int(args.params[i])
except:
try:
args.params[i]=float(args.params[i])
except:
args.params[i]=args.params[i]
else:
args.params=[]
plots = main(input=args.input,
channel=args.channel,
run=args.run,
cuts=args.cuts,
num=args.num,
owner=args.owner,
label=args.label,
trigger=args.trigger,
params=args.params)
[p.show() for p in plots]