File tree Expand file tree Collapse file tree 5 files changed +1671
-151
lines changed
libra_toolbox/neutron_detection/activation_foils Expand file tree Collapse file tree 5 files changed +1671
-151
lines changed Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 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-
191from . import explicit , settings , calculations
Original file line number Diff line number Diff line change 11from dataclasses import dataclass
22from 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
You can’t perform that action at this time.
0 commit comments