TDCRPy 1.8.14__py3-none-any.whl → 1.8.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of TDCRPy might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: TDCRPy
3
- Version: 1.8.14
3
+ Version: 1.8.16
4
4
  Summary: TDCR model
5
5
  Home-page: https://pypi.org/project/TDCRPy/
6
6
  Author: RomainCoulon (Romain Coulon)
@@ -30,7 +30,7 @@ Requires-Dist: matplotlib
30
30
 
31
31
  # TDCRPy
32
32
 
33
- `TDCRPy` is a Python code to calculate detection efficiency of a liquide scintillation counter using 3-photomultiplier tubes.
33
+ `TDCRPy` is a Python code to calculate detection efficiency of a liquid scintillation counter using 3-photomultiplier tubes.
34
34
  The calculation is based on the photo-physical model called of the Triple-to-Double-Coincidence-Ratio method (TDCR) and a Monte-Carlo sampling allowing to adress complexe decay schemes and radionuclide mixtures.
35
35
 
36
36
  The code is developped and maintained by the BIPM (MIT license).
@@ -88,111 +88,6 @@ At first, the TDCRPy module must be imported.
88
88
  ```python
89
89
  import tdcrpy
90
90
  ```
91
-
92
- ### TDCRoptimize.eff()
93
-
94
- In practice, `TDCRoptimize.eff()` is the fonction used to estimate the counting efficiency of a TDCR system. It approximates the free parameter(s) `L` in order to minimize the residual estimated by `TDCRPy()` for a given set of measurement data. In `mode2 = "sym"`, the *golden section search technique* is applied with a maximum number of iterations of 20. In `mode2 = "asym"`, the *Nelder-Mead technique* is applied with a maximum number of iterations of 20.
95
-
96
- `TDCRoptimize.eff()` is parametrised by the following parameters:
97
- * `TD` (type `float`) is the quotient of the triple coincidence count rate divided by the logic sum of the double coincidence count rate.
98
- * `TAB` (type `float`) is the quotient of the triple coincidence count rate divided by the double coincidence count rate between the channel A and B.
99
- * `TBC` (type `float`) is the quotient of the triple coincidence count rate divided by the double coincidence count rate between the channel B and C.
100
- * `TAC` (type `float`) is the quotient of the triple coincidence count rate divided by the double coincidence count rate between the channel A and C.
101
- * `rad` (type `string`) is the list of radionuclides contained in the solution, e.g. `"H-3"`, `"H-3, Co-60"`.
102
- * `pmf_1` (type `string`) is the probability of each radionuclide contained in `rad`. If `rad = "H-3, Co-60"` and `pmf_1="0.8, 0.2"`, the solution contains 80 % of tritium and 20 % of cobalt 60.
103
- * `kB` (type `float`) is the Birks constant caracterizing the scintillator. It is espressed in cm/keV.
104
- * `V` (type `float`) is the volume in ml of the scintillator.
105
- * `mode2` sets whether the TDCR system has to be considered symetrical `mode2="sym"` or not symetrical `mode2="asym"`.
106
- * `N` (type `integer`) is the number of Monte-Carlo trials corresponding each, to a simulated nuclear decay in the scintillator. Monte-Carlo calculation is not used in the case of pure beta emitting radionuclides where the analytical model is implemented. It is an optional parameter set by default at `N = 10000`.
107
- * `L` (type `float`) initial guess of the free parameter(s) in keV^-1^. It represents the number of photoelectrons produced by the PMTs per unit of ionisation energy released in the scintillator during a decay and in the abscence of scintillation quenching. It is set by default at `L = 1`.
108
-
109
- `TDCRoptimize.eff()` returns:
110
- * the global free parameter *L*,
111
- * the free parameters related to each channel (*L<sub>A</sub>*, *L<sub>B</sub>*, *L<sub>C</sub>*),
112
- * the estimation of the counting efficiency of single events *S*,
113
- * the standard uncertainty of the estimation of *S*,
114
- * the estimation of the counting efficiency of double coincidences *D*,
115
- * the standard uncertainty of the estimation of *D*,
116
- * the estimation of the counting efficiency of triple coincidences *T*,
117
- * the standard uncertainty of the estimation of *T*.
118
-
119
- Example with `mode2 = "sym"`:
120
-
121
- ```python
122
- import tdcrpy
123
-
124
- TD = 0.977667386529166
125
- TAB = 0.992232838598821
126
- TBC = 0.992343419459002
127
- TAC = 0.99275350064608
128
- Rad="Co-60"
129
- pmf_1="1"
130
- N = 250
131
- kB =1.0e-5
132
- V = 10
133
- mode2 = "sym"
134
-
135
- result = tdcrpy.TDCRoptimize.eff(TD, TAB, TBC, TAC, Rad, pmf_1, kB, V, mode2, N=N)
136
-
137
- print("Global free parameter = \t", round(result[0],4), " keV-1")
138
- print("Free parameter (PMT A) = \t", round(result[1][0],4) , " keV-1")
139
- print("Free parameter (PMT B) = \t", round(result[1][1],4) , " keV-1")
140
- print("Free parameter (PMT C) = \t", round(result[1][2],4) , " keV-1")
141
- print("efficiency S = \t", round(result[2],4), "+/-", round(result[3],4))
142
- print("efficiency D = \t", round(result[4],4), "+/-", round(result[5],4))
143
- print("efficiency T = \t", round(result[6],4), "+/-", round(result[7],4))
144
- ```
145
-
146
- ```Console
147
- Global free parameter = 1.3061 keV-1
148
- Free parameter (PMT A) = 1.3061 keV-1
149
- Free parameter (PMT B) = 1.3061 keV-1
150
- Free parameter (PMT C) = 1.3061 keV-1
151
- efficiency S = 0.979 +/- 0.0067
152
- efficiency D = 0.9833 +/- 0.0064
153
- efficiency T = 0.963 +/- 0.0096
154
- ```
155
-
156
- Example with `mode2 = "asym"`:
157
-
158
- ```python
159
- import tdcrpy
160
-
161
- TD = 0.977667386529166
162
- TAB = 0.992232838598821
163
- TBC = 0.992343419459002
164
- TAC = 0.99275350064608
165
- Rad="Co-60"
166
- pmf_1="1"
167
- N = 250
168
- kB =1.0e-5
169
- V = 10
170
- mode2 = "asym"
171
-
172
- result = tdcrpy.TDCRoptimize.eff(TD, TAB, TBC, TAC, Rad, pmf_1, kB, V, mode2, N=N)
173
-
174
- print("Global free parameter = \t", round(result[0],4), " keV-1")
175
- print("Free parameter (PMT A) = \t", round(result[1][0],4) , " keV-1")
176
- print("Free parameter (PMT B) = \t", round(result[1][1],4) , " keV-1")
177
- print("Free parameter (PMT C) = \t", round(result[1][2],4) , " keV-1")
178
- print("efficiency S = \t", round(result[2],4), "+/-", round(result[3],4))
179
- print("efficiency D = \t", round(result[4],4), "+/-", round(result[5],4))
180
- print("efficiency T = \t", round(result[6],4), "+/-", round(result[7],4))
181
- ```
182
-
183
- ```Console
184
- Global free parameter = 1.3061 keV-1
185
- Free parameter (PMT A) = 1.3061 keV-1
186
- Free parameter (PMT B) = 1.3061 keV-1
187
- Free parameter (PMT C) = 1.3061 keV-1
188
- efficiency S = 0.979 +/- 0.0067
189
- efficiency D = 0.9833 +/- 0.0064
190
- efficiency T = 0.963 +/- 0.0096
191
- ```
192
-
193
-
194
-
195
-
196
91
  ### TDCRPy()
197
92
 
198
93
  The main function of the TDCRPy module is `TDCRPy()` in which the Monte-Carlo Triple-to-Double Coincidence Ratio model is implemented. The computation is made for a given solution containing a radionuclide (or a mixture of radionuclides) `rad`, a given volume of scintillator `V` and a given Birks constant `kB`.
@@ -334,4 +229,105 @@ An advanced setting can be configured in the `config.toml` file for functions `T
334
229
  and `nE_alpha = 1000`. These values ensure an error on quenched energy estimation from numerical approximation below 10^-3^.
335
230
  * By default the calculation is set for Ultima-Gold cocktail mixed with a small amount of aqueous solution. You can adapt for a specific scintillator by changing the `density` (default `density=0.96`), the mean charge number `Z` (default `Z=5.2`) and the mean mass number `A` (default `A=11.04`) of the scintillator.
336
231
  * To optimize the speed of the Monte-Carlo calculation, a spline interpolation on precalculated quenched energy is applied. The parameter `depthSpline` (default `depthSpline = 5`) sets the number of bins on each side of the energy point on which the interpolation is applied. The parameter `Einterp` (default `Einterp = 1`) set the energy (in keV) above which the interpolation is applied.
232
+
233
+ ### TDCRoptimize.eff()
234
+
235
+ An optimization procedure `TDCRoptimize.eff()` is proposed to estimate the counting efficiency of a TDCR system. It approximates the free parameter(s) `L` in order to minimize the residual estimated by `TDCRPy()` for a given set of measurement data. In `mode2 = "sym"`, the *golden section search technique* is applied with a maximum number of iterations of 20. In `mode2 = "asym"`, the *Nelder-Mead technique* is applied with a maximum number of iterations of 20.
236
+
237
+ `TDCRoptimize.eff()` is parametrised by the following parameters:
238
+ * `TD` (type `float`) is the quotient of the triple coincidence count rate divided by the logic sum of the double coincidence count rate.
239
+ * `TAB` (type `float`) is the quotient of the triple coincidence count rate divided by the double coincidence count rate between the channel A and B.
240
+ * `TBC` (type `float`) is the quotient of the triple coincidence count rate divided by the double coincidence count rate between the channel B and C.
241
+ * `TAC` (type `float`) is the quotient of the triple coincidence count rate divided by the double coincidence count rate between the channel A and C.
242
+ * `rad` (type `string`) is the list of radionuclides contained in the solution, e.g. `"H-3"`, `"H-3, Co-60"`.
243
+ * `pmf_1` (type `string`) is the probability of each radionuclide contained in `rad`. If `rad = "H-3, Co-60"` and `pmf_1="0.8, 0.2"`, the solution contains 80 % of tritium and 20 % of cobalt 60.
244
+ * `kB` (type `float`) is the Birks constant caracterizing the scintillator. It is espressed in cm/keV.
245
+ * `V` (type `float`) is the volume in ml of the scintillator.
246
+ * `mode2` sets whether the TDCR system has to be considered symetrical `mode2="sym"` or not symetrical `mode2="asym"`.
247
+ * `N` (type `integer`) is the number of Monte-Carlo trials corresponding each, to a simulated nuclear decay in the scintillator. Monte-Carlo calculation is not used in the case of pure beta emitting radionuclides where the analytical model is implemented. It is an optional parameter set by default at `N = 10000`.
248
+ * `L` (type `float`) initial guess of the free parameter(s) in keV^-1^. It represents the number of photoelectrons produced by the PMTs per unit of ionisation energy released in the scintillator during a decay and in the abscence of scintillation quenching. It is set by default at `L = 1`.
249
+
250
+ `TDCRoptimize.eff()` returns:
251
+ * the global free parameter *L*,
252
+ * the free parameters related to each channel (*L<sub>A</sub>*, *L<sub>B</sub>*, *L<sub>C</sub>*),
253
+ * the estimation of the counting efficiency of single events *S*,
254
+ * the standard uncertainty of the estimation of *S*,
255
+ * the estimation of the counting efficiency of double coincidences *D*,
256
+ * the standard uncertainty of the estimation of *D*,
257
+ * the estimation of the counting efficiency of triple coincidences *T*,
258
+ * the standard uncertainty of the estimation of *T*.
259
+
260
+ Example with `mode2 = "sym"`:
261
+
262
+ ```python
263
+ import tdcrpy
264
+
265
+ TD = 0.977667386529166
266
+ TAB = 0.992232838598821
267
+ TBC = 0.992343419459002
268
+ TAC = 0.99275350064608
269
+ Rad="Co-60"
270
+ pmf_1="1"
271
+ N = 250
272
+ kB =1.0e-5
273
+ V = 10
274
+ mode2 = "sym"
275
+
276
+ result = tdcrpy.TDCRoptimize.eff(TD, TAB, TBC, TAC, Rad, pmf_1, kB, V, mode2, N=N)
277
+
278
+ print("Global free parameter = \t", round(result[0],4), " keV-1")
279
+ print("Free parameter (PMT A) = \t", round(result[1][0],4) , " keV-1")
280
+ print("Free parameter (PMT B) = \t", round(result[1][1],4) , " keV-1")
281
+ print("Free parameter (PMT C) = \t", round(result[1][2],4) , " keV-1")
282
+ print("efficiency S = \t", round(result[2],4), "+/-", round(result[3],4))
283
+ print("efficiency D = \t", round(result[4],4), "+/-", round(result[5],4))
284
+ print("efficiency T = \t", round(result[6],4), "+/-", round(result[7],4))
285
+ ```
286
+
287
+ ```Console
288
+ Global free parameter = 1.3061 keV-1
289
+ Free parameter (PMT A) = 1.3061 keV-1
290
+ Free parameter (PMT B) = 1.3061 keV-1
291
+ Free parameter (PMT C) = 1.3061 keV-1
292
+ efficiency S = 0.979 +/- 0.0067
293
+ efficiency D = 0.9833 +/- 0.0064
294
+ efficiency T = 0.963 +/- 0.0096
295
+ ```
296
+
297
+ Example with `mode2 = "asym"`:
298
+
299
+ ```python
300
+ import tdcrpy
301
+
302
+ TD = 0.977667386529166
303
+ TAB = 0.992232838598821
304
+ TBC = 0.992343419459002
305
+ TAC = 0.99275350064608
306
+ Rad="Co-60"
307
+ pmf_1="1"
308
+ N = 250
309
+ kB =1.0e-5
310
+ V = 10
311
+ mode2 = "asym"
312
+
313
+ result = tdcrpy.TDCRoptimize.eff(TD, TAB, TBC, TAC, Rad, pmf_1, kB, V, mode2, N=N)
314
+
315
+ print("Global free parameter = \t", round(result[0],4), " keV-1")
316
+ print("Free parameter (PMT A) = \t", round(result[1][0],4) , " keV-1")
317
+ print("Free parameter (PMT B) = \t", round(result[1][1],4) , " keV-1")
318
+ print("Free parameter (PMT C) = \t", round(result[1][2],4) , " keV-1")
319
+ print("efficiency S = \t", round(result[2],4), "+/-", round(result[3],4))
320
+ print("efficiency D = \t", round(result[4],4), "+/-", round(result[5],4))
321
+ print("efficiency T = \t", round(result[6],4), "+/-", round(result[7],4))
322
+ ```
323
+
324
+ ```Console
325
+ Global free parameter = 1.3061 keV-1
326
+ Free parameter (PMT A) = 1.3061 keV-1
327
+ Free parameter (PMT B) = 1.3061 keV-1
328
+ Free parameter (PMT C) = 1.3061 keV-1
329
+ efficiency S = 0.979 +/- 0.0067
330
+ efficiency D = 0.9833 +/- 0.0064
331
+ efficiency T = 0.963 +/- 0.0096
332
+ ```
337
333
 
@@ -1,9 +1,9 @@
1
- tdcrpy/TDCRPy.py,sha256=XJHHuGwsp_yn422nupus6luRAp4a58vZPT9PO8ilOVE,53211
1
+ tdcrpy/TDCRPy.py,sha256=Bum4D8UYnWrr2Fa--2RdvvpTaeqIZ4KGc2o230hyt8A,53469
2
2
  tdcrpy/TDCRPy1.py,sha256=QTBZh5B5JWnGB0BQfD-cFmwA9W080OD4sG-aj50-ejo,38106
3
- tdcrpy/TDCR_model_lib.py,sha256=PE4365_HRBc5lB_4n0W2-UQ32LF9juA0Z_mI4M2cxtI,96132
3
+ tdcrpy/TDCR_model_lib.py,sha256=k1SYxO5qZyL-IOn-EX465zXa8H4DY8eNZHqVqlkoI8k,98155
4
4
  tdcrpy/TDCRoptimize.py,sha256=c2XIGveeLdVYYek4Rg6dygMvVA2xIrIkMb3L-_jUucM,6496
5
5
  tdcrpy/__init__.py,sha256=vQslGLsoZPIceaitnSHOqN6lUdjEyJ3YhfJ6tYdXt-s,127
6
- tdcrpy/config.toml,sha256=xPejXoPI4m4FgG8hIYLEyMA-y8MBCF3PaWtv55TqHeQ,1646
6
+ tdcrpy/config.toml,sha256=Qm7_Mo3nBKUfNLqhUMP4zA-pjNksy9DzRb7LVR135oY,1876
7
7
  tdcrpy/test2.py,sha256=poLLXJyIaCeqh1VSkwgbi-udvY7lQjxz_YStKjJXGhU,501
8
8
  tdcrpy/EfficiencyCurves/Ag-108/EffD_Ag-108_[1]_1e-05.txt,sha256=OUoMuqPTw3fXLu5qaHUFN2iW0dPJ9cRyh99a6mUcEus,43
9
9
  tdcrpy/EfficiencyCurves/Ag-108/EffS_Ag-108_[1]_1e-05.txt,sha256=hojCq_MFAw8ONjoDmQfeE9gCXISwhScgAk-N0Pjbg00,45
@@ -1041,6 +1041,8 @@ tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-beta-_200_2000k.txt,sha256=mqo4-
1041
1041
  tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_1_200k.txt,sha256=kxDaTMq-3H_telytHRV-bJXynqSyW9SmUMRVDW6y3yY,4213603
1042
1042
  tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_2000_10000k.txt,sha256=oKl_dTNoQCPAliK1erzvtO1PHBCRItAZvY0wkBa_qN4,16872466
1043
1043
  tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_200_2000k.txt,sha256=B1f_TWs6wzreI4mbYYJDOkm2aDik49w4yQ96tR7Awe0,18978766
1044
+ tdcrpy/Micelle/2nmfaq01.csv,sha256=nLnOq8HyJGJSHeJ91-ZLRUZPgmaogiHcQk1SicHYaqE,1340
1045
+ tdcrpy/Micelle/faq01.csv,sha256=qltui-MvcFMlgH3czHx-EknHNE2LdCvN5S3SN-OAdmw,4065
1044
1046
  tdcrpy/Quenching/QuenchEnergyAlpha_0.015.txt,sha256=kaSid3pQuBSwIeJ7CTmx6NsFgr2_A6u5GOgMqJiVvQA,195818
1045
1047
  tdcrpy/Quenching/QuenchEnergyAlpha_1.1e-05.txt,sha256=lozxOyzSB4FAukpuTQUGbtQHqiWldqMXXMgstEC76sc,182522
1046
1048
  tdcrpy/Quenching/QuenchEnergyAlpha_1.2e-05.txt,sha256=pjH7BVj9ohsPjL6hD6nJvL76nIL6HhkcVsmRYskI7dU,182825
@@ -1078,8 +1080,8 @@ tdcrpy/docs/_build/html/source/modules.html,sha256=Jf-qxVBId0UgpwyvYuyjtMNG-ezPO
1078
1080
  tdcrpy/docs/_build/html/source/tdcrpy.html,sha256=-38lHMNFB22p1tWJEeN3yDqfDiCYE304vxDamO1-iRc,3779
1079
1081
  tdcrpy/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1080
1082
  tdcrpy/test/test_tdcrpy.py,sha256=3b9PeT2ROGGEFM_G4EVlDQMdP4B3ONp4a0kh1bKyVkI,4003
1081
- TDCRPy-1.8.14.dist-info/LICENCE.md,sha256=ZTpWyGU3qv_iwEpgvCijoCuCYpOPpyzJCgOk46WpUKU,1066
1082
- TDCRPy-1.8.14.dist-info/METADATA,sha256=tsr1_9F0SFVSoetVUUZtOPfQGkxQ0UU1LAaFqidjI20,15601
1083
- TDCRPy-1.8.14.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
1084
- TDCRPy-1.8.14.dist-info/top_level.txt,sha256=f4vzFFcKSEnonAACs0ZXuRczmroLLqtPTqXFymU_VU0,14
1085
- TDCRPy-1.8.14.dist-info/RECORD,,
1083
+ TDCRPy-1.8.16.dist-info/LICENCE.md,sha256=ZTpWyGU3qv_iwEpgvCijoCuCYpOPpyzJCgOk46WpUKU,1066
1084
+ TDCRPy-1.8.16.dist-info/METADATA,sha256=gsWRh4ib9yuqUMqvBvaOOnraTBbMRJ6mQcOoqZgiI9g,15600
1085
+ TDCRPy-1.8.16.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
1086
+ TDCRPy-1.8.16.dist-info/top_level.txt,sha256=f4vzFFcKSEnonAACs0ZXuRczmroLLqtPTqXFymU_VU0,14
1087
+ TDCRPy-1.8.16.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,150 @@
1
+ 10;0.9
2
+ 20;0.84
3
+ 30;0.84
4
+ 40;0.84
5
+ 50;0.84
6
+ 60;0.85
7
+ 70;0.85
8
+ 80;0.86
9
+ 90;0.86
10
+ 100;0.87
11
+ 110;0.87
12
+ 120;0.87
13
+ 130;0.87
14
+ 140;0.87
15
+ 150;0.88
16
+ 160;0.88
17
+ 170;0.88
18
+ 180;0.88
19
+ 190;0.88
20
+ 200;0.89
21
+ 210;0.89
22
+ 220;0.89
23
+ 230;0.89
24
+ 240;0.89
25
+ 250;0.89
26
+ 260;0.89
27
+ 270;0.89
28
+ 280;0.89
29
+ 290;0.89
30
+ 300;0.89
31
+ 310;0.89
32
+ 320;0.89
33
+ 330;0.89
34
+ 340;0.89
35
+ 350;0.89
36
+ 360;0.89
37
+ 370;0.89
38
+ 380;0.89
39
+ 390;0.89
40
+ 400;0.89
41
+ 410;0.89
42
+ 420;0.89
43
+ 430;0.89
44
+ 440;0.89
45
+ 450;0.89
46
+ 460;0.89
47
+ 470;0.89
48
+ 480;0.89
49
+ 490;0.89
50
+ 500;0.89
51
+ 510;0.89
52
+ 520;0.89
53
+ 530;0.89
54
+ 540;0.89
55
+ 550;0.89
56
+ 560;0.89
57
+ 570;0.89
58
+ 580;0.89
59
+ 590;0.89
60
+ 600;0.89
61
+ 610;0.89
62
+ 620;0.89
63
+ 630;0.89
64
+ 640;0.89
65
+ 650;0.89
66
+ 660;0.89
67
+ 670;0.89
68
+ 680;0.89
69
+ 690;0.89
70
+ 700;0.89
71
+ 710;0.89
72
+ 720;0.89
73
+ 730;0.89
74
+ 740;0.89
75
+ 750;0.89
76
+ 760;0.89
77
+ 770;0.89
78
+ 780;0.89
79
+ 790;0.89
80
+ 800;0.89
81
+ 810;0.89
82
+ 820;0.89
83
+ 830;0.89
84
+ 840;0.89
85
+ 850;0.89
86
+ 860;0.89
87
+ 870;0.89
88
+ 880;0.89
89
+ 890;0.89
90
+ 900;0.89
91
+ 910;0.89
92
+ 920;0.89
93
+ 930;0.89
94
+ 940;0.89
95
+ 950;0.89
96
+ 960;0.89
97
+ 970;0.89
98
+ 980;0.89
99
+ 990;0.89
100
+ 1000;0.9
101
+ 1010;0.9
102
+ 1020;0.9
103
+ 1030;0.9
104
+ 1040;0.9
105
+ 1050;0.9
106
+ 1060;0.9
107
+ 1070;0.9
108
+ 1080;0.9
109
+ 1090;0.9
110
+ 1100;0.9
111
+ 1110;0.9
112
+ 1120;0.9
113
+ 1130;0.9
114
+ 1140;0.9
115
+ 1150;0.9
116
+ 1160;0.9
117
+ 1170;0.9
118
+ 1180;0.9
119
+ 1190;0.9
120
+ 1200;0.9
121
+ 1210;0.9
122
+ 1220;0.9
123
+ 1230;0.9
124
+ 1240;0.9
125
+ 1250;0.9
126
+ 1260;0.9
127
+ 1270;0.9
128
+ 1280;0.9
129
+ 1290;0.9
130
+ 1300;0.9
131
+ 1310;0.9
132
+ 1320;0.9
133
+ 1330;0.9
134
+ 1340;0.9
135
+ 1350;0.9
136
+ 1360;0.9
137
+ 1370;0.9
138
+ 1380;0.9
139
+ 1390;0.9
140
+ 1400;0.9
141
+ 1410;0.9
142
+ 1420;0.9
143
+ 1430;0.9
144
+ 1440;0.9
145
+ 1450;0.9
146
+ 1460;0.9
147
+ 1470;0.9
148
+ 1480;0.9
149
+ 1490;0.9
150
+ 1500;0.9
@@ -0,0 +1,151 @@
1
+ 0;0.9;0.9;0.9;0.9;0.9
2
+ 10;0.9;0.9;0.9;0.9;0.9
3
+ 20;0.88;0.84;0.75;0.66;0.58
4
+ 30;0.88;0.84;0.76;0.67;0.6
5
+ 40;0.88;0.84;0.76;0.67;0.6
6
+ 50;0.88;0.84;0.76;0.67;0.6
7
+ 60;0.88;0.85;0.76;0.67;0.6
8
+ 70;0.88;0.85;0.77;0.69;0.61
9
+ 80;0.88;0.86;0.78;0.7;0.62
10
+ 90;0.88;0.86;0.79;0.71;0.63
11
+ 100;0.88;0.87;0.8;0.72;0.64
12
+ 110;0.89;0.87;0.8;0.73;0.65
13
+ 120;0.89;0.87;0.81;0.74;0.67
14
+ 130;0.89;0.87;0.82;0.75;0.68
15
+ 140;0.89;0.87;0.82;0.76;0.69
16
+ 150;0.89;0.88;0.83;0.77;0.71
17
+ 160;0.89;0.88;0.83;0.78;0.72
18
+ 170;0.89;0.88;0.84;0.79;0.74
19
+ 180;0.89;0.88;0.84;0.81;0.76
20
+ 190;0.89;0.88;0.85;0.82;0.78
21
+ 200;0.9;0.89;0.86;0.83;0.8
22
+ 210;0.9;0.89;0.86;0.84;0.8
23
+ 220;0.9;0.89;0.86;0.84;0.81
24
+ 230;0.9;0.89;0.86;0.85;0.82
25
+ 240;0.9;0.89;0.86;0.85;0.82
26
+ 250;0.9;0.89;0.86;0.86;0.83
27
+ 260;0.9;0.89;0.86;0.86;0.83
28
+ 270;0.9;0.89;0.86;0.86;0.84
29
+ 280;0.9;0.89;0.86;0.87;0.85
30
+ 290;0.9;0.89;0.86;0.87;0.85
31
+ 300;0.9;0.89;0.87;0.87;0.86
32
+ 310;0.9;0.89;0.87;0.87;0.86
33
+ 320;0.9;0.89;0.87;0.87;0.86
34
+ 330;0.9;0.89;0.87;0.87;0.86
35
+ 340;0.9;0.89;0.87;0.87;0.86
36
+ 350;0.9;0.89;0.87;0.87;0.86
37
+ 360;0.9;0.89;0.87;0.87;0.86
38
+ 370;0.9;0.89;0.87;0.87;0.86
39
+ 380;0.9;0.89;0.87;0.87;0.86
40
+ 390;0.9;0.89;0.87;0.87;0.86
41
+ 400;0.9;0.89;0.88;0.87;0.86
42
+ 410;0.9;0.89;0.88;0.87;0.86
43
+ 420;0.9;0.89;0.88;0.87;0.86
44
+ 430;0.9;0.89;0.88;0.87;0.86
45
+ 440;0.9;0.89;0.88;0.87;0.86
46
+ 450;0.9;0.89;0.88;0.87;0.86
47
+ 460;0.9;0.89;0.88;0.87;0.86
48
+ 470;0.9;0.89;0.88;0.87;0.86
49
+ 480;0.9;0.89;0.88;0.87;0.87
50
+ 490;0.9;0.89;0.88;0.87;0.87
51
+ 500;0.9;0.89;0.89;0.87;0.87
52
+ 510;0.9;0.89;0.89;0.88;0.87
53
+ 520;0.9;0.89;0.89;0.88;0.87
54
+ 530;0.9;0.89;0.89;0.88;0.87
55
+ 540;0.9;0.89;0.89;0.88;0.87
56
+ 550;0.9;0.89;0.89;0.88;0.87
57
+ 560;0.9;0.89;0.89;0.88;0.87
58
+ 570;0.9;0.89;0.89;0.88;0.87
59
+ 580;0.9;0.89;0.89;0.88;0.87
60
+ 590;0.9;0.89;0.89;0.88;0.87
61
+ 600;0.9;0.89;0.89;0.88;0.87
62
+ 610;0.9;0.89;0.89;0.88;0.87
63
+ 620;0.9;0.89;0.89;0.88;0.87
64
+ 630;0.9;0.89;0.89;0.88;0.87
65
+ 640;0.9;0.89;0.89;0.88;0.87
66
+ 650;0.9;0.89;0.89;0.88;0.87
67
+ 660;0.9;0.89;0.89;0.88;0.87
68
+ 670;0.9;0.89;0.89;0.88;0.87
69
+ 680;0.9;0.89;0.89;0.89;0.87
70
+ 690;0.9;0.89;0.89;0.89;0.87
71
+ 700;0.9;0.89;0.89;0.89;0.87
72
+ 710;0.9;0.89;0.89;0.89;0.87
73
+ 720;0.9;0.89;0.89;0.89;0.87
74
+ 730;0.9;0.89;0.89;0.89;0.87
75
+ 740;0.9;0.89;0.89;0.89;0.87
76
+ 750;0.9;0.89;0.89;0.89;0.87
77
+ 760;0.9;0.89;0.89;0.89;0.88
78
+ 770;0.9;0.89;0.89;0.89;0.88
79
+ 780;0.9;0.89;0.89;0.89;0.88
80
+ 790;0.9;0.89;0.89;0.89;0.88
81
+ 800;0.9;0.89;0.89;0.89;0.88
82
+ 810;0.9;0.89;0.89;0.89;0.88
83
+ 820;0.9;0.89;0.89;0.89;0.88
84
+ 830;0.9;0.89;0.89;0.89;0.88
85
+ 840;0.9;0.89;0.89;0.89;0.88
86
+ 850;0.9;0.89;0.89;0.89;0.88
87
+ 860;0.9;0.89;0.89;0.89;0.88
88
+ 870;0.9;0.89;0.89;0.89;0.88
89
+ 880;0.9;0.89;0.89;0.89;0.88
90
+ 890;0.9;0.89;0.89;0.89;0.88
91
+ 900;0.9;0.89;0.89;0.89;0.88
92
+ 910;0.9;0.89;0.89;0.89;0.88
93
+ 920;0.9;0.89;0.89;0.89;0.88
94
+ 930;0.9;0.89;0.89;0.89;0.89
95
+ 940;0.9;0.89;0.89;0.89;0.89
96
+ 950;0.9;0.89;0.89;0.89;0.89
97
+ 960;0.9;0.89;0.89;0.89;0.89
98
+ 970;0.9;0.89;0.89;0.89;0.89
99
+ 980;0.9;0.89;0.89;0.89;0.89
100
+ 990;0.9;0.89;0.89;0.89;0.89
101
+ 1000;0.9;0.9;0.9;0.9;0.9
102
+ 1010;0.9;0.9;0.9;0.9;0.9
103
+ 1020;0.9;0.9;0.9;0.9;0.9
104
+ 1030;0.9;0.9;0.9;0.9;0.9
105
+ 1040;0.9;0.9;0.9;0.9;0.9
106
+ 1050;0.9;0.9;0.9;0.9;0.9
107
+ 1060;0.9;0.9;0.9;0.9;0.9
108
+ 1070;0.9;0.9;0.9;0.9;0.9
109
+ 1080;0.9;0.9;0.9;0.9;0.9
110
+ 1090;0.9;0.9;0.9;0.9;0.9
111
+ 1100;0.9;0.9;0.9;0.9;0.9
112
+ 1110;0.9;0.9;0.9;0.9;0.9
113
+ 1120;0.9;0.9;0.9;0.9;0.9
114
+ 1130;0.9;0.9;0.9;0.9;0.9
115
+ 1140;0.9;0.9;0.9;0.9;0.9
116
+ 1150;0.9;0.9;0.9;0.9;0.9
117
+ 1160;0.9;0.9;0.9;0.9;0.9
118
+ 1170;0.9;0.9;0.9;0.9;0.9
119
+ 1180;0.9;0.9;0.9;0.9;0.9
120
+ 1190;0.9;0.9;0.9;0.9;0.9
121
+ 1200;0.9;0.9;0.9;0.9;0.9
122
+ 1210;0.9;0.9;0.9;0.9;0.9
123
+ 1220;0.9;0.9;0.9;0.9;0.9
124
+ 1230;0.9;0.9;0.9;0.9;0.9
125
+ 1240;0.9;0.9;0.9;0.9;0.9
126
+ 1250;0.9;0.9;0.9;0.9;0.9
127
+ 1260;0.9;0.9;0.9;0.9;0.9
128
+ 1270;0.9;0.9;0.9;0.9;0.9
129
+ 1280;0.9;0.9;0.9;0.9;0.9
130
+ 1290;0.9;0.9;0.9;0.9;0.9
131
+ 1300;0.9;0.9;0.9;0.9;0.9
132
+ 1310;0.9;0.9;0.9;0.9;0.9
133
+ 1320;0.9;0.9;0.9;0.9;0.9
134
+ 1330;0.9;0.9;0.9;0.9;0.9
135
+ 1340;0.9;0.9;0.9;0.9;0.9
136
+ 1350;0.9;0.9;0.9;0.9;0.9
137
+ 1360;0.9;0.9;0.9;0.9;0.9
138
+ 1370;0.9;0.9;0.9;0.9;0.9
139
+ 1380;0.9;0.9;0.9;0.9;0.9
140
+ 1390;0.9;0.9;0.9;0.9;0.9
141
+ 1400;0.9;0.9;0.9;0.9;0.9
142
+ 1410;0.9;0.9;0.9;0.9;0.9
143
+ 1420;0.9;0.9;0.9;0.9;0.9
144
+ 1430;0.9;0.9;0.9;0.9;0.9
145
+ 1440;0.9;0.9;0.9;0.9;0.9
146
+ 1450;0.9;0.9;0.9;0.9;0.9
147
+ 1460;0.9;0.9;0.9;0.9;0.9
148
+ 1470;0.9;0.9;0.9;0.9;0.9
149
+ 1480;0.9;0.9;0.9;0.9;0.9
150
+ 1490;0.9;0.9;0.9;0.9;0.9
151
+ 1500;0.9;0.9;0.9;0.9;0.9
tdcrpy/TDCRPy.py CHANGED
@@ -167,6 +167,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
167
167
  config.read(file_conf)
168
168
  tau=config["Inputs"].getfloat("tau")
169
169
  Y=config["Inputs"].getboolean("Y")
170
+ micCorr=config["Inputs"].getboolean("micCorr")
170
171
  radListPureBeta=config["Inputs"].get("radListPureBeta")
171
172
  radListPureBeta=radListPureBeta.replace(" ","")
172
173
  radListPureBeta=radListPureBeta.split(',')
@@ -659,6 +660,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
659
660
  e_quenching.append(energy_vec[i])
660
661
  elif p == "electron" or p == "positron":
661
662
  energy_vec[i] = tl.Em_e(energy_vec_initial[i]*1e3,energy_vec[i]*1e3,kB*1e3,nE_electron)*1e-3
663
+ if micCorr: energy_vec[i] = energy_vec[i]*tl.micelleLoss(energy_vec_initial[i])
662
664
  e_quenching.append(energy_vec[i])
663
665
  else:
664
666
  e_quenching.append(0)
@@ -677,6 +679,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
677
679
  e_quenching2.append(energy_vec2[i])
678
680
  elif p == "electron" or p == "positron":
679
681
  energy_vec2[i] = tl.Em_e(energy_vec_initial2[i]*1e3,energy_vec2[i]*1e3,kB*1e3,nE_electron)*1e-3
682
+ if micCorr: energy_vec2[i] = energy_vec2[i]*tl.micelleLoss(energy_vec_initial2[i])
680
683
  e_quenching2.append(energy_vec2[i])
681
684
  else:
682
685
  e_quenching2.append(0)
tdcrpy/TDCR_model_lib.py CHANGED
@@ -40,6 +40,8 @@ A = config["Inputs"].getfloat("A")
40
40
  depthSpline = config["Inputs"].getint("depthSpline")
41
41
  Einterp_a = config["Inputs"].getfloat("Einterp_a")
42
42
  Einterp_e = config["Inputs"].getfloat("Einterp_e")
43
+ diam_micelle = config["Inputs"].getfloat("diam_micelle")
44
+ fAq = config["Inputs"].getfloat("fAq")
43
45
 
44
46
  # import PenNuc data
45
47
  with importlib.resources.as_file(files('tdcrpy').joinpath('decayData')) as data_path:
@@ -179,6 +181,17 @@ for ikB in kB_e:
179
181
  Em_electron.append(line)
180
182
 
181
183
 
184
+ micelle_E = []; micelle_S = []
185
+ with importlib.resources.as_file(files('tdcrpy').joinpath('Micelle')) as data_path:
186
+ tamptxt = "faq01.csv"
187
+ fid = open(data_path / tamptxt)
188
+ line = fid.readlines()
189
+ for iline in line:
190
+ iline=iline.replace("\n","").split(";")
191
+ micelle_E.append(float(iline[0]))
192
+ micelle_S.append([float(x) for x in iline[1:]])
193
+ micelle_S = np.asarray(micelle_S)
194
+
182
195
  """
183
196
  ======= Library of functions =======
184
197
  """
@@ -712,9 +725,11 @@ def readBetaShape(rad,mode,level,z=z_betashape):
712
725
  p.append(p0 * (e[k+1])-e[k])
713
726
  else:
714
727
  p.append(p0 * (e[k]-e[k-1]))
715
-
728
+
729
+ e=(np.asarray(e[:-1])+np.asarray(e[1:]))/2
730
+ p.pop(-1)
716
731
  p /= sum(np.asarray(p)) # normalization
717
- p = list(p)
732
+ p = list(p); e = list(e)
718
733
  return e, p
719
734
 
720
735
 
@@ -963,9 +978,40 @@ def Em_e(Ei, Ed, kB, nE, Et = Einterp_e*1e3, kB_vec = kB_e):
963
978
  return r
964
979
 
965
980
 
981
+ #============================================================================================
966
982
 
983
+ #============================================================================================
984
+
985
+ #========================= Reverse micelle treatment ========================================
967
986
 
987
+ def micelleLoss(E,*, fAq=fAq, diam_micelle=diam_micelle, e_vec=micelle_E, data=micelle_S):
988
+ """
989
+ Estimation of the energy deposited ratio due to loss in reversed micelles.
990
+ The function carries out interpolation in values estimated with GENAT4-DNA
991
+ in: Nedjadi et al. Applied Radiation and Isotopes, Volume 125, 2017, Pages 94-107,
992
+ https://doi.org/10.1016/j.apradiso.2017.04.020
993
+
994
+ Parameters
995
+ ----------
996
+ E : float
997
+ Initial energy of the electron. (in keV)
998
+ fAq : float, optional
999
+ Aqueous fraction. The default is fAq.
1000
+ diam_micelle : float, optional
1001
+ Diameter of micelles (in nm). The default is diam_micelle.
1002
+ e_vec : list, optional
1003
+ Tabulated data of considered energies (in eV). The default is micelle_E.
1004
+ data : list, optional
1005
+ Tabulated data of energy deposited ratio. The default is micelle_S.
968
1006
 
1007
+ Returns
1008
+ -------
1009
+ S : float
1010
+ energy deposited ratio (keV)
1011
+ """
1012
+ micDiam = np.array([0.5, 1.0, 2.0, 3.0, 4.0]) #nm
1013
+ S=np.interp(E*1e3, e_vec, micelle_S[:,np.argwhere(micDiam==diam_micelle)[0][0]])*(1-fAq)/0.9
1014
+ return S
969
1015
 
970
1016
 
971
1017
  #============================================================================================
@@ -2333,12 +2379,13 @@ def modelAnalytical(L,TD,TAB,TBC,TAC,rad,kB,V,mode,mode2,ne):
2333
2379
 
2334
2380
  """
2335
2381
 
2336
- # e, p = readBetaShape(rad, 'beta-', 'tot')
2337
- e, p = readBetaSpectra(rad)
2382
+ e, p = readBetaShape(rad, 'beta-', 'tot')
2383
+ # e, p = readBetaSpectra(rad)
2338
2384
  em=np.empty(len(e))
2339
2385
  for i, ei in enumerate(e):
2340
- ed = energie_dep_beta(ei)
2341
- em[i] = E_quench_e(ed*1e3,ed*1e3,kB*1e3,ne)*1e-3
2386
+ # ed = energie_dep_beta2(ei,V)
2387
+ # em[i] = E_quench_e(ei*1e3,ed*1e3,kB*1e3,ne)*1e-3
2388
+ em[i] = Em_e(ei*1e3,ed*1e3,kB*1e3,ne)*1e-3
2342
2389
 
2343
2390
 
2344
2391
  if mode2=="sym":
tdcrpy/config.toml CHANGED
@@ -32,6 +32,13 @@ pN = 0.000302
32
32
  pO = 0.082022
33
33
  pP = 0.000092
34
34
  pCl = 0.000071
35
+ # properties on reverse micelles
36
+ # applied reverse micelle correction
37
+ micCorr = True
38
+ # diameter of the micelles in nm (possible values: 0.5, 1.0, 2.0, 3.0, 4.0)
39
+ diam_micelle = 2
40
+ # acqueous fraction of the scintillator
41
+ fAq = 0.1
35
42
 
36
43
  ## PROPERTIES OF THE COUNTER
37
44
  # Coincidence resolving time (ns)
@@ -42,4 +49,4 @@ tau = 50
42
49
  depthSpline = 5
43
50
  # energy (in keV) above which interpolation is applied.
44
51
  Einterp_a = 100
45
- Einterp_e = 1
52
+ Einterp_e = 1.5