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.

Files changed (74) hide show
  1. {TDCRPy-1.3.0/TDCRPy.egg-info → TDCRPy-1.4.0}/PKG-INFO +1 -1
  2. {TDCRPy-1.3.0 → TDCRPy-1.4.0/TDCRPy.egg-info}/PKG-INFO +1 -1
  3. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/TDCRPy.egg-info/SOURCES.txt +1 -0
  4. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/setup.py +1 -1
  5. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/TDCRPy.py +225 -111
  6. TDCRPy-1.4.0/tdcrpy/TDCRPy1.py +946 -0
  7. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/LICENCE.md +0 -0
  8. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/MANIFEST.in +0 -0
  9. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/README.md +0 -0
  10. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/TDCRPy.egg-info/dependency_links.txt +0 -0
  11. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/TDCRPy.egg-info/requires.txt +0 -0
  12. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/TDCRPy.egg-info/top_level.txt +0 -0
  13. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/setup.cfg +0 -0
  14. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_C-14.txt +0 -0
  15. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Ca-45.txt +0 -0
  16. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_H-3.txt +0 -0
  17. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Ni-63.txt +0 -0
  18. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Pm-147.txt +0 -0
  19. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Pu-241.txt +0 -0
  20. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_S-35.txt +0 -0
  21. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Sr-89.txt +0 -0
  22. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Sr-90.txt +0 -0
  23. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Tc-99.txt +0 -0
  24. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/E_depose.txt +0 -0
  25. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_1_200k.txt +0 -0
  26. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_2000_10000k.txt +0 -0
  27. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_200_2000k.txt +0 -0
  28. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_1_200k.txt +0 -0
  29. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_2000_10000k.txt +0 -0
  30. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_200_2000k.txt +0 -0
  31. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-beta-_1_200k.txt +0 -0
  32. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-beta-_200_2000k.txt +0 -0
  33. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_1_200k.txt +0 -0
  34. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_2000_10000k.txt +0 -0
  35. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_200_2000k.txt +0 -0
  36. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_0.015.txt +0 -0
  37. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.1e-05.txt +0 -0
  38. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.2e-05.txt +0 -0
  39. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.3e-05.txt +0 -0
  40. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.4e-05.txt +0 -0
  41. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.5e-05.txt +0 -0
  42. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1e-05.txt +0 -0
  43. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_6e-06.txt +0 -0
  44. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_7e-06.txt +0 -0
  45. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_8e-06.txt +0 -0
  46. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyAlpha_9e-06.txt +0 -0
  47. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.006.txt +0 -0
  48. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.007.txt +0 -0
  49. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.008.txt +0 -0
  50. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.009.txt +0 -0
  51. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.01.txt +0 -0
  52. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.011.txt +0 -0
  53. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.012.txt +0 -0
  54. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.013.txt +0 -0
  55. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.014.txt +0 -0
  56. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.015.txt +0 -0
  57. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/TandataUG.txt +0 -0
  58. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/alpha_toulene.txt +0 -0
  59. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/inputVecteurAlpha.txt +0 -0
  60. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/Quenching/inputVecteurElectron.txt +0 -0
  61. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/TDCR_model_lib.py +0 -0
  62. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/TDCRoptimize.py +0 -0
  63. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/__init__.py +0 -0
  64. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/config.toml +0 -0
  65. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/decayData/All-nuclides_BetaShape.zip +0 -0
  66. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/decayData/All-nuclides_Ensdf.zip +0 -0
  67. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/decayData/All-nuclides_PenNuc.zip +0 -0
  68. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/genindex.html +0 -0
  69. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/index.html +0 -0
  70. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/search.html +0 -0
  71. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/source/modules.html +0 -0
  72. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/docs/_build/html/source/tdcrpy.html +0 -0
  73. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/test/__init__.py +0 -0
  74. {TDCRPy-1.3.0 → TDCRPy-1.4.0}/tdcrpy/test/test_tdcrpy.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: TDCRPy
3
- Version: 1.3.0
3
+ Version: 1.4.0
4
4
  Summary: TDCR model
5
5
  Home-page: https://github.com/RomainCoulon/TDCRPy
6
6
  Author: RomainCoulon (Romain Coulon)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: TDCRPy
3
- Version: 1.3.0
3
+ Version: 1.4.0
4
4
  Summary: TDCR model
5
5
  Home-page: https://github.com/RomainCoulon/TDCRPy
6
6
  Author: RomainCoulon (Romain Coulon)
@@ -8,6 +8,7 @@ TDCRPy.egg-info/dependency_links.txt
8
8
  TDCRPy.egg-info/requires.txt
9
9
  TDCRPy.egg-info/top_level.txt
10
10
  tdcrpy/TDCRPy.py
11
+ tdcrpy/TDCRPy1.py
11
12
  tdcrpy/TDCR_model_lib.py
12
13
  tdcrpy/TDCRoptimize.py
13
14
  tdcrpy/__init__.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = "1.3.0"
5
+ VERSION = "1.4.0"
6
6
  DESCRIPTION = "TDCR model"
7
7
 
8
8
  with open("README.md", "r") as f:
@@ -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
- # import TDCR_model_lib as tl
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, uncData=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, "dis" to resturn distributions.
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 False.
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
- print(trans_halfLife)
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 np.random.exponential(trans_halfLife[index_rad][iDaughter][i_branch][i_level], size=1)[0] > tau: splitEvent = True
264
- else: splitEvent = False
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
- if transitionType[index_rad][iDaughter][i_level][index_t] == "GA": # if it is a gamma that has been emitted
296
- particle_vec.append("gamma") # Update of the particle vector
297
- energy_vec.append(e_trans[index_rad][iDaughter][i_level][index_t]) # Update the energy vector
298
- else: # if not, it is a internal conversion, so an electron
299
- particle_vec.append("electron") # !!!!!!!!! it is OK for our model? Does the electron leave with the kinetic enegy of the transition
300
- energy_vec.append(e_trans[index_rad][iDaughter][i_level][index_t]) # Update the energy vector
301
- if transitionType[index_rad][iDaughter][i_level][index_t] == "EK": # record that an electron is missing on the K shell of the dughter nucleus
302
- particle_vec.append("Atom_K")
303
- energy_vec.append(0)
304
-
305
- if transitionType[index_rad][iDaughter][i_level][index_t] == "EL": # record that an electron is missing on the L1 shell of the dughter nucleus
306
- particle_vec.append("Atom_L")
307
- energy_vec.append(0)
308
-
309
- if transitionType[index_rad][iDaughter][i_level][index_t] == "EL1": # record that an electron is missing on the L1 shell of the dughter nucleus
310
- particle_vec.append("Atom_L1")
311
- energy_vec.append(0)
312
-
313
- if transitionType[index_rad][iDaughter][i_level][index_t] == "EL2": # record that an electron is missing on the L2 shell of the dughter nucleus
314
- particle_vec.append("Atom_L2")
315
- energy_vec.append(0)
316
-
317
- if transitionType[index_rad][iDaughter][i_level][index_t] == "EL3": # record that an electron is missing on the L3 shell of the dughter nucleus
318
- particle_vec.append("Atom_L3")
319
- energy_vec.append(0)
320
-
321
- if transitionType[index_rad][iDaughter][i_level][index_t] == "EM": # record that an electron is missing on the M shell of the dughter nucleus
322
- particle_vec.append("Atom_M")
323
- energy_vec.append(0)
324
-
325
- if transitionType[index_rad][iDaughter][i_level][index_t] == "EN": # record that an electron is missing on the N shell of the dughter nucleus
326
- particle_vec.append("Atom_N")
327
- energy_vec.append(0)
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
- e_sum += e_trans[index_rad][iDaughter][i_level][index_t] # Energy summary
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 splitEvent:
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
- particle_vec[i_part] = "Atom_M"
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
- particle_vec[i_part] = "Atom_M"
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
- particle_vec[i_part] = "Atom_L"
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
- particle_vec[i_part] = "Atom_M"
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
- e_sum += ef
488
+ e_sum2 += ef
489
+
388
490
  if Display:
389
- print("\t Summary of the atomic relaxation (prompt emission)")
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
- energy_vec[i] = e_b[index_beta_energy]
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 promt atomic relaxation")
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 delayed nuclear relaxation")
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 prompt atomic relaxation")
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 delayed nuclear relaxation")
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 prompt atomic relaxation")
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 delayed nuclear relaxation")
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
- p_nosingle = np.exp(-L*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
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
- pA_nosingle = np.exp(-L[0]*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
552
- pA_single = 1-pA_nosingle # probability to have at least 1 electrons in a PMT
553
- pB_nosingle = np.exp(-L[1]*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
554
- pB_single = 1-pB_nosingle # probability to have at least 1 electrons in a PMT
555
- pC_nosingle = np.exp(-L[2]*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
556
- pC_single = 1-pC_nosingle # probability to have at least 1 electrons in a PMT
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
- efficiency_AB.append(pA_single*pB_single)
559
- efficiency_BC.append(pB_single*pC_single)
560
- efficiency_AC.append(pA_single*pC_single)
561
- efficiency_T.append(pA_single*pB_single*pC_single)
562
- efficiency_D.append(efficiency_AB[-1]+efficiency_BC[-1]+efficiency_AC[-1]-2*efficiency_T[-1])
563
- efficiency_S.append(pA_single+pB_single+pC_single-efficiency_D[-1]-efficiency_T[-1])
564
- if Display: print("\t Summary of TDCR measurement (prompt)")
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(efficiency_S[-1],5))
569
- if Display: print("\t\t Efficiency of double events: ", round(efficiency_D[-1],5))
570
- if Display: print("\t\t Efficiency of triple events: ", round(efficiency_T[-1],5))
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 (delayed)")
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="Co-60"
937
+ # Rad="Cd-109"
823
938
  # pmf_1="1"
824
- # N = 10
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=True, barp=False, uncData=False)
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)