Skip to content

Commit f740deb

Browse files
Merge pull request #71 from LIBRA-project/rem/spectrum-fit
Spectrum fitting for activation foils
2 parents 0775c8e + c61e420 commit f740deb

File tree

5 files changed

+1671
-151
lines changed

5 files changed

+1671
-151
lines changed

example.ipynb

Lines changed: 739 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1 @@
1-
from datetime import datetime
2-
from . import calibration
3-
4-
from dataclasses import dataclass
5-
6-
7-
@dataclass
8-
class CheckSource:
9-
nuclide: calibration.Nuclide
10-
activity_date: datetime.date
11-
activity: float
12-
13-
14-
class ActivationFoil:
15-
nuclide: calibration.Nuclide
16-
mass: float
17-
18-
191
from . import explicit, settings, calculations

libra_toolbox/neutron_detection/activation_foils/calibration.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from dataclasses import dataclass
22
from typing import List
3+
import datetime
4+
import numpy as np
35

46

57
@dataclass
@@ -55,3 +57,36 @@ class Nuclide:
5557
intensity=[0.99976],
5658
half_life=312.20 * 24 * 3600,
5759
)
60+
61+
62+
@dataclass
63+
class CheckSource:
64+
nuclide: Nuclide
65+
activity_date: datetime.date
66+
activity: float
67+
68+
def get_expected_activity(self, date: datetime.date) -> float:
69+
70+
decay_constant = np.log(2) / self.nuclide.half_life
71+
72+
# Convert date to datetime if needed
73+
if isinstance(self.activity_date, datetime.date) and not isinstance(
74+
self.activity_date, datetime.datetime
75+
):
76+
77+
activity_datetime = datetime.datetime.combine(
78+
self.activity_date, datetime.datetime.min.time()
79+
)
80+
# add a timezone
81+
activity_datetime = activity_datetime.replace(tzinfo=date.tzinfo)
82+
else:
83+
activity_datetime = self.activity_date
84+
85+
time = (date - activity_datetime).total_seconds()
86+
act_expec = self.activity * np.exp(-decay_constant * time)
87+
return act_expec
88+
89+
90+
class ActivationFoil:
91+
nuclide: Nuclide
92+
mass: float

0 commit comments

Comments
 (0)