def ConfigurePax(parsed_args, parsed_config): pax_config = configuration.load_configuration('XENON1T') n_channels = pax_config['DEFAULT']['n_channels'] pmts = pax_config['DEFAULT']['pmts'] tpc_height = pax_config['DEFAULT']['tpc_length'] tpc_radius = pax_config['DEFAULT']['tpc_radius'] gains = pax_config['DEFAULT']['gains'] pax_version = parsed_config["pax_settings"]["pax_version"] minitree_paths = [ '/home/twolf/scratch-midway2', '/dali/lgrandi/xenon1t/minitrees/pax_v' + pax_version, '/project2/lgrandi/xenon1t/minitrees/pax_v' + pax_version, '/project/lgrandi/xenon1t/minitrees/pax_v' + pax_version ] print(minitree_paths) hax.__version__ hax.init( experiment='XENON1T', pax_version_policy=pax_version, raw_data_access_mode='local', raw_data_local_path=[ '/home/twolf/my_wave_forms', '/dali/lgrandi/xenon1t/raw_for_waveforms' ], # this folder should contain all symlinks named after the run_name pointing to the raw-data main_data_paths=[ '/dali/lgrandi/xenon1t/processed/pax_v' + pax_version ], minitree_paths=minitree_paths, make_minitrees=False, log_level='DEBUG', # pax_version_policy='loose' ) return hax
def extract_minitree(processed_filename, processed_filepath): """ Take processed fax data and turn it into useful dataframe to add classification """ hax.init(experiment='XENON1T', use_runs_db=False, pax_version_policy='loose', main_data_paths=[processed_filepath], minitree_paths = [processed_filepath]) pr_df = hax.minitrees.load(processed_filename, [Peaks]) return pr_df
def evaluate(self): run_number = self.run_doc['number'] # Minimal init of hax. It's ok if hax is inited again with different settings before or after this. hax.init(pax_version_policy='loose', main_data_paths=[]) # Get the cathode voltage in kV cathode_kv = hax.slow_control.get('XE1T.GEN_HEINZVMON.PI', run_number).mean() # Get the drift velocity value = float(self.evaluate_function(v=cathode_kv)) self.log.info("Run %d: calculated drift velocity of %0.3f km/sec" % (run_number, value)) return value * units.km / units.s
def hax_init(self, force_reload = False, main_data_paths = ['/project2/lgrandi/xenon1t/processed/pax_v6.8.0'], minitree_paths = ['/scratch/midway2/zhut/data/SingleScatter/data/minitrees']): if (not len(hax.config)) or force_reload: print ('Initiating hax, it takes some time...') # Initiate hax if not done already hax.init(experiment = 'XENON1T', main_data_paths = main_data_paths, minitree_paths = minitree_paths, version_policy = 'loose', make_minitrees = True, minitree_caching = False, # We don't really use root anymore pax_version_policy = '6.8.0', tqdm_on = False, )
def _process(self, df): import hax # noqa if not len(hax.config): # User didn't init hax yet... let's do it now hax.init() # Get the end times for each run # The datetime -> timestamp logic here is the same as in the pax event builder run_numbers = np.unique(df.run_number.values) run_end_times = [int(q.replace(tzinfo=pytz.utc).timestamp() * int(1e9)) for q in hax.runs.get_run_info(run_numbers.tolist(), 'end')] run_end_times = {run_numbers[i]: run_end_times[i] for i in range(len(run_numbers))} # Pass events that occur before (end time - 21 sec) of the run they are in df.loc[:, self.name()] = df.apply(lambda row: row['event_time'] < run_end_times[row['run_number']] - 21e9, axis=1) return df
def get_gains(self, timestamp): """Timestamp is a UNIX timestamp in UTC """ V = sympy.symbols('V') pmt = sympy.symbols('pmt', integer=True) t = sympy.symbols('t') # Minimal init of hax. It's ok if hax is inited again with different settings before or after this. hax.init(pax_version_policy='loose', main_data_paths=[]) gains = [] for i in range(0, len(PAX_CONFIG['DEFAULT']['pmts'])): gain = self.function.evalf(subs={pmt: i, t: self.run_doc['start'].replace(tzinfo=pytz.utc).timestamp(), 't0': 0 }) gains.append(float(gain) * self.correction_units) return gains
def get_gains(self, timestamp): """Timestamp is a UNIX timestamp in UTC """ V = sympy.symbols('V') pmt = sympy.symbols('pmt', integer=True) t = sympy.symbols('t') # Minimal init of hax. It's ok if hax is inited again with different settings before or after this. hax.init(pax_version_policy='loose', main_data_paths=[]) gains = [] for i in range(0, len(PAX_CONFIG['DEFAULT']['pmts'])): gain = self.function.evalf(subs={ pmt: i, t: self.run_doc['start'].timestamp(), 't0': 0 }) gains.append(float(gain) * self.correction_units) return gains
def hax_init( self, force_reload=False, main_data_paths=['/project2/lgrandi/xenon1t/processed/pax_v6.8.0'], minitree_paths=[ '/scratch/midway2/zhut/data/SingleScatter/data/minitrees', '/project2/lgrandi/xenon1t/minitrees/pax_v6.8.0' ]): # Trick learned from Daniel Coderre's DAQVeto lichen if (not len(hax.config)) or force_reload: # User didn't init hax yet... let's do it now hax.init( experiment='XENON1T', main_data_paths=main_data_paths, minitree_paths=minitree_paths, version_policy='loose', make_minitrees=True, minitree_caching=False, pax_version_policy='6.8.0', tqdm_on=True, )
# This is the notebook where you can customize data path and the treemakers you want to use # If you want to use custom treemakers, do not forget to import them. # In this case the .py-files of the custom treemakers are situated in /home/wittweg/treemakers import sys import hax sys.path.append('/home/wittweg/treemakers/') from s2_top_bottom_new import S2TopBottom # PAX 6.4.2 correction from s2_correct_in_hax import S2CorrectInHax # PAX 6.6.4 correction run = int(sys.argv[1]) hax.__version__ hax.init(main_data_paths=[ '/project/lgrandi/xenon1t/processed/pax_v6.6.5', '/project2/lgrandi/xenon1t/processed/pax_v6.6.5' ], minitree_paths=['./'], pax_version_policy='6.6.5') # only use for version problems #hax.minitrees.load(run, [S2TopBottom, S2CorrectInHax, 'Basics', 'Extended']) hax.minitrees.load(run, ['Fundamentals', 'Basics', 'Extended'])
def init_hax(in_location, pax_version, out_location): hax.init(experiment='XENON1T', pax_version_policy=pax_version.replace("v", ""), main_data_paths=[in_location], minitree_paths=[out_location])
elif filename[-3:] == 'txt': print('\nText file given...\n') l_files = [] with open(path_to_file_lists + filename, 'r') as f_file_list: for line in f_file_list: if line[0] == '#': continue if line[-1] == '\n' or line[-1] == '\t' or line[-1] == ' ': line = line[:-1] l_files.append(line) else: print( '\nFilename given is not root or txt, please try again with appropriate file.\n\n' ) sys.exit() hc = hax_config.hax_config('XENON100') # eventually need to add check on file to see if it # is xenon100 or xenon1t hax.init(main_data_paths=[hc.hax_pax_processed_data_path], experiment=hc.hax_experiment, minitree_paths=[hc.hax_minitree_path]) hax.minitrees.load( l_files, treemakers=[getattr(sys.modules[treemaker_file], treemaker_file)], force_reload=False) #hax.minitrees.load(l_files, treemakers=[mod_treemaker[treemaker_file]], force_reload=True)
if filename[-4:] == 'root': print('\nSingle ROOT file given...\n') l_files = [filename[:-5]] elif filename[-3:] == 'txt': print('\nText file given...\n') l_files = [] with open(path_to_file_lists + filename, 'r') as f_file_list: for line in f_file_list: if line[0] == '#': continue if line[-1] == '\n' or line[-1] == '\t' or line[-1] == ' ': line = line[:-1] l_files.append(line) else: print('\nFilename given is not root or txt, please try again with appropriate file.\n\n') sys.exit() hc = hax_config.hax_config('XENON100') # eventually need to add check on file to see if it # is xenon100 or xenon1t hax.init(main_data_paths=[hc.hax_pax_processed_data_path], experiment=hc.hax_experiment, minitree_paths=[hc.hax_minitree_path]) hax.minitrees.load(l_files, treemakers=[getattr(sys.modules[treemaker_file], treemaker_file)], force_reload=False) #hax.minitrees.load(l_files, treemakers=[mod_treemaker[treemaker_file]], force_reload=True)
def init_hax(in_location, pax_version, out_location): hax.init(experiment='XENON1T', main_data_paths=[in_location + 'pax_' + pax_version], minitree_paths=[out_location])
import hax import os import sys import numpy as np from treemakers import ZeroFieldProperties debug = False args = sys.argv processed_data_path = args[1] run_name = args[2] minitree_path = '/data/xenon/xams/run8/minitrees/' hax.init( experiment='XAMS', pax_version_policy='loose', use_runs_db=False, main_data_paths=[processed_data_path], minitree_paths=[minitree_path], ) if not debug: d = hax.minitrees.load(run_name, ['Fundamentals', ZeroFieldProperties]) print('Done!')
import sys import hax from collections import defaultdict import hax_config if len(sys.argv) != 2: print('Use is "python make_file_list.py <experiment name>') sys.exit() file_path = './file_lists/' hax_config.init(experiment) # initialize hax hax.init(main_data_paths=[hax_config.hax_pax_processed_data_path], experiment=experiment, minitree_paths=[hax_config.hax_minitree_path]) datasets = hax.runs.datasets print(datasets)
try: parsed_config = (yaml.safe_load(stream)) except yaml.YAMLError as exc: print(exc) raise SystemExit return args, parsed_config hax.__version__ hax.init( experiment='XENON1T', pax_version_policy=pax_version, raw_data_access_mode='local', raw_data_local_path=['project/lgrandi/xenon1t'], main_data_paths=['/dali/lgrandi/xenon1t/processed/pax_v' + pax_version], minitree_paths=[ '.', '/dali/lgrandi/xenon1t/minitrees/pax_v' + pax_version, '/project2/lgrandi/xenon1t/minitrees/pax_v' + pax_version ], make_minitrees=True, # pax_version_policy='loose' ) datasets = hax.runs.datasets # this variable holds all dataset info dsets = datasets dsets['start_date'] = dsets.start.dt.date parsed_args, parsed_config = parse_args(sys.argv[:1]) pax_settings = parsed_config["pax_settings"] dsets_type = LoadData.SelectDataAccordingToType(parsed_config, pax_settings, dsets, datasets)
if ((peak.type != 'lone_hit') and (peak.detector == 'tpc')) ] for peak_field in peak_fields: result[peak_field] = np.array( [getattr(peaks[i], peak_field) for i in range(len(peaks))]) result['type'] = np.array( [type_ints[getattr(peak, 'type')] for peak in peaks]) for dec in decile: result['range_%i0p_area' % dec] = np.array([ getattr(peaks[i], 'range_area_decile')[dec] for i in range(len(peaks)) ]) return result dataset = sys.argv[1] datapath = sys.argv[2] print("======= To be reduced: " + dataset) print(datapath) hax.init(experiment='XENON1T', main_data_paths=[datapath], use_rundb_locations=False, pax_version_policy='loose' ) # changed @2016-07-06, for the data after 07-03 #hax.init(main_data_paths=[datapath])# changed @2016-07-06, for the data after 07-03 #print(hax.config['main_data_paths']) data2 = hax.minitrees.load(dataset, treemakers=[PeakEfficiency], force_reload=True)
from multihist import Histdd, Hist1d import pickle from tqdm import tqdm from Pre_trigger_peaks import Primary_Times #Run Number to post-process run_number = dataset = sys.argv[1] #Init Hax and Studd hax.init( experiment='XENON1T', pax_version_policy='6.8.0', main_data_paths=[ '/project2/lgrandi/xenon1t/processed', '/project/lgrandi/xenon1t/processed' ], minitree_paths=[ '/scratch/midway2/jpienaar/minitrees/', '/project2/lgrandi/xenon1t/minitrees/pax_v6.8.0', '/project/lgrandi/xenon1t/minitrees/pax_v6.8.0', ], ) #Set window to look for previous S2s window_length = 10**9 #Main pax_config = configuration.load_configuration('XENON1T') R_tpc = pax_config['DEFAULT']['tpc_radius'] #Load File Location
import matplotlib.pyplot as plt from matplotlib import colors from matplotlib.patches import Ellipse from matplotlib.patches import Rectangle import matplotlib.dates as md import hax import lax #from lax.lichens import sciencerun0 from lax.lichens import sciencerun1 from Tools import * from FitElectronLifetime import FitElectronLifetime hax.init(experiment='XENON1T') dsets = hax.runs.datasets XeIsotope = 'Xe40keV' g1 = 0.1469 g2_b = 11.13 w = 0.0137 rectSelection = (150, 550, 4e3, 1.5e4) #LifetimeFile = '/home/zgreene/xenon1t/ElectronLifetime/FitData/ElectronLifetimeDataWithXe40keV.txt' LifetimeFile = '/home/zgreene/xenon1t/ElectronLifetime/FitData/ElectronLifetimeDataWith' + XeIsotope + '.txt' PathToData = '/project/lgrandi/zgreene/xenon1t/rootfiles/pax_v6.6.5/' #PathToFigures = '/home/zgreene/xenon1t/ElectronLifetime/Figures/Xe40keV/' PathToFigures = '/home/zgreene/xenon1t/ElectronLifetime/Figures/' + XeIsotope + '/'