TDCRPy 1.3.0__tar.gz → 1.4.0__tar.gz
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.
- {TDCRPy-1.3.0/TDCRPy.egg-info → TDCRPy-1.4.0}/PKG-INFO +1 -1
- {TDCRPy-1.3.0 → TDCRPy-1.4.0/TDCRPy.egg-info}/PKG-INFO +1 -1
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/TDCRPy.egg-info/SOURCES.txt +1 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/setup.py +1 -1
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/TDCRPy.py +225 -111
- TDCRPy-1.4.0/tdcrpy/TDCRPy1.py +946 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/LICENCE.md +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/MANIFEST.in +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/README.md +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/TDCRPy.egg-info/dependency_links.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/TDCRPy.egg-info/requires.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/TDCRPy.egg-info/top_level.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/setup.cfg +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_C-14.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Ca-45.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_H-3.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Ni-63.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Pm-147.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Pu-241.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_S-35.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Sr-89.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Sr-90.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Tc-99.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/E_depose.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_1_200k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_2000_10000k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_200_2000k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_1_200k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_2000_10000k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_200_2000k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-beta-_1_200k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-beta-_200_2000k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_1_200k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_2000_10000k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_200_2000k.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_0.015.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.1e-05.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.2e-05.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.3e-05.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.4e-05.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.5e-05.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1e-05.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_6e-06.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_7e-06.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_8e-06.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_9e-06.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.006.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.007.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.008.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.009.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.01.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.011.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.012.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.013.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.014.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.015.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/TandataUG.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/alpha_toulene.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/inputVecteurAlpha.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/inputVecteurElectron.txt +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/TDCR_model_lib.py +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/TDCRoptimize.py +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/__init__.py +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/config.toml +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/decayData/All-nuclides_BetaShape.zip +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/decayData/All-nuclides_Ensdf.zip +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/decayData/All-nuclides_PenNuc.zip +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/genindex.html +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/index.html +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/search.html +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/source/modules.html +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/source/tdcrpy.html +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/test/__init__.py +0 -0
- {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/test/test_tdcrpy.py +0 -0
|
@@ -9,15 +9,15 @@ Bureau International des Poids et Mesures
|
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
## IMPORT PYTHON MODULES
|
|
12
|
-
import tdcrpy.TDCR_model_lib as tl
|
|
13
|
-
|
|
12
|
+
# import tdcrpy.TDCR_model_lib as tl
|
|
13
|
+
import TDCR_model_lib as tl
|
|
14
14
|
import importlib.resources
|
|
15
|
+
from importlib.resources import files
|
|
15
16
|
import configparser
|
|
16
17
|
import numpy as np
|
|
17
18
|
from tqdm import tqdm
|
|
18
|
-
from importlib.resources import files
|
|
19
19
|
|
|
20
|
-
def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=False, barp=False,
|
|
20
|
+
def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=False, barp=False,uncData=False):
|
|
21
21
|
"""
|
|
22
22
|
This is the main function of the TDCRPy package running the Monte-Carlo Triple-to-Double Coincidence Ratio model.
|
|
23
23
|
The computation is made for a given solution containing a radionuclide (or a mixture of radionuclides), a given volume of scintillator V and a given Birks constant kB.
|
|
@@ -27,8 +27,6 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
27
27
|
--> In mode="eff", it calculates the efficiency of the TDCR system as a function of a value (triplet) of free parameter(s) L, the measurement data is not used;
|
|
28
28
|
|
|
29
29
|
--> In mode="res", it calculates the residual of the TDCR model parametrized by a value (or triplet) of free parameter(s) L and the measurement data TD, TAB, TBC, TAC.
|
|
30
|
-
|
|
31
|
-
--> In mode="dis", the distributions of coincidence probability are retruned
|
|
32
30
|
|
|
33
31
|
also, two configuration can be set:
|
|
34
32
|
|
|
@@ -71,15 +69,13 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
71
69
|
V : float
|
|
72
70
|
volume of the scintillator in ml.
|
|
73
71
|
mode : string
|
|
74
|
-
"res" to return the residual, "eff" to return efficiencies
|
|
72
|
+
"res" to return the residual, "eff" to return efficiencies.
|
|
75
73
|
mode2 : string
|
|
76
74
|
"sym" for symetrical model, "asym" for symetrical model.
|
|
77
75
|
Display : Boolean, optional
|
|
78
76
|
"True" to display details on the decay sampling. The default is False.
|
|
79
77
|
barp : Boolean, optional
|
|
80
|
-
"True" to display the calculation progress. The default is
|
|
81
|
-
uncData : Boolean, optional
|
|
82
|
-
"True" to propagate uncertainty from decay data. The default is False.
|
|
78
|
+
"True" to display the calculation progress. The default is True.
|
|
83
79
|
|
|
84
80
|
Returns
|
|
85
81
|
-------
|
|
@@ -101,7 +97,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
101
97
|
if barp: tl.display_header()
|
|
102
98
|
config = configparser.ConfigParser()
|
|
103
99
|
with importlib.resources.as_file(files('tdcrpy').joinpath('config.toml')) as data_path:
|
|
104
|
-
file_conf = data_path
|
|
100
|
+
file_conf = data_path
|
|
105
101
|
config.read(file_conf)
|
|
106
102
|
tau=config["Inputs"].getfloat("tau")
|
|
107
103
|
Y=config["Inputs"].getboolean("Y")
|
|
@@ -179,9 +175,15 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
179
175
|
efficiency_S = []
|
|
180
176
|
efficiency_D = []
|
|
181
177
|
efficiency_T = []
|
|
178
|
+
efficiency_S2 = []
|
|
179
|
+
efficiency_D2 = []
|
|
180
|
+
efficiency_T2 = []
|
|
182
181
|
efficiency_AB = []
|
|
183
182
|
efficiency_BC = []
|
|
184
183
|
efficiency_AC = []
|
|
184
|
+
efficiency_AB2 = []
|
|
185
|
+
efficiency_BC2 = []
|
|
186
|
+
efficiency_AC2 = []
|
|
185
187
|
|
|
186
188
|
if barp and not Display: NN = tqdm(range(N), desc="Processing", unit=" decays")
|
|
187
189
|
else: NN = range(N)
|
|
@@ -228,8 +230,9 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
228
230
|
print("\t Sampled decay branch:")
|
|
229
231
|
if particle_branch[:4]=="Atom":
|
|
230
232
|
if particle_branch=="Atom_K": print("\t\t Electron capture on K shell")
|
|
231
|
-
if particle_branch=="Atom_L": print("\t\t Electron capture on L shell")
|
|
233
|
+
if particle_branch=="Atom_L" or particle_branch=="Atom_L1" or particle_branch=="Atom_L2" or particle_branch=="Atom_L3": print("\t\t Electron capture on L shell")
|
|
232
234
|
if particle_branch=="Atom_M": print("\t\t Electron capture on M shell")
|
|
235
|
+
if particle_branch=="Atom_O": print("\t\t Electron capture on O shell")
|
|
233
236
|
else:
|
|
234
237
|
print("\t\t Particle: ", particle_branch)
|
|
235
238
|
print("\t\t Energy of the particle = ", energy_branch, " keV")
|
|
@@ -256,17 +259,25 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
256
259
|
==============
|
|
257
260
|
'''
|
|
258
261
|
if Display: print("\t Subsequent isomeric transition(s)") # finish with the mother / now with the daughter
|
|
262
|
+
evenement = 1
|
|
263
|
+
e_sum2 = 0
|
|
264
|
+
particle_vec2 = []
|
|
265
|
+
energy_vec2 = []
|
|
259
266
|
while levelOftheDaughter > 0: # Go on the loop while the daughter nucleus is a its fundamental level (energy 0)
|
|
260
267
|
i_level = levelNumber[index_rad][iDaughter].index([levelOftheDaughter]) # Find the position in the daughter level vector
|
|
261
|
-
|
|
268
|
+
|
|
269
|
+
t1 = np.random.exponential(trans_halfLife[index_rad][iDaughter][i_level][0], size=1)[0]
|
|
270
|
+
|
|
262
271
|
# test whether the decay occurs within the coincidence resolving time or not
|
|
263
|
-
if
|
|
264
|
-
|
|
272
|
+
if t1 > tau*1e-9:
|
|
273
|
+
#splitEvent = True
|
|
274
|
+
evenement = evenement + 1
|
|
265
275
|
|
|
266
276
|
if transitionType[index_rad][iDaughter][i_level] != []:
|
|
267
277
|
#====================================================================
|
|
268
278
|
# Sampling of the transition in energy levels of the daughter nucleus
|
|
269
279
|
#====================================================================
|
|
280
|
+
|
|
270
281
|
if uncData:
|
|
271
282
|
prob_trans_s=[]
|
|
272
283
|
for ipt, xpt in enumerate(prob_trans[index_rad][iDaughter][i_level]):
|
|
@@ -275,7 +286,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
275
286
|
probability_tran = tl.normalise(prob_trans_s) # normaliser la proba de transition
|
|
276
287
|
else:
|
|
277
288
|
probability_tran = tl.normalise(prob_trans[index_rad][iDaughter][i_level]) # normaliser la proba de transition
|
|
278
|
-
|
|
289
|
+
#probability_tran = tl.normalise(prob_trans[index_rad][iDaughter][i_level]) # normaliser la proba de transition
|
|
279
290
|
index_t = tl.sampling(probability_tran) # indice de la transition
|
|
280
291
|
if Display:
|
|
281
292
|
print("\t\t Energy of the level = ", levelEnergy[index_rad][iDaughter][i_level][0], " keV")
|
|
@@ -292,62 +303,111 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
292
303
|
#========
|
|
293
304
|
# Scoring
|
|
294
305
|
#========
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
306
|
+
|
|
307
|
+
## evenement retardé
|
|
308
|
+
if evenement != 1:
|
|
309
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "GA": # if it is a gamma that has been emitted
|
|
310
|
+
particle_vec2.append("gamma") # Update of the particle vector
|
|
311
|
+
energy_vec2.append(e_trans[index_rad][iDaughter][i_level][index_t]) # Update the energy vector
|
|
312
|
+
else: # if not, it is a internal conversion, so an electron
|
|
313
|
+
particle_vec2.append("electron") # !!!!!!!!! it is OK for our model? Does the electron leave with the kinetic enegy of the transition
|
|
314
|
+
energy_vec2.append(e_trans[index_rad][iDaughter][i_level][index_t]) # Update the energy vector
|
|
315
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EK": # record that an electron is missing on the K shell of the dughter nucleus
|
|
316
|
+
particle_vec2.append("Atom_K")
|
|
317
|
+
energy_vec2.append(0)
|
|
318
|
+
|
|
319
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EL": # record that an electron is missing on the L1 shell of the dughter nucleus
|
|
320
|
+
particle_vec2.append("Atom_L")
|
|
321
|
+
energy_vec2.append(0)
|
|
322
|
+
|
|
323
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EL1": # record that an electron is missing on the L1 shell of the dughter nucleus
|
|
324
|
+
particle_vec2.append("Atom_L1")
|
|
325
|
+
energy_vec2.append(0)
|
|
326
|
+
|
|
327
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EL2": # record that an electron is missing on the L2 shell of the dughter nucleus
|
|
328
|
+
particle_vec2.append("Atom_L2")
|
|
329
|
+
energy_vec2.append(0)
|
|
330
|
+
|
|
331
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EL3": # record that an electron is missing on the L3 shell of the dughter nucleus
|
|
332
|
+
particle_vec2.append("Atom_L3")
|
|
333
|
+
energy_vec2.append(0)
|
|
334
|
+
|
|
335
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EM": # record that an electron is missing on the M shell of the dughter nucleus
|
|
336
|
+
particle_vec2.append("Atom_M")
|
|
337
|
+
energy_vec2.append(0)
|
|
338
|
+
|
|
339
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EN": # record that an electron is missing on the N shell of the dughter nucleus
|
|
340
|
+
particle_vec2.append("Atom_N")
|
|
341
|
+
energy_vec2.append(0)
|
|
342
|
+
e_sum2 += e_trans[index_rad][iDaughter][i_level][index_t] # Energy summary
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
## evenement normal
|
|
346
|
+
else:
|
|
347
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "GA": # if it is a gamma that has been emitted
|
|
348
|
+
particle_vec.append("gamma") # Update of the particle vector
|
|
349
|
+
energy_vec.append(e_trans[index_rad][iDaughter][i_level][index_t]) # Update the energy vector
|
|
350
|
+
else: # if not, it is a internal conversion, so an electron
|
|
351
|
+
particle_vec.append("electron") # !!!!!!!!! it is OK for our model? Does the electron leave with the kinetic enegy of the transition
|
|
352
|
+
energy_vec.append(e_trans[index_rad][iDaughter][i_level][index_t]) # Update the energy vector
|
|
353
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EK": # record that an electron is missing on the K shell of the dughter nucleus
|
|
354
|
+
particle_vec.append("Atom_K")
|
|
355
|
+
energy_vec.append(0)
|
|
356
|
+
|
|
357
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EL": # record that an electron is missing on the L1 shell of the dughter nucleus
|
|
358
|
+
particle_vec.append("Atom_L")
|
|
359
|
+
energy_vec.append(0)
|
|
360
|
+
|
|
361
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EL1": # record that an electron is missing on the L1 shell of the dughter nucleus
|
|
362
|
+
particle_vec.append("Atom_L1")
|
|
363
|
+
energy_vec.append(0)
|
|
364
|
+
|
|
365
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EL2": # record that an electron is missing on the L2 shell of the dughter nucleus
|
|
366
|
+
particle_vec.append("Atom_L2")
|
|
367
|
+
energy_vec.append(0)
|
|
368
|
+
|
|
369
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EL3": # record that an electron is missing on the L3 shell of the dughter nucleus
|
|
370
|
+
particle_vec.append("Atom_L3")
|
|
371
|
+
energy_vec.append(0)
|
|
372
|
+
|
|
373
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EM": # record that an electron is missing on the M shell of the dughter nucleus
|
|
374
|
+
particle_vec.append("Atom_M")
|
|
375
|
+
energy_vec.append(0)
|
|
376
|
+
|
|
377
|
+
if transitionType[index_rad][iDaughter][i_level][index_t] == "EN": # record that an electron is missing on the N shell of the dughter nucleus
|
|
378
|
+
particle_vec.append("Atom_N")
|
|
379
|
+
energy_vec.append(0)
|
|
380
|
+
e_sum += e_trans[index_rad][iDaughter][i_level][index_t] # Energy summary
|
|
328
381
|
|
|
329
|
-
|
|
382
|
+
|
|
383
|
+
|
|
330
384
|
levelOftheDaughter = next_level[index_rad][iDaughter][i_level][index_t] # set the next level
|
|
385
|
+
|
|
331
386
|
else:
|
|
332
387
|
i_level = levelNumber[index_rad][iDaughter].index([levelOftheDaughter])
|
|
333
388
|
print("warning:pas de données de transition:daughter,niveau,niveau d'énergie",DaughterVec[index_rad][iDaughter],levelOftheDaughter,levelEnergy[index_rad][iDaughter][i_level] )
|
|
334
389
|
levelOftheDaughter = 0 # set the next level
|
|
335
390
|
|
|
336
391
|
if Display:
|
|
337
|
-
print("\t Summary of the nuclear decay")
|
|
392
|
+
print("\t Summary of the nuclear promt decay")
|
|
338
393
|
for i, p in enumerate(particle_vec):
|
|
339
394
|
if p[:4] != "Atom":
|
|
395
|
+
print('particle :',p)
|
|
340
396
|
print(f"\t\t energy of {p} = ", energy_vec[i]," keV")
|
|
397
|
+
if evenement != 1:
|
|
398
|
+
print("\t Summary of the nuclear delayed decay")
|
|
399
|
+
for i, p in enumerate(particle_vec2):
|
|
400
|
+
if p[:4] != "Atom":
|
|
401
|
+
print('particle :',p)
|
|
402
|
+
print(f"\t\t energy of {p} = ", energy_vec2[i]," keV")
|
|
341
403
|
|
|
342
404
|
'''
|
|
343
405
|
==========================
|
|
344
406
|
II. LA RELAXATION ATOMIQUE
|
|
345
407
|
==========================
|
|
346
408
|
'''
|
|
347
|
-
|
|
348
|
-
if
|
|
349
|
-
particle_vec2=[]
|
|
350
|
-
energy_vec2=[]
|
|
409
|
+
## evenement retarde
|
|
410
|
+
if evenement != 1:
|
|
351
411
|
|
|
352
412
|
daughter_relax = DaughterVec[index_rad][iDaughter]
|
|
353
413
|
for i_part in range(len(particle_vec)):
|
|
@@ -358,35 +418,77 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
358
418
|
tf,ef = tl.relaxation_atom(daughter_relax,Rad[index_rad],particle_vec[i_part])
|
|
359
419
|
if tf == "XKA":
|
|
360
420
|
particle_vec[i_part] = "Atom_L"
|
|
421
|
+
particle_vec.append(tf)
|
|
422
|
+
energy_vec.append(ef)
|
|
423
|
+
relaxation = True
|
|
424
|
+
elif tf == "XKB":
|
|
425
|
+
particle_vec[i_part] = "Atom_M"
|
|
426
|
+
particle_vec.append(tf)
|
|
427
|
+
energy_vec.append(ef)
|
|
428
|
+
relaxation = False
|
|
429
|
+
elif tf == "XL":
|
|
430
|
+
particle_vec[i_part] = "Atom_M"
|
|
431
|
+
particle_vec.append(tf)
|
|
432
|
+
energy_vec.append(ef)
|
|
433
|
+
relaxation = False
|
|
434
|
+
elif tf == "Auger K":
|
|
435
|
+
particle_vec[i_part] = "Atom_L"
|
|
436
|
+
particle_vec.append(tf)
|
|
437
|
+
energy_vec.append(ef)
|
|
438
|
+
relaxation = True
|
|
439
|
+
elif tf == "Auger L":
|
|
440
|
+
particle_vec[i_part] = "Atom_M"
|
|
441
|
+
particle_vec.append(tf)
|
|
442
|
+
energy_vec.append(ef)
|
|
443
|
+
relaxation = False
|
|
444
|
+
else:
|
|
445
|
+
if Display: print("untermined x or Auger")
|
|
446
|
+
relaxation = False
|
|
447
|
+
e_sum += ef
|
|
448
|
+
if Display:
|
|
449
|
+
print("\t Summary of the atomic relaxation (promt emission)")
|
|
450
|
+
for i, p in enumerate(particle_vec):
|
|
451
|
+
if p[:4] != "Atom":
|
|
452
|
+
print(f"\t\t energy of {p} = ", round(energy_vec[i],3), "keV")
|
|
453
|
+
|
|
454
|
+
for i_part in range(len(particle_vec2)):
|
|
455
|
+
relaxation = False
|
|
456
|
+
if "Atom_K" in particle_vec2[i_part] or "Atom_L" in particle_vec2[i_part] or "Atom_M" in particle_vec2[i_part]:
|
|
457
|
+
relaxation = True
|
|
458
|
+
while relaxation:
|
|
459
|
+
tf,ef = tl.relaxation_atom(daughter_relax,Rad[index_rad],particle_vec2[i_part])
|
|
460
|
+
if tf == "XKA":
|
|
461
|
+
particle_vec2[i_part] = "Atom_L"
|
|
361
462
|
particle_vec2.append(tf)
|
|
362
463
|
energy_vec2.append(ef)
|
|
363
464
|
relaxation = True
|
|
364
465
|
elif tf == "XKB":
|
|
365
|
-
|
|
466
|
+
particle_vec2[i_part] = "Atom_M"
|
|
366
467
|
particle_vec2.append(tf)
|
|
367
468
|
energy_vec2.append(ef)
|
|
368
469
|
relaxation = False
|
|
369
470
|
elif tf == "XL":
|
|
370
|
-
|
|
471
|
+
particle_vec2[i_part] = "Atom_M"
|
|
371
472
|
particle_vec2.append(tf)
|
|
372
473
|
energy_vec2.append(ef)
|
|
373
474
|
relaxation = False
|
|
374
475
|
elif tf == "Auger K":
|
|
375
|
-
|
|
476
|
+
particle_vec2[i_part] = "Atom_L"
|
|
376
477
|
particle_vec2.append(tf)
|
|
377
478
|
energy_vec2.append(ef)
|
|
378
479
|
relaxation = True
|
|
379
480
|
elif tf == "Auger L":
|
|
380
|
-
|
|
481
|
+
particle_vec2[i_part] = "Atom_M"
|
|
381
482
|
particle_vec2.append(tf)
|
|
382
483
|
energy_vec2.append(ef)
|
|
383
484
|
relaxation = False
|
|
384
485
|
else:
|
|
385
486
|
if Display: print("untermined x or Auger")
|
|
386
487
|
relaxation = False
|
|
387
|
-
|
|
488
|
+
e_sum2 += ef
|
|
489
|
+
|
|
388
490
|
if Display:
|
|
389
|
-
print("\t Summary of the atomic relaxation (
|
|
491
|
+
print("\t Summary of the atomic relaxation (delayed emission)")
|
|
390
492
|
for i, p in enumerate(particle_vec2):
|
|
391
493
|
if p[:4] != "Atom":
|
|
392
494
|
print(f"\t\t energy of {p} = ", round(energy_vec2[i],3), "keV")
|
|
@@ -408,14 +510,14 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
408
510
|
e_b,p_b = tl.readBetaShape(rad_i,"beta+",level_before_trans)
|
|
409
511
|
index_beta_energy = tl.sampling(p_b)
|
|
410
512
|
particle_vec2[i] = "positron"
|
|
411
|
-
|
|
513
|
+
energy_vec2[i] = e_b[index_beta_energy]
|
|
412
514
|
particle_vec2.append("gamma")
|
|
413
515
|
particle_vec2.append("gamma")
|
|
414
516
|
energy_vec2.append(511)
|
|
415
517
|
energy_vec2.append(511)
|
|
416
518
|
energy_vec_initial2 = energy_vec2
|
|
417
519
|
if Display:
|
|
418
|
-
print("\t Summary of emitted particles from the
|
|
520
|
+
print("\t Summary of emitted particles from the delayed atomic relaxation")
|
|
419
521
|
for i, p in enumerate(particle_vec2):
|
|
420
522
|
if p[:4] != "Atom": print(f"\t\t energy of {p} = ", round(energy_vec2[i],3), "keV")
|
|
421
523
|
|
|
@@ -438,7 +540,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
438
540
|
energy_vec.append(511)
|
|
439
541
|
energy_vec_initial = energy_vec
|
|
440
542
|
if Display:
|
|
441
|
-
print("\t Summary of emitted particles from the
|
|
543
|
+
print("\t Summary of emitted particles from the promt nuclear relaxation")
|
|
442
544
|
for i, p in enumerate(particle_vec):
|
|
443
545
|
if p[:4] != "Atom": print(f"\t\t energy of {p} = ", round(energy_vec[i],3), "keV")
|
|
444
546
|
|
|
@@ -465,7 +567,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
465
567
|
energy_vec2[i] = tl.energie_dep_beta(energy_vec2[i])
|
|
466
568
|
|
|
467
569
|
if Display:
|
|
468
|
-
print("\t Summary of the energy deposited by charged particles by the
|
|
570
|
+
print("\t Summary of the energy deposited by charged particles by the delayed atomic relaxation")
|
|
469
571
|
for i, p in enumerate(particle_vec2):
|
|
470
572
|
if p[:4] != "Atom": print(f"\t\t energy of {p} = ", round(energy_vec2[i],3), "keV")
|
|
471
573
|
|
|
@@ -486,7 +588,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
486
588
|
energy_vec[i] = tl.energie_dep_beta(energy_vec[i])
|
|
487
589
|
|
|
488
590
|
if Display:
|
|
489
|
-
print("\t Summary of the energy deposited by charged particles from the
|
|
591
|
+
print("\t Summary of the energy deposited by charged particles from the prompt nuclear relaxation")
|
|
490
592
|
for i, p in enumerate(particle_vec):
|
|
491
593
|
if p[:4] != "Atom": print(f"\t\t energy of {p} = ", round(energy_vec[i],3), "keV")
|
|
492
594
|
|
|
@@ -496,7 +598,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
496
598
|
Calculation of the scintillation quenching with the Birks Model
|
|
497
599
|
====================
|
|
498
600
|
'''
|
|
499
|
-
if Display: print("\t Summary of the estimation of quenched energies by the
|
|
601
|
+
if Display: print("\t Summary of the estimation of quenched energies by the delayed atomic relaxation")
|
|
500
602
|
e_quenching2=[]
|
|
501
603
|
for i, p in enumerate(particle_vec2):
|
|
502
604
|
if p == "alpha":
|
|
@@ -514,7 +616,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
514
616
|
|
|
515
617
|
|
|
516
618
|
# changer l'intégration E_i - E_d à E_i
|
|
517
|
-
if Display: print("\t Summary of the estimation of quenched energies from the
|
|
619
|
+
if Display: print("\t Summary of the estimation of quenched energies from the prompt nuclear relaxation")
|
|
518
620
|
e_quenching=[]
|
|
519
621
|
for i, p in enumerate(particle_vec):
|
|
520
622
|
if p == "alpha":
|
|
@@ -537,7 +639,18 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
537
639
|
'''
|
|
538
640
|
|
|
539
641
|
if mode2=="sym":
|
|
540
|
-
|
|
642
|
+
p_nosingle2 = np.exp(-L*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
|
|
643
|
+
p_single2 = 1-p_nosingle2 # probability to have at least 1 electrons in a PMT
|
|
644
|
+
efficiency_S2.append(p_single2)
|
|
645
|
+
efficiency_T2.append(p_single2**3)
|
|
646
|
+
efficiency_D2.append(3*(p_single2)**2-2*efficiency_T2[-1])
|
|
647
|
+
if Display: print("\t Summary of TDCR measurement (delayed)")
|
|
648
|
+
if Display: print("\t\t Free parameter = ", L, "keV-1")
|
|
649
|
+
if Display: print("\t\t Efficiency of single events = ", round(efficiency_S2[-1],5))
|
|
650
|
+
if Display: print("\t\t Efficiency of double events = ", round(efficiency_D2[-1],5))
|
|
651
|
+
if Display: print("\t\t Efficiency of triple events = ", round(efficiency_T2[-1],5))
|
|
652
|
+
|
|
653
|
+
p_nosingle = np.exp(-L*np.sum(np.asarray(e_quenching))/3) # probability to have 0 electrons in a PMT
|
|
541
654
|
p_single = 1-p_nosingle # probability to have at least 1 electrons in a PMT
|
|
542
655
|
efficiency_S.append(p_single)
|
|
543
656
|
efficiency_T.append(p_single**3)
|
|
@@ -547,41 +660,30 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
547
660
|
if Display: print("\t\t Efficiency of single events = ", round(efficiency_S[-1],5))
|
|
548
661
|
if Display: print("\t\t Efficiency of double events = ", round(efficiency_D[-1],5))
|
|
549
662
|
if Display: print("\t\t Efficiency of triple events = ", round(efficiency_T[-1],5))
|
|
663
|
+
|
|
550
664
|
elif mode2=="asym":
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
665
|
+
pA_nosingle2 = np.exp(-L[0]*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
|
|
666
|
+
pA_single2 = 1-pA_nosingle2 # probability to have at least 1 electrons in a PMT
|
|
667
|
+
pB_nosingle2 = np.exp(-L[1]*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
|
|
668
|
+
pB_single2 = 1-pB_nosingle2 # probability to have at least 1 electrons in a PMT
|
|
669
|
+
pC_nosingle2 = np.exp(-L[2]*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
|
|
670
|
+
pC_single2 = 1-pC_nosingle2 # probability to have at least 1 electrons in a PMT
|
|
557
671
|
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
if Display: print("\t Summary of TDCR measurement (
|
|
672
|
+
efficiency_AB2.append(pA_single2*pB_single2)
|
|
673
|
+
efficiency_BC2.append(pB_single2*pC_single2)
|
|
674
|
+
efficiency_AC2.append(pA_single2*pC_single2)
|
|
675
|
+
efficiency_T2.append(pA_single2*pB_single2*pC_single2)
|
|
676
|
+
efficiency_D2.append(efficiency_AB2[-1]+efficiency_BC2[-1]+efficiency_AC2[-1]-2*efficiency_T2[-1])
|
|
677
|
+
efficiency_S2.append(pA_single2+pB_single2+pC_single2-efficiency_D2[-1]-efficiency_T2[-1])
|
|
678
|
+
if Display: print("\t Summary of TDCR measurement (delayed)")
|
|
565
679
|
if Display: print("\t\t Free parameter PMT A: ", L[0], "keV-1")
|
|
566
680
|
if Display: print("\t\t Free parameter PMT B: ", L[1], "keV-1")
|
|
567
681
|
if Display: print("\t\t Free parameter PMT C: ", L[2], "keV-1")
|
|
568
|
-
if Display: print("\t\t Efficiency of single events: ", round(
|
|
569
|
-
if Display: print("\t\t Efficiency of double events: ", round(
|
|
570
|
-
if Display: print("\t\t Efficiency of triple events: ", round(
|
|
682
|
+
if Display: print("\t\t Efficiency of single events: ", round(efficiency_S2[-1],5))
|
|
683
|
+
if Display: print("\t\t Efficiency of double events: ", round(efficiency_D2[-1],5))
|
|
684
|
+
if Display: print("\t\t Efficiency of triple events: ", round(efficiency_T2[-1],5))
|
|
571
685
|
|
|
572
|
-
|
|
573
|
-
if mode2=="sym":
|
|
574
|
-
p_nosingle = np.exp(-L*np.sum(np.asarray(e_quenching))/3) # probability to have 0 electrons in a PMT
|
|
575
|
-
p_single = 1-p_nosingle # probability to have at least 1 electrons in a PMT
|
|
576
|
-
efficiency_S.append(p_single)
|
|
577
|
-
efficiency_T.append(p_single**3)
|
|
578
|
-
efficiency_D.append(3*(p_single)**2-2*efficiency_T[-1])
|
|
579
|
-
if Display: print("\t Summary of TDCR measurement (delayed)")
|
|
580
|
-
if Display: print("\t\t Free parameter = ", L, "keV-1")
|
|
581
|
-
if Display: print("\t\t Efficiency of single events = ", round(efficiency_S[-1],5))
|
|
582
|
-
if Display: print("\t\t Efficiency of double events = ", round(efficiency_D[-1],5))
|
|
583
|
-
if Display: print("\t\t Efficiency of triple events = ", round(efficiency_T[-1],5))
|
|
584
|
-
elif mode2=="asym":
|
|
686
|
+
|
|
585
687
|
pA_nosingle = np.exp(-L[0]*np.sum(np.asarray(e_quenching))/3) # probability to have 0 electrons in a PMT
|
|
586
688
|
pA_single = 1-pA_nosingle # probability to have at least 1 electrons in a PMT
|
|
587
689
|
pB_nosingle = np.exp(-L[1]*np.sum(np.asarray(e_quenching))/3) # probability to have 0 electrons in a PMT
|
|
@@ -595,7 +697,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
595
697
|
efficiency_T.append(pA_single*pB_single*pC_single)
|
|
596
698
|
efficiency_D.append(efficiency_AB[-1]+efficiency_BC[-1]+efficiency_AC[-1]-2*efficiency_T[-1])
|
|
597
699
|
efficiency_S.append(pA_single+pB_single+pC_single-efficiency_D[-1]-efficiency_T[-1])
|
|
598
|
-
if Display: print("\t Summary of TDCR measurement (
|
|
700
|
+
if Display: print("\t Summary of TDCR measurement (prompt)")
|
|
599
701
|
if Display: print("\t\t Free parameter PMT A: ", L[0], "keV-1")
|
|
600
702
|
if Display: print("\t\t Free parameter PMT B: ", L[1], "keV-1")
|
|
601
703
|
if Display: print("\t\t Free parameter PMT C: ", L[2], "keV-1")
|
|
@@ -790,12 +892,27 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
790
892
|
TBCmodel = mean_efficiency_T/mean_efficiency_BC
|
|
791
893
|
TACmodel = mean_efficiency_T/mean_efficiency_AC
|
|
792
894
|
|
|
895
|
+
|
|
896
|
+
# x = np.arange(np.mean(efficiency_T),1.001,0.001)
|
|
897
|
+
# plt.figure("efficiency distribution")
|
|
898
|
+
# plt.clf()
|
|
899
|
+
# plt.hist(np.asarray(efficiency_D),bins=x,label="Efficiency of double coincidences")[0]
|
|
900
|
+
# plt.hist(np.asarray(efficiency_T),bins=x,label="Efficiency of triple coincidences")[0]
|
|
901
|
+
# plt.xlabel("Efficiency", fontsize = 14)
|
|
902
|
+
# plt.ylabel(r"Number of counts", fontsize = 14)
|
|
903
|
+
# plt.legend(fontsize = 12)
|
|
904
|
+
# plt.savefig('Effdistribution.png')
|
|
905
|
+
|
|
906
|
+
# x = np.arange(np.mean(tdcr),1.001,0.001)
|
|
907
|
+
# plt.figure("TDCR distribution")
|
|
908
|
+
# plt.clf()
|
|
909
|
+
# plt.hist(np.asarray(tdcr),bins=x,label="Calculated TDCR")[0]
|
|
910
|
+
# plt.plot(x,st.norm.pdf(x, TDCR_measure, u_TDCR_measure),label="measured TDCR")[0]
|
|
911
|
+
# plt.xlabel("Efficiency", fontsize = 14)
|
|
912
|
+
# plt.ylabel(r"Number of counts", fontsize = 14)
|
|
913
|
+
# plt.legend(fontsize = 12)
|
|
914
|
+
# plt.savefig('TDCRdistribution.png')
|
|
793
915
|
|
|
794
|
-
'''
|
|
795
|
-
======================
|
|
796
|
-
VI. RETURN THE RESULTS
|
|
797
|
-
======================
|
|
798
|
-
'''
|
|
799
916
|
if mode2=="sym":
|
|
800
917
|
res=(TDCR_calcul-TD)**2
|
|
801
918
|
elif mode2=="asym":
|
|
@@ -810,23 +927,20 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
810
927
|
else:
|
|
811
928
|
return mean_efficiency_S, std_efficiency_S, mean_efficiency_D, std_efficiency_D, mean_efficiency_T, std_efficiency_T
|
|
812
929
|
if mode =="dis":
|
|
813
|
-
return efficiency_S, efficiency_D, efficiency_T
|
|
814
|
-
|
|
815
|
-
|
|
930
|
+
return efficiency_S, efficiency_D, efficiency_T
|
|
816
931
|
|
|
817
932
|
# L = (1, 1, 1)
|
|
818
933
|
# TD = 0.977667386529166
|
|
819
934
|
# TAB = 0.992232838598821
|
|
820
935
|
# TBC = 0.992343419459002
|
|
821
936
|
# TAC = 0.99275350064608
|
|
822
|
-
# Rad="
|
|
937
|
+
# Rad="Cd-109"
|
|
823
938
|
# pmf_1="1"
|
|
824
|
-
# N =
|
|
939
|
+
# N = 1000
|
|
825
940
|
# kB =1.0e-5
|
|
826
941
|
# V = 10
|
|
827
942
|
# mode = "dis"
|
|
828
943
|
# mode2 = "asym"
|
|
829
944
|
|
|
830
945
|
|
|
831
|
-
# S,D,T = TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=
|
|
832
|
-
# # tl.display_distrib(S,D,T)
|
|
946
|
+
# S,D,T = TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=False, barp=True,uncData=True)
|