Skip to content
Draft
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ class DelayedElectronsExtraction(ElectronExtraction):
"""This class is used to simulate the extraction of electrons from the
sources of electron afterpulses."""

__version__ = "0.0.2"
__version__ = "0.0.3"

child_plugin = True

depends_on = "delayed_electrons_at_interface"
provides = "extracted_delayed_electrons"
data_kind = "delayed_individual_electrons"
data_kind = "delayed_extracted_electrons"

def compute(self, delayed_individual_electrons):
return super().compute(individual_electrons=delayed_individual_electrons)
def compute(self, delayed_extracted_electrons):
return super().compute(individual_electrons=delayed_extracted_electrons)
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ class ExtractedElectronsMerger(VerticalMergerPlugin):
depends_on = ("extracted_electrons", "extracted_delayed_electrons")

provides = "merged_extracted_electrons"
data_kind = "individual_electrons"
__version__ = "0.0.2"
data_kind = "extracted_electrons"
__version__ = "0.0.3"


@export
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ class PhotoIonizationElectrons(FuseBasePlugin):

depends_on = (
"s2_photons_sum",
"s2_photons",
"extracted_electrons",
"microphysics_summary",
)
Expand Down Expand Up @@ -177,7 +176,7 @@ def setup(self):
self.photoionization_time_cutoff_mc / self.photoionization_time_constant
)

def compute(self, interactions_in_roi, individual_electrons):
def compute(self, interactions_in_roi, extracted_electrons):

# Just apply this to clusters with S2 photons
mask = interactions_in_roi["sum_s2_photons"] > 0
Expand All @@ -189,7 +188,7 @@ def compute(self, interactions_in_roi, individual_electrons):
return np.zeros(0, self.dtype)

electrons_per_interaction, unique_cluster_id = group_electrons_by_cluster_id(
individual_electrons
extracted_electrons
)
matching_index = np.searchsorted(unique_cluster_id, interactions_in_roi[mask]["cluster_id"])

Expand Down
4 changes: 2 additions & 2 deletions fuse/plugins/detector_physics/electron_extraction.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ class ElectronExtraction(FuseBasePlugin):
"""Plugin to simulate the loss of electrons during the extraction of
drifted electrons from the liquid into the gas phase."""

__version__ = "0.3.0"
__version__ = "0.4.0"

depends_on = "electrons_at_interface"
provides = "extracted_electrons"
data_kind = "individual_electrons"
data_kind = "extracted_electrons"

save_when = strax.SaveWhen.TARGET

Expand Down
10 changes: 5 additions & 5 deletions fuse/plugins/detector_physics/s2_photon_propagation.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,25 +241,25 @@ def setup(self):
self._mem_cap_bytes = int(256 * 1024**2) # ~256 MB for Ne×C scratch
self._max_electrons_block = None # computed lazily per chunk

def compute(self, individual_electrons, start, end):
def compute(self, extracted_electrons, start, end):

if len(individual_electrons) == 0:
if len(extracted_electrons) == 0:
yield self.chunk(start=start, end=end, data=np.zeros(0, dtype=self.dtype))
return

# Downchunking (logic unchanged)
electron_time_gaps = individual_electrons["time"][1:] - individual_electrons["time"][:-1]
electron_time_gaps = extracted_electrons["time"][1:] - extracted_electrons["time"][:-1]
electron_time_gaps = np.append(electron_time_gaps, 0)

split_index = find_electron_split_index(
individual_electrons,
extracted_electrons,
electron_time_gaps,
file_size_limit=self.propagated_s2_photons_file_size_target,
min_gap_length=self.min_electron_gap_length_for_splitting,
mean_n_photons_per_electron=self.s2_secondary_sc_gain_mc,
)

electron_chunks = np.array_split(individual_electrons, split_index)
electron_chunks = np.array_split(extracted_electrons, split_index)

n_chunks = len(electron_chunks)
if n_chunks > 1:
Expand Down
12 changes: 6 additions & 6 deletions fuse/plugins/detector_physics/secondary_scintillation.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,10 @@ def setup(self):

self.pmt_mask = np.array(self.gains)

def compute(self, individual_electrons, interactions_in_roi):
def compute(self, extracted_electrons, interactions_in_roi):

# Just apply this to clusters with electrons
clusters_with_extracted_electrons = np.unique(individual_electrons["cluster_id"])
clusters_with_extracted_electrons = np.unique(extracted_electrons["cluster_id"])
mask = np.in1d(interactions_in_roi["cluster_id"], clusters_with_extracted_electrons)

if len(interactions_in_roi[mask]) == 0:
Expand All @@ -159,7 +159,7 @@ def compute(self, individual_electrons, interactions_in_roi):
}

positions = np.array(
[individual_electrons["x_interface"], individual_electrons["y_interface"]]
[extracted_electrons["x_interface"], extracted_electrons["y_interface"]]
).T

electron_gains = self.get_s2_light_yield(positions=positions)
Expand All @@ -170,12 +170,12 @@ def compute(self, individual_electrons, interactions_in_roi):
len(n_photons_per_ele), dtype=self.dtype[self.result_name_photons]
)
result_photons["n_s2_photons"] = n_photons_per_ele
result_photons["time"] = individual_electrons["time"]
result_photons["endtime"] = individual_electrons["endtime"]
result_photons["time"] = extracted_electrons["time"]
result_photons["endtime"] = extracted_electrons["endtime"]

# Calculate the sum of photons per interaction
grouped_result_photons, unique_cluster_id = group_result_photons_by_cluster_id(
result_photons, individual_electrons["cluster_id"]
result_photons, extracted_electrons["cluster_id"]
)

sum_photons_per_interaction = np.array(
Expand Down
Loading