Skip to content

Conversation

@mcidlaso
Copy link

@mcidlaso mcidlaso commented Dec 19, 2025

These scripts contain functions to:

  • Make cuts on the outputs from sophronia to get the selected events and the efficiencies of the cuts
  • Get the lifetime and drift velocity for each run
  • Compute 3D krypton maps and apply them to correct the data
  • Some tests for these functions (still have a lot of work to do)

Copy link
Collaborator

@gonzaponte gonzaponte left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First round




def normalization(krmap, method, x_low, x_high, y_low, y_high):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The last 4 parameters need to be optional, since they are only relevant for method == "region". I also think it would be interesting to gather them in a dictionary to simplify the logic.


def normalization(krmap, method, x_low, x_high, y_low, y_high):

mu_values = krmap.mu
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since you are doing .dropna() everywhere, you can do it here already

Comment on lines 13 to 16
k, i, j = np.meshgrid(k_vals, i_vals, j_vals, indexing='ij')
k = k.ravel()
i = i.ravel()
j = j.ravel()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
k, i, j = np.meshgrid(k_vals, i_vals, j_vals, indexing='ij')
k = k.ravel()
i = i.ravel()
j = j.ravel()
k, i, j = map(np.ravel,
np.meshgrid(k_vals, i_vals, j_vals, indexing='ij'))


"""

def create_NaN_map(xy_range, dt_range, xy_nbins, dt_nbins):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def create_NaN_map(xy_range, dt_range, xy_nbins, dt_nbins):
def create_empty_map(xy_range, dt_range, xy_nbins, dt_nbins):

Comment on lines 27 to 34
xy_bins = np.linspace(xy_range[0], xy_range[1], xy_nbins + 1)
dt_bins = np.linspace(dt_range[0], dt_range[1], dt_nbins + 1)

#shift to bin centers invisible_cities.core.core_functions

i_range = np.arange(0, len(xy_bins)-1)
j_range = np.arange(0, len(xy_bins)-1)
k_range = np.arange(0, len(dt_bins)-1)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

xy_bins and dt_bins are only used to compute their length, which are given by the variables xy_nbins and dt_nbins

Comment on lines 89 to 90
range_S2t = (low_S2t, high_S2t)
sel_S2t = in_range(kdst.S2t, *range_S2t)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
range_S2t = (low_S2t, high_S2t)
sel_S2t = in_range(kdst.S2t, *range_S2t)
sel_S2t = in_range(kdst.S2t, low_S2t, high_S2t)



def select_DTrange(kdst, low_DT, high_DT):
df_DTrange = kdst[(kdst.DT >= low_DT) & (kdst.DT <= high_DT)]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use in_range



def select_nsipm(kdst, low_nsipm, high_nsipm):
sel_nsipm = (kdst.Nsipm >= low_nsipm) & (kdst.Nsipm <= high_nsipm)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use in_range

Comment on lines 142 to 146
d = {'eff diffusion band': [eff_DT], 'eff X rays': [eff_Xrays], 'eff 1S1 & 1S2': [eff_1S1_1S2],
'eff S2 trigger time': [eff_S2t], 'eff Rmax': [eff_Rmax], 'eff range DT': [eff_DTrange],
'eff number of SiPMS': [eff_nsipm], 'total efficiency': [total_eff]}

df_efficiencies = pd.DataFrame(data = d)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can also have numbers in the dictionary (instead of lists of 1 element) and then add index=[0] when creating the dataframe

…e selections in the same mask. Remove unnecessary functions
…want. Rewrite plot_lifetime_fit because LT_fit function no longer exists
…ed some comments in get_median and name of arguments in gaussian_fit and fit_map
…fixed value inside the function updated append_time_evol to these changes
…n (should I remove the limit values tests?). Also added tests for compute_drift_v() function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants