diff --git a/requirements.txt b/requirements.txt index 41c18c1a99d82e6db9b2c305689bf05d10b94a07..2512317732a3b5150bd0ed5723e18571d6125b32 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,5 @@ matplotlib numba numpy pandas -scipy \ No newline at end of file +scipy +argparse \ No newline at end of file diff --git a/user/KETEK-PM1150-EB.py b/user/KETEK-PM1150-EB.py index 3dd853ffcbca7d3a51925175108203bcf54f4092..b51d344da3f2a03d90388f202989c54d50a9c74b 100644 --- a/user/KETEK-PM1150-EB.py +++ b/user/KETEK-PM1150-EB.py @@ -1,28 +1,44 @@ import os +import sys +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import numpy as np import pandas as pd +import argparse from PeakOTron import PeakOTron import re +parser = argparse.ArgumentParser(description='Fit SiPM data') +parser.add_argument('-V_bd_hmt', type=float, default=26.1, help='V_bd_hmt value') +parser.add_argument('-V_0_hmt', type=float, default=1.4, help='V_0_hmt value') +parser.add_argument('-tau', type=float, default=146.0, help='SLOW COMPONENT OF SIPM PULSE') +parser.add_argument('-t_0', type=float, default=100.0, help='PRE-INTEGRATION TIME') +parser.add_argument('-t_gate', type=float, default=100.0, help='GATE LENGTH') +parser.add_argument('-bin_0', type=float, default=-100.0, help='SELECT FIRST BIN OF SPECTRUM') +parser.add_argument('-truncate_nsigma0_up', type=float, default=2.0, help='SCAN SPECTRUM FROM Q < Q_0 - 4 sigma_0') +parser.add_argument('-truncate_nsigma0_do', type=float, default=2.0, help='EVALUATE SPECTRUM CHI2 IN Q_0 - x*sigma_0 < Q < Q_0 + 2*sigma_0') +parser.add_argument('-prefit_only', action='store_true', help='FIT THE WHOLE SPECTRUM') +parser.add_argument('-folder', type=str, default='data/ketek', help='Directory containing the data files') + +args = parser.parse_args() + C_tau = lambda V, V_bd, V_0: (V - V_bd)/V_0 f_tau = lambda V, V_bd, V_0: -1/np.log((1-np.exp(C_tau(V, V_bd, V_0)*np.exp(-1)))/(1 - np.exp(C_tau(V, V_bd, V_0)))) -V_bd_hmt = 26.1 -V_0_hmt = 1.4 - -tau = 146.0 ##SLOW COMPONENT OF SIPM PULSE -t_0 = 100.0 ## PRE-INTEGRATION TIME -t_gate = 100.0 ## GATE LENGTH -bin_0=-100.0 ## SELECT FIRST BIN OF SPECTRUM (CAN BE AUTOMATIC) -truncate_nsigma0_up = 2.0 ## SCAN SPECTRUM FROM Q < Q_0 - 4 sigma_0 -truncate_nsigma0_do = 2.0 ## EVALUATE SPECTRUM CHI2 IN Q_0 - x*sigma_0 < Q < Q_0 + 2*sigma_0 -prefit_only=False ## FIT THE WHOLE SPECTRUM +V_bd_hmt = args.V_bd_hmt +V_0_hmt = args.V_0_hmt +tau = args.tau ##SLOW COMPONENT OF SIPM PULSE +t_0 = args.t_0 ## PRE-INTEGRATION TIME +t_gate = args.t_gate ## GATE LENGTH +bin_0 = args.bin_0 ## SELECT FIRST BIN OF SPECTRUM (CAN BE AUTOMATIC) +truncate_nsigma0_up = args.truncate_nsigma0_up ## SCAN SPECTRUM FROM Q < Q_0 - 4 sigma_0 +truncate_nsigma0_do = args.truncate_nsigma0_do ## EVALUATE SPECTRUM CHI2 IN Q_0 - x*sigma_0 < Q < Q_0 + 2*sigma_0 +prefit_only = args.prefit_only ## FIT THE WHOLE SPECTRUM out_dict = {} files_to_fit = [] ## Find all histograms in directory -folder = './data/ketek' +folder = args.folder for root, dirs, files in os.walk(folder): for file in files: if file.endswith(".Wfm.csv"): @@ -99,7 +115,3 @@ for i, (file, path) in enumerate(files_to_fit): # dump(f_data, "{}/dump_{}.csv".format(folder,file)) # break - - - - diff --git a/example.py b/user/example.py similarity index 62% rename from example.py rename to user/example.py index 47c1b70fc2ab3c98f36b75e54bad11a9ad54143b..d1859b41c511a6959198d0616dec8ea4f92fc8ba 100644 --- a/example.py +++ b/user/example.py @@ -1,25 +1,39 @@ import os import sys +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import numpy as np import pandas as pd +import argparse from PeakOTron import PeakOTron from joblib import dump import time +parser = argparse.ArgumentParser(description='Fit SiPM data') +parser.add_argument('-V_bd_hmt', type=float, default=51.570574 + 0.307, help='V_bd_hmt value') +parser.add_argument('-V_0_hmt', type=float, default=2.906, help='V_0_hmt value') +parser.add_argument('-tau', type=float, default=21.953, help='SLOW COMPONENT OF SIPM PULSE') +parser.add_argument('-t_0', type=float, default=100.0, help='PRE-INTEGRATION TIME') +parser.add_argument('-t_gate', type=float, default=104.0, help='GATE LENGTH') +parser.add_argument('-bin_0', type=float, default=-100.0, help='SELECT FIRST BIN OF SPECTRUM') +parser.add_argument('-truncate_nsigma0_up', type=float, default=2.0, help='SCAN SPECTRUM FROM Q < Q_0 - 4 sigma_0') +parser.add_argument('-truncate_nsigma0_do', type=float, default=2.0, help='EVALUATE SPECTRUM CHI2 IN Q_0 - x*sigma_0 < Q < Q_0 + 2*sigma_0') +parser.add_argument('-prefit_only', action='store_true', help='FIT THE WHOLE SPECTRUM') +parser.add_argument('-folder', type=str, default='data/hamamatsu_pcb6', help='Directory containing the data files') + +args = parser.parse_args() C_tau = lambda V, V_bd, V_0: (V - V_bd)/V_0 f_tau = lambda V, V_bd, V_0: -1/np.log((1-np.exp(C_tau(V, V_bd, V_0)*np.exp(-1)))/(1 - np.exp(C_tau(V, V_bd, V_0)))) -V_bd_hmt = 51.570574 + 0.307 -V_0_hmt = 2.906 - -tau = 21.953 ##SLOW COMPONENT OF SIPM PULSE -t_0 = 100.0 ## PRE-INTEGRATION TIME -t_gate = 104.0 ## GATE LENGTH -bin_0=-100.0 ## SELECT FIRST BIN OF SPECTRUM (CAN BE AUTOMATIC) -truncate_nsigma0_up = 2.0 ## SCAN SPECTRUM FROM Q < Q_0 - 4 sigma_0 -truncate_nsigma0_do = 2.0 ## EVALUATE SPECTRUM CHI2 IN Q_0 - x*sigma_0 < Q < Q_0 + 2*sigma_0 -prefit_only=False ## FIT THE WHOLE SPECTRUM +V_bd_hmt = args.V_bd_hmt +V_0_hmt = args.V_0_hmt +tau = args.tau ##SLOW COMPONENT OF SIPM PULSE +t_0 = args.t_0 ## PRE-INTEGRATION TIME +t_gate = args.t_gate ## GATE LENGTH +bin_0 = args.bin_0 ## SELECT FIRST BIN OF SPECTRUM (CAN BE AUTOMATIC) +truncate_nsigma0_up = args.truncate_nsigma0_up ## SCAN SPECTRUM FROM Q < Q_0 - 4 sigma_0 +truncate_nsigma0_do = args.truncate_nsigma0_do ## EVALUATE SPECTRUM CHI2 IN Q_0 - x*sigma_0 < Q < Q_0 + 2*sigma_0 +prefit_only = args.prefit_only ## FIT THE WHOLE SPECTRUM @@ -33,7 +47,8 @@ out_dict = {} files_to_fit = [] ## Find all histograms in directory -for root, dirs, files in os.walk("./data/hamamatsu_pcb6/Light"): +folder = args.folder +for root, dirs, files in os.walk(folder): for file in files: