Beispiel #1
0
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
Beispiel #3
0
    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
Beispiel #4
0
    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,
                    )
Beispiel #6
0
        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
Beispiel #7
0
    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
Beispiel #8
0
    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'])
Beispiel #11
0
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])
Beispiel #12
0
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)
Beispiel #13
0
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)




Beispiel #14
0
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])
Beispiel #15
0
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!')
Beispiel #16
0
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)



Beispiel #17
0
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)
Beispiel #20
0
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])
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
Beispiel #22
0
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 + '/'