TDCRPy 2.4.0__tar.gz → 2.6.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 (87) hide show
  1. {tdcrpy-2.4.0/TDCRPy.egg-info → tdcrpy-2.6.0}/PKG-INFO +1 -1
  2. {tdcrpy-2.4.0 → tdcrpy-2.6.0/TDCRPy.egg-info}/PKG-INFO +1 -1
  3. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/setup.py +1 -1
  4. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/TDCRPy.py +5 -5
  5. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/TDCR_model_lib.py +100 -110
  6. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/config.toml +4 -0
  7. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/LICENCE.md +0 -0
  8. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/MANIFEST.in +0 -0
  9. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/README.md +0 -0
  10. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/TDCRPy.egg-info/SOURCES.txt +0 -0
  11. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/TDCRPy.egg-info/dependency_links.txt +0 -0
  12. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/TDCRPy.egg-info/requires.txt +0 -0
  13. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/TDCRPy.egg-info/top_level.txt +0 -0
  14. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/setup.cfg +0 -0
  15. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_C-14.txt +0 -0
  16. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Ca-45.txt +0 -0
  17. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Co-60.txt +0 -0
  18. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_H-3.txt +0 -0
  19. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Ni-63.txt +0 -0
  20. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Pm-147.txt +0 -0
  21. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Pu-241.txt +0 -0
  22. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_S-35.txt +0 -0
  23. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Sr-89.txt +0 -0
  24. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Sr-90.txt +0 -0
  25. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Tc-99.txt +0 -0
  26. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/E_depose.txt +0 -0
  27. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_1_200k.txt +0 -0
  28. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_2000_10000k.txt +0 -0
  29. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-beta-_200_2000k.txt +0 -0
  30. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_1_200k.txt +0 -0
  31. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_2000_10000k.txt +0 -0
  32. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_10ml-photon_200_2000k.txt +0 -0
  33. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_13ml-beta-_1_200k.txt +0 -0
  34. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_13ml-beta-_2000_10000k.txt +0 -0
  35. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_13ml-beta-_200_2000k.txt +0 -0
  36. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_13ml-photon_1_200k.txt +0 -0
  37. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_13ml-photon_2000_10000k.txt +0 -0
  38. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_13ml-photon_200_2000k.txt +0 -0
  39. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-beta-_1_200k.txt +0 -0
  40. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-beta-_2000_10000k.txt +0 -0
  41. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-beta-_200_2000k.txt +0 -0
  42. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_1_200k.txt +0 -0
  43. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_2000_10000k.txt +0 -0
  44. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/MCNP-MATRIX/matrice/fichier/matrice_16ml-photon_200_2000k.txt +0 -0
  45. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Micelle/2nmfaq01.csv +0 -0
  46. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Micelle/faq01.csv +0 -0
  47. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_0.015.txt +0 -0
  48. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.1e-05.txt +0 -0
  49. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.2e-05.txt +0 -0
  50. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.3e-05.txt +0 -0
  51. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.4e-05.txt +0 -0
  52. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1.5e-05.txt +0 -0
  53. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_1e-05.txt +0 -0
  54. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_6e-06.txt +0 -0
  55. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_7e-06.txt +0 -0
  56. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_8e-06.txt +0 -0
  57. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyAlpha_9e-06.txt +0 -0
  58. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.006.txt +0 -0
  59. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.007.txt +0 -0
  60. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.008.txt +0 -0
  61. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.009.txt +0 -0
  62. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.01.txt +0 -0
  63. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.011.txt +0 -0
  64. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.012.txt +0 -0
  65. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.013.txt +0 -0
  66. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.014.txt +0 -0
  67. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/QuenchEnergyElectron_0.015.txt +0 -0
  68. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/TandataUG.txt +0 -0
  69. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/alpha_toulene.txt +0 -0
  70. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/inputVecteurAlpha.txt +0 -0
  71. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/Quenching/inputVecteurElectron.txt +0 -0
  72. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/TDCRPy1.py +0 -0
  73. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/TDCRoptimize.py +0 -0
  74. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/__init__.py +0 -0
  75. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/decayData/All-nuclides_BetaShape.zip +0 -0
  76. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/decayData/All-nuclides_Ensdf.zip +0 -0
  77. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/decayData/All-nuclides_PenNuc.zip +0 -0
  78. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/decayData/atom-ENDF-VII0.zip +0 -0
  79. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/decayData/photo-ENDF.zip +0 -0
  80. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/docs/_build/html/genindex.html +0 -0
  81. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/docs/_build/html/index.html +0 -0
  82. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/docs/_build/html/search.html +0 -0
  83. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/docs/_build/html/source/modules.html +0 -0
  84. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/docs/_build/html/source/tdcrpy.html +0 -0
  85. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/test/__init__.py +0 -0
  86. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/test/test_tdcrpy.py +0 -0
  87. {tdcrpy-2.4.0 → tdcrpy-2.6.0}/tdcrpy/test2.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TDCRPy
3
- Version: 2.4.0
3
+ Version: 2.6.0
4
4
  Summary: TDCR model
5
5
  Home-page: https://pypi.org/project/TDCRPy/
6
6
  Author: RomainCoulon (Romain Coulon)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TDCRPy
3
- Version: 2.4.0
3
+ Version: 2.6.0
4
4
  Summary: TDCR model
5
5
  Home-page: https://pypi.org/project/TDCRPy/
6
6
  Author: RomainCoulon (Romain Coulon)
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = "2.4.0"
5
+ VERSION = "2.6.0"
6
6
 
7
7
  DESCRIPTION = "TDCR model"
8
8
 
@@ -1236,20 +1236,20 @@ def effA(TD, Rad, pmf_1, kB, V, L=1, maxiter=20, xatol=1e-7, disp=False):
1236
1236
 
1237
1237
 
1238
1238
  # mode = "eff" # ask for efficiency calculation
1239
- # Rad="Na-22" # radionuclides
1239
+ # Rad="Fe-55" # radionuclides
1240
1240
  # pmf_1="1" # relatives fractions of the radionulides
1241
1241
  # N = 1000 # number of Monte Carlo trials
1242
1242
  # kB =1.0e-5 # Birks constant in cm keV-1
1243
1243
  # V = 10 # volume of scintillator in mL
1244
- # L=np.logspace(-3,2,num=100) # free parameter in keV-1
1244
+ # L=np.logspace(-1,2,num=100) # free parameter in keV-1
1245
1245
 
1246
- # # TDCRPy(1, Rad, pmf_1, 10, kB, V, mode, Display= True, barp=False, record=True)
1247
1246
  # # Record decay histories in temporary files
1248
- # TDCRPy(L[0], Rad, pmf_1, N, kB, V, mode, barp=False, record=True)
1247
+ # TDCRPy(L[0], Rad, pmf_1, N, kB, V, mode, barp=False, record=True, fullMC=False)
1248
+ # # TDCRPy(100, Rad, pmf_1, N, kB, V, mode, barp=False, record=True, fullMC=True)
1249
1249
 
1250
1250
  # effS, u_effS, effD, u_effD, effT, u_effT, effD2, u_effD2 = [], [],[], [],[], [], [], []
1251
1251
  # for l in tqdm(L, desc="free parameters ", unit=" iterations"):
1252
- # out = TDCRPy(l, Rad, pmf_1, N, kB, V, mode, readRecHist=True)
1252
+ # out = TDCRPy(l, Rad, pmf_1, N, kB, V, mode, readRecHist=True, fullMC=False)
1253
1253
  # effS.append(out[2])
1254
1254
  # u_effS.append(out[3])
1255
1255
  # effD.append(out[2])
@@ -60,6 +60,7 @@ def readParameters(disp=False):
60
60
  diam_micelle = config["Inputs"].getfloat("diam_micelle")
61
61
  fAq = config["Inputs"].getfloat("fAq")
62
62
  micCorr = config["Inputs"].getboolean("micCorr")
63
+ alphaDir = config["Inputs"].getfloat("alphaDir")
63
64
 
64
65
  if disp:
65
66
  print(f"number of integration bins for electrons = {nE_electron}")
@@ -76,13 +77,14 @@ def readParameters(disp=False):
76
77
  print(f"activation of the micelle correction = {micCorr}")
77
78
  print(f"diameter of micelle = {diam_micelle} nm")
78
79
  print(f"acqueous fraction = {fAq}")
80
+ print(f"alpha parameter of the hidden Dirichlet process = {alphaDir}")
79
81
  print(f"coincidence resolving time = {tau} ns")
80
82
  print(f"extended dead time = {extDT} µs")
81
83
  print(f"measurement time = {measTime} min")
82
84
 
83
- return nE_electron, nE_alpha, RHO, Z, A, depthSpline, Einterp_a, Einterp_e, diam_micelle, fAq, tau, extDT, measTime, micCorr, pH,pC,pN,pO,pP,pCl
85
+ return nE_electron, nE_alpha, RHO, Z, A, depthSpline, Einterp_a, Einterp_e, diam_micelle, fAq, tau, extDT, measTime, micCorr, alphaDir, pH,pC,pN,pO,pP,pCl
84
86
 
85
- nE_electron, nE_alpha, RHO, Z, A, depthSpline, Einterp_a, Einterp_e, diam_micelle, fAq, tau, extDT, measTime, micCorr, pH,pC,pN,pO,pP,pCl = readParameters()
87
+ nE_electron, nE_alpha, RHO, Z, A, depthSpline, Einterp_a, Einterp_e, diam_micelle, fAq, tau, extDT, measTime, micCorr, alphaDir, pH,pC,pN,pO,pP,pCl = readParameters()
86
88
 
87
89
  p_atom = np.array([pH,pC,pN,pO,pP,pCl]) # atom abondance in the scintillator
88
90
  p_atom /= sum(p_atom)
@@ -192,6 +194,12 @@ def modifyMicCorr(x):
192
194
  x0 = readParameters()[13]
193
195
  data1 = data0.replace(f"micCorr = {x0}",f"micCorr= {x}")
194
196
  writeConfifAsstr(data1)
197
+
198
+ def modifyAlphaDir(x):
199
+ data0 = readConfigAsstr()
200
+ x0 = readParameters()[14]
201
+ data1 = data0.replace(f"alphaDir = {x0}",f"alphaDir = {x}")
202
+ writeConfifAsstr(data1)
195
203
 
196
204
  def read_temp_files(copy=False, path="C:"):
197
205
 
@@ -3004,7 +3012,7 @@ def detectProbabilities(L, e_quenching, e_quenching2, t1, evenement, extDT, meas
3004
3012
  return efficiency0_S, efficiency0_D, efficiency0_T, efficiency0_AB, efficiency0_BC, efficiency0_AC, efficiency0_D2
3005
3013
 
3006
3014
 
3007
- def detectProbabilitiesMC(L, e_quenching, e_quenching2, t1, evenement, extDT, measTime):
3015
+ def detectProbabilitiesMC(L, e_quenching, e_quenching2, t1, evenement, extDT, measTime, dir_param = alphaDir):
3008
3016
  """
3009
3017
  Calculate detection probabilities for LS counting systems - see Broda, R., Cassette, P., Kossert, K., 2007. Radionuclide metrology using liquid scintillation counting. Metrologia 44. https://doi.org/10.1088/0026-1394/44/4/S06
3010
3018
 
@@ -3048,115 +3056,97 @@ def detectProbabilitiesMC(L, e_quenching, e_quenching2, t1, evenement, extDT, me
3048
3056
  else:
3049
3057
  symm = True
3050
3058
 
3059
+ mu = 0.2
3060
+
3061
+ if dir_param < 1000:
3062
+ dirichTD = np.random.dirichlet([dir_param, dir_param, dir_param])
3063
+ dirichCN = np.random.dirichlet([dir_param, dir_param])
3064
+ else:
3065
+ dirichTD = [1/3, 1/3, 1/3]
3066
+ dirichCN = [1/2, 1/2]
3067
+
3068
+ efficiency0_S = 0; efficiency0_T = 0; efficiency0_D = 0
3069
+ efficiency0_AB = 0; efficiency0_BC = 0; efficiency0_AC = 0
3070
+ efficiency0_D2 = 0;
3071
+ n_e = np.zeros(3); n_eCN = np.zeros(2); n_e2 = np.zeros(3); n_e2CN = np.zeros(2)
3072
+
3051
3073
  if symm:
3052
- if evenement !=1 and t1 > extDT*1e-6 and t1 < measTime*60:
3053
- m = len(e_quenching)
3054
- n_ph = np.random.poisson(np.asarray((e_quenching+e_quenching2)*L))
3055
- n_S = 0; n_D = 0; n_T = 0; n_AB = 0; n_BC = 0; n_AC = 0; n_D2 = 0; n_A2 = 0; n_B2 = 0;
3056
- for j in n_ph:
3057
- n_phPMT = np.random.multinomial(j, [1/3, 1/3, 1/3])
3058
- if sum(n_phPMT>1)>0: n_S +=1
3059
- if sum(n_phPMT>1)>1: n_D +=1
3060
- if sum(n_phPMT>1)>2: n_T +=1
3061
- if n_phPMT[0]>1 and n_phPMT[1]>1: n_AB +=1
3062
- if n_phPMT[1]>1 and n_phPMT[2]>1: n_BC +=1
3063
- if n_phPMT[0]>1 and n_phPMT[2]>1: n_AC +=1
3064
- efficiency0_S = n_S/m
3065
- efficiency0_T = n_T/m
3066
- efficiency0_D = n_D/m
3067
- efficiency0_AB = n_AB/m
3068
- efficiency0_BC = n_BC/m
3069
- efficiency0_AC = n_AC/m
3070
- for j in n_ph:
3071
- n_phPMT = np.random.multinomial(j, [1/2, 1/2])
3072
- if sum(n_phPMT>1)>1: n_D2 +=1
3073
- if n_phPMT[0]>1: n_A2 +=1
3074
- if n_phPMT[1]>1: n_B2 +=1
3075
- # efficiency0_A2 = n_A2/m
3076
- # efficiency0_B2 = n_B2/m
3077
- efficiency0_D2 = n_D2/m
3078
- else: # symm and no deleayed event sum
3079
- m = len(e_quenching)
3080
- n_ph = np.random.poisson(np.asarray(e_quenching*L))
3081
- n_S = 0; n_D = 0; n_T = 0; n_AB = 0; n_BC = 0; n_AC = 0; n_D2 = 0; n_A2 = 0; n_B2 = 0;
3082
- for j in n_ph:
3083
- n_phPMT = np.random.multinomial(j, [1/3, 1/3, 1/3])
3084
- if sum(n_phPMT>1)>0: n_S +=1
3085
- if sum(n_phPMT>1)>1: n_D +=1
3086
- if sum(n_phPMT>1)>2: n_T +=1
3087
- if n_phPMT[0]>1 and n_phPMT[1]>1: n_AB +=1
3088
- if n_phPMT[1]>1 and n_phPMT[2]>1: n_BC +=1
3089
- if n_phPMT[0]>1 and n_phPMT[2]>1: n_AC +=1
3090
- efficiency0_S = n_S/m
3091
- efficiency0_T = n_T/m
3092
- efficiency0_D = n_D/m
3093
- efficiency0_AB = n_AB/m
3094
- efficiency0_BC = n_BC/m
3095
- efficiency0_AC = n_AC/m
3096
- for j in n_ph:
3097
- n_phPMT = np.random.multinomial(j, [1/2, 1/2])
3098
- if sum(n_phPMT>1)>1: n_D2 +=1
3099
- if n_phPMT[0]>1: n_A2 +=1
3100
- if n_phPMT[1]>1: n_B2 +=1
3101
- # efficiency0_A2 = n_A2/m
3102
- # efficiency0_B2 = n_B2/m
3103
- efficiency0_D2 = n_D2/m
3074
+ n_ph = np.random.poisson(sum(np.asarray(e_quenching))*L/mu)
3075
+ # TDCR
3076
+ n_phPMT = np.random.multinomial(n_ph, dirichTD)
3077
+ n_e[0]=np.random.binomial(n_phPMT[0],mu)
3078
+ n_e[1]=np.random.binomial(n_phPMT[1],mu)
3079
+ n_e[2]=np.random.binomial(n_phPMT[2],mu)
3080
+ if sum(n_e>1)>0: efficiency0_S =1
3081
+ if sum(n_e>1)>1: efficiency0_D =1
3082
+ if sum(n_e>1)>2: efficiency0_T =1
3083
+ if n_e[0]>1 and n_e[1]>1: efficiency0_AB =1
3084
+ if n_e[1]>1 and n_e[2]>1: efficiency0_BC =1
3085
+ if n_e[0]>1 and n_e[2]>1: efficiency0_AC =1
3086
+ # C/N
3087
+ n_phPMT = np.random.multinomial(n_ph, dirichCN)
3088
+ n_eCN[0]=np.random.binomial(n_phPMT[0],mu)
3089
+ n_eCN[1]=np.random.binomial(n_phPMT[1],mu)
3090
+ if sum(n_e>1)>1: efficiency0_D2 =1
3091
+
3092
+ if evenement !=1 and t1 > extDT*1e-6 and t1 < measTime*60:
3093
+ n_ph2 = np.random.poisson(sum(np.asarray(e_quenching2))*L/mu)
3094
+ # TDCR
3095
+ n_phPMT2 = np.random.multinomial(n_ph2, dirichTD)
3096
+ n_e2[0]=np.random.binomial(n_phPMT2[0],mu)
3097
+ n_e2[1]=np.random.binomial(n_phPMT2[1],mu)
3098
+ n_e2[2]=np.random.binomial(n_phPMT2[2],mu)
3099
+ if sum(n_e2>1)>0: efficiency0_S +=1
3100
+ if sum(n_e2>1)>1: efficiency0_D +=1
3101
+ if sum(n_e2>1)>2: efficiency0_T +=1
3102
+ if n_e2[0]>1 and n_e2[1]>1: efficiency0_AB +=1
3103
+ if n_e2[1]>1 and n_e2[2]>1: efficiency0_BC +=1
3104
+ if n_e2[0]>1 and n_e2[2]>1: efficiency0_AC +=1
3105
+ # C/N
3106
+ n_phPMT2 = np.random.multinomial(n_ph2, dirichCN)
3107
+ n_e2CN[0]=np.random.binomial(n_phPMT2[0],mu)
3108
+ n_e2CN[1]=np.random.binomial(n_phPMT2[1],mu)
3109
+ if sum(n_e2CN>1)>1: efficiency0_D2 +=1
3110
+
3104
3111
  else: # asym
3105
- if evenement !=1 and t1 > extDT*1e-6 and t1 < measTime*60: # sum of delayed event
3106
- m = len(e_quenching)
3107
- Lm = np.mean(L)
3108
- n_ph = np.random.poisson(np.asarray(e_quenching+e_quenching2)*Lm)
3109
- n_S = 0; n_D = 0; n_T = 0; n_AB = 0; n_BC = 0; n_AC = 0; n_D2 = 0; n_A2 = 0; n_B2 = 0;
3110
- for j in n_ph:
3111
- n_phPMT = np.random.multinomial(j, [L[0]/(3*Lm), L[1]/(3*Lm), L[2]/(3*Lm)])
3112
- if sum(n_phPMT>1)>0: n_S +=1
3113
- if sum(n_phPMT>1)>1: n_D +=1
3114
- if sum(n_phPMT>1)>2: n_T +=1
3115
- if n_phPMT[0]>1 and n_phPMT[1]>1: n_AB +=1
3116
- if n_phPMT[1]>1 and n_phPMT[2]>1: n_BC +=1
3117
- if n_phPMT[0]>1 and n_phPMT[2]>1: n_AC +=1
3118
- efficiency0_S = n_S/m
3119
- efficiency0_T = n_T/m
3120
- efficiency0_D = n_D/m
3121
- efficiency0_AB = n_AB/m
3122
- efficiency0_BC = n_BC/m
3123
- efficiency0_AC = n_AC/m
3124
- for j in n_ph:
3125
- n_phPMT = np.random.multinomial(j, [L[0]/(2*Lm), L[1]/(2*Lm)])
3126
- if sum(n_phPMT>1)>1: n_D2 +=1
3127
- if n_phPMT[0]>1: n_A2 +=1
3128
- if n_phPMT[1]>1: n_B2 +=1
3129
- # efficiency0_A2 = n_A2/m
3130
- # efficiency0_B2 = n_B2/m
3131
- efficiency0_D2 = n_D2/m
3132
- else: # asym and no sum of delayed events
3133
- m = len(e_quenching)
3134
- Lm = np.mean(L)
3135
- n_ph = np.random.poisson(np.asarray((e_quenching+e_quenching2)*Lm))
3136
- n_S = 0; n_D = 0; n_T = 0; n_AB = 0; n_BC = 0; n_AC = 0; n_D2 = 0; n_A2 = 0; n_B2 = 0;
3137
- for j in n_ph:
3138
- n_phPMT = np.random.multinomial(j, [L[0]/(3*Lm), L[1]/(3*Lm), L[2]/(3*Lm)])
3139
- if sum(n_phPMT>1)>0: n_S +=1
3140
- if sum(n_phPMT>1)>1: n_D +=1
3141
- if sum(n_phPMT>1)>2: n_T +=1
3142
- if n_phPMT[0]>1 and n_phPMT[1]>1: n_AB +=1
3143
- if n_phPMT[1]>1 and n_phPMT[2]>1: n_BC +=1
3144
- if n_phPMT[0]>1 and n_phPMT[2]>1: n_AC +=1
3145
- efficiency0_S = n_S/m
3146
- efficiency0_T = n_T/m
3147
- efficiency0_D = n_D/m
3148
- efficiency0_AB = n_AB/m
3149
- efficiency0_BC = n_BC/m
3150
- efficiency0_AC = n_AC/m
3151
- for j in n_ph:
3152
- n_phPMT = np.random.multinomial(j, [L[0]/(2*Lm), L[1]/(2*Lm)])
3153
- if sum(n_phPMT>1)>1: n_D2 +=1
3154
- if n_phPMT[0]>1: n_A2 +=1
3155
- if n_phPMT[1]>1: n_B2 +=1
3156
- # efficiency0_A2 = n_A2/m
3157
- # efficiency0_B2 = n_B2/m
3158
- efficiency0_D2 = n_D2/m
3159
- return efficiency0_S, efficiency0_D, efficiency0_T, efficiency0_AB, efficiency0_BC, efficiency0_AC, efficiency0_D2
3112
+ Lm = np.mean(L)
3113
+ n_ph = np.random.poisson(sum(np.asarray((e_quenching))*Lm/mu))
3114
+ # TDCR
3115
+ n_phPMT = np.random.multinomial(n_ph, [L[0]*dirichTD[0]/Lm, L[1]*dirichTD[1]/Lm, L[2]*dirichTD[2]/Lm])
3116
+ n_e[0]=np.random.binomial(n_phPMT[0],mu)
3117
+ n_e[1]=np.random.binomial(n_phPMT[1],mu)
3118
+ n_e[2]=np.random.binomial(n_phPMT[2],mu)
3119
+ if sum(n_e>1)>0: efficiency0_S =1
3120
+ if sum(n_e>1)>1: efficiency0_D =1
3121
+ if sum(n_e>1)>2: efficiency0_T =1
3122
+ if n_e[0]>1 and n_e[1]>1: efficiency0_AB =1
3123
+ if n_e[1]>1 and n_e[2]>1: efficiency0_BC =1
3124
+ if n_e[0]>1 and n_e[2]>1: efficiency0_AC =1
3125
+ # C/N
3126
+ n_phPMT = np.random.multinomial(n_ph, [L[0]/(2*Lm), L[1]/(2*Lm)])
3127
+ n_eCN[0]=np.random.binomial(n_phPMT[0],mu)
3128
+ n_eCN[1]=np.random.binomial(n_phPMT[1],mu)
3129
+ if sum(n_eCN>1)>1: efficiency0_D2 =1
3130
+
3131
+ if evenement !=1 and t1 > extDT*1e-6 and t1 < measTime*60:
3132
+ n_ph2 = np.random.poisson(sum(np.asarray(e_quenching2))*Lm/mu)
3133
+ # TDCR
3134
+ n_phPMT2 = np.random.multinomial(n_ph2, [L[0]*dirichCN[0]/Lm, L[1]*dirichCN[1]/Lm, L[2]*dirichCN[2]/Lm])
3135
+ n_e2[0]=np.random.binomial(n_phPMT2[0],mu)
3136
+ n_e2[1]=np.random.binomial(n_phPMT2[1],mu)
3137
+ n_e2[2]=np.random.binomial(n_phPMT2[2],mu)
3138
+ if sum(n_e2>1)>0: efficiency0_S +=1
3139
+ if sum(n_e2>1)>1: efficiency0_D +=1
3140
+ if sum(n_e2>1)>2: efficiency0_T +=1
3141
+ if n_e2[0]>1 and n_e2[1]>1: efficiency0_AB +=1
3142
+ if n_e2[1]>1 and n_e2[2]>1: efficiency0_BC +=1
3143
+ if n_e2[0]>1 and n_e2[2]>1: efficiency0_AC +=1
3144
+ # C/N
3145
+ n_e2CN[0]=np.random.binomial(n_phPMT2[0],mu)
3146
+ n_e2CN[1]=np.random.binomial(n_phPMT2[1],mu)
3147
+ if sum(n_e2CN>1)>1: efficiency0_D2 +=1
3148
+
3149
+ return efficiency0_S, efficiency0_D, efficiency0_T, efficiency0_AB, efficiency0_BC, efficiency0_AC, efficiency0_D2
3160
3150
 
3161
3151
 
3162
3152
 
@@ -31,6 +31,10 @@ diam_micelle = 2
31
31
  # acqueous fraction of the scintillator
32
32
  fAq = 0.1
33
33
 
34
+ ## OPTICAL PROPERTIES
35
+ # Dirichlet parameter
36
+ alphaDir = 100000
37
+
34
38
  ## PROPERTIES OF THE COUNTER
35
39
  # Coincidence resolving time (ns)
36
40
  tau = 50
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes