# 'Time', 'Date', 'Event_run', 'Event_evtnum', 'Event_nuclear', # 'Event_nuclearRaw', 'GonioPos_x', 'GonioPos_y', 'GonioPos_z', # 'MultiHits_thetaIn_x', 'MultiHits_thetaIn_y', # 'MultiHits_thetaInErr_x', 'MultiHits_thetaInErr_y', # 'MultiHits_d0_x', 'MultiHits_d0_y', 'MultiHits_d0Err_x', # 'MultiHits_d0Err_y', 'Tracks_thetaIn_x', 'Tracks_thetaIn_y', # 'Tracks_thetaOut_x', 'Tracks_thetaOut_y', 'Tracks_thetaInErr_x', # 'Tracks_thetaInErr_y', 'Tracks_thetaOutErr_x', # 'Tracks_thetaOutErr_y', 'Tracks_d0_x', 'Tracks_d0_y', # 'Tracks_d0Err_x', 'Tracks_d0Err_y', 'Tracks_chi2_x', # 'Tracks_chi2_y', 'SingleTrack', 'MultiHit' chunksize = 2000000 interesting_columns = [ "Tracks_d0_x", "Tracks_thetaOut_x", "Tracks_thetaIn_x", "SingleTrack" ] cut_y_low, cut_y_high = my.get_from_csv(analysis_configuration_params_file, "cut_y_low", "cut_y_high") evts = pd.read_hdf(file_name, chunksize=chunksize, columns=interesting_columns, where=[ "SingleTrack == 1", "Tracks_d0_y > cut_y_low", "Tracks_d0_y < cut_y_high" ]) # events = evts.next() # python 2! # events = next(islice(evts, 1)) loaded_rows = 0 events = pd.DataFrame(columns=interesting_columns) print("[LOG]: Loading data...") for df in evts: loaded_rows = loaded_rows + df.shape[0]
################# FIT USING CRITICAL ANGLE AS CUT # theta_bending = fit_results["mean_CH"] # crystal_curvature_radius = crystal_lenght / (theta_bending*1e-6) # theta_c = math.sqrt(2*pot_well/particle_energy)*1e6 * (1 - critical_radius/crystal_curvature_radius) # [murad] #### How much to move the absolute position of the cuts # Example, with cuts [-5,5] and offset +3, we have an actual cut of [-2,8] # Useful if torsion correction is not employed, to center the cuts # center_offset = float(my.get_from_csv(analysis_configuration_params_file, # "chan_center_offset" # )) dtx_low, dtx_high = my.get_from_csv( analysis_configuration_params_file, "chan_hist_range_dtx_low", "chan_hist_range_dtx_high", ) dtx_nbins = int( my.get_from_csv(analysis_configuration_params_file, "chan_hist_tx_nbins")) x_histo = np.linspace(dtx_low, dtx_high, dtx_nbins + 1) # [murad] print("New Thetac: ", theta_c) lowest_percentage, highest_percentage = my.get_from_csv( analysis_configuration_params_file, "chan_low_percentage", "chan_high_percentage") dech_start, dech_end = my.get_from_csv(analysis_configuration_params_file, "dech_start", "dech_end") # dech_start, dech_end = 1e6*dech_start, 1e6*dech_end # convert to mura chan_fit_tolerance = my.get_from_csv(analysis_configuration_params_file,
# print("\nCut: +-",low_cut) # print(pd.Series(fit_results)) ################# ################# FIT USING CRITICAL ANGLE AS CUT # theta_bending = fit_results["mean_CH"] # crystal_curvature_radius = crystal_lenght / (theta_bending*1e-6) # theta_c = math.sqrt(2*pot_well/particle_energy)*1e6 * (1 - critical_radius/crystal_curvature_radius) # [murad] ang_cut_low = [-theta_c / 2, -theta_c] ang_cut_high = [theta_c / 2, theta_c] dtx_low, dtx_high = my.get_from_csv(analysis_configuration_params_file, "chan_hist_range_dtx_low", "chan_hist_range_dtx_high", ) dtx_nbins = int(my.get_from_csv(analysis_configuration_params_file, "chan_hist_tx_nbins")) x_histo = np.linspace(dtx_low,dtx_high,dtx_nbins + 1) # [murad] print("New Thetac: ", theta_c) lowest_percentage, highest_percentage = my.get_from_csv(analysis_configuration_params_file, "chan_low_percentage", "chan_high_percentage") chan_fit_tolerance = my.get_from_csv(analysis_configuration_params_file, "chan_fit_tolerance") max_iterations = int(my.get_from_csv(analysis_configuration_params_file,
# Read the parameters from the .csv # .csv example: # # parameter_name value # init_scan 1570674.0 # xmin 0.0 # xmax 0.475 # if os.path.isfile(crystal_name + '_crystal_analysis_parameters.csv'): # # crystal_analysis_parameters_file = crystal_name + '_crystal_analysis_parameters.csv' # else if os.path.isfile(run_number + '_crystal_analysis_parameters.csv'): # crystal_analysis_parameters_file = run_number + '_crystal_analysis_parameters.csv' # print("[LOG]: Reading crystal analysis parameters from ", crystal_analysis_parameters_file) cut_left, cut_right = my.get_from_csv("crystal_analysis_parameters.csv", "xmin", "xmax") cut_y_low, cut_y_high = my.get_from_csv(analysis_configuration_params_file, "cut_y_low", "cut_y_high") ################# ################# READ THE DATA # Read the data $chunksize lines at a time. evts=iterator on the groups of lines # DATAFRAME COLUMNS: # 'Time', 'Date', 'Event_run', 'Event_evtnum', 'Event_nuclear', # 'Event_nuclearRaw', 'GonioPos_x', 'GonioPos_y', 'GonioPos_z', # 'MultiHits_thetaIn_x', 'MultiHits_thetaIn_y', # 'MultiHits_thetaInErr_x', 'MultiHits_thetaInErr_y', # 'MultiHits_d0_x', 'MultiHits_d0_y', 'MultiHits_d0Err_x', # 'MultiHits_d0Err_y', 'Tracks_thetaIn_x', 'Tracks_thetaIn_y', # 'Tracks_thetaOut_x', 'Tracks_thetaOut_y', 'Tracks_thetaInErr_x', # 'Tracks_thetaInErr_y', 'Tracks_thetaOutErr_x',