TDCRPy 1.12.11__py3-none-any.whl → 1.12.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of TDCRPy might be problematic. Click here for more details.
- {TDCRPy-1.12.11.dist-info → TDCRPy-1.12.13.dist-info}/METADATA +1 -1
- {TDCRPy-1.12.11.dist-info → TDCRPy-1.12.13.dist-info}/RECORD +10 -6
- tdcrpy/TDCRPy.py +304 -76
- tdcrpy/recordFiles/Temp_E0.txt +37 -0
- tdcrpy/recordFiles/Temp_E1.txt +37 -0
- tdcrpy/recordFiles/Temp_E2.txt +37 -0
- tdcrpy/recordFiles/Temp_E3.txt +26 -0
- {TDCRPy-1.12.11.dist-info → TDCRPy-1.12.13.dist-info}/LICENCE.md +0 -0
- {TDCRPy-1.12.11.dist-info → TDCRPy-1.12.13.dist-info}/WHEEL +0 -0
- {TDCRPy-1.12.11.dist-info → TDCRPy-1.12.13.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
tdcrpy/TDCRPy.py,sha256=
|
|
1
|
+
tdcrpy/TDCRPy.py,sha256=zdUZAf00Tm3Oy09G2A4tkfLYhZkj-ep67mL5FrfS-sM,65543
|
|
2
2
|
tdcrpy/TDCRPy1.py,sha256=QTBZh5B5JWnGB0BQfD-cFmwA9W080OD4sG-aj50-ejo,38106
|
|
3
3
|
tdcrpy/TDCR_model_lib.py,sha256=Vqbd-JVhGdF9BzW9axYwCHl2MOBfupCJ1ih5Nz_aXts,106906
|
|
4
4
|
tdcrpy/TDCRoptimize.py,sha256=c2XIGveeLdVYYek4Rg6dygMvVA2xIrIkMb3L-_jUucM,6496
|
|
@@ -1079,10 +1079,14 @@ tdcrpy/docs/_build/html/index.html,sha256=KbgBWH_0ixaswXk_lCM_pMk10v4rLs5qdPubj2
|
|
|
1079
1079
|
tdcrpy/docs/_build/html/search.html,sha256=IeTP6CsRdqKWOJttbtskg1oBgdN8norKlzai4Tmk8Kc,2799
|
|
1080
1080
|
tdcrpy/docs/_build/html/source/modules.html,sha256=Jf-qxVBId0UgpwyvYuyjtMNG-ezPOK1oH_IxRXAWTRs,3601
|
|
1081
1081
|
tdcrpy/docs/_build/html/source/tdcrpy.html,sha256=-38lHMNFB22p1tWJEeN3yDqfDiCYE304vxDamO1-iRc,3779
|
|
1082
|
+
tdcrpy/recordFiles/Temp_E0.txt,sha256=I8lJwaMRmBaHPlN7of3ieycfk4gaMT7j2ZJpJvxnVxM,980
|
|
1083
|
+
tdcrpy/recordFiles/Temp_E1.txt,sha256=pYitCNjrVK1vfpGTxycgNB1cWZIWj2rwUnFw1KLNa5M,983
|
|
1084
|
+
tdcrpy/recordFiles/Temp_E2.txt,sha256=nHzLeX6f7bOerL0LZSWCO6zg2WgA8tqDwPhMyUsI85w,992
|
|
1085
|
+
tdcrpy/recordFiles/Temp_E3.txt,sha256=mmg3kPoW5EXXCn8XHbRqDTt1vRHz_q5uVXRMAQvrTIU,902
|
|
1082
1086
|
tdcrpy/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1083
1087
|
tdcrpy/test/test_tdcrpy.py,sha256=JINqSEMFoNpptE4f3h6ZzTYW1rBx90KkaoQzltSg-No,4692
|
|
1084
|
-
TDCRPy-1.12.
|
|
1085
|
-
TDCRPy-1.12.
|
|
1086
|
-
TDCRPy-1.12.
|
|
1087
|
-
TDCRPy-1.12.
|
|
1088
|
-
TDCRPy-1.12.
|
|
1088
|
+
TDCRPy-1.12.13.dist-info/LICENCE.md,sha256=ZTpWyGU3qv_iwEpgvCijoCuCYpOPpyzJCgOk46WpUKU,1066
|
|
1089
|
+
TDCRPy-1.12.13.dist-info/METADATA,sha256=Jsiz9os_184vLMBQZ6NkXuQQGCE138ik61N0yBEvlbg,15833
|
|
1090
|
+
TDCRPy-1.12.13.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
1091
|
+
TDCRPy-1.12.13.dist-info/top_level.txt,sha256=f4vzFFcKSEnonAACs0ZXuRczmroLLqtPTqXFymU_VU0,14
|
|
1092
|
+
TDCRPy-1.12.13.dist-info/RECORD,,
|
tdcrpy/TDCRPy.py
CHANGED
|
@@ -81,7 +81,7 @@ def relaxAtom(daughter_relax,particle_vec,energy_vec,rad,Display=False,uncData=F
|
|
|
81
81
|
relaxation = False
|
|
82
82
|
return particle_vec, energy_vec
|
|
83
83
|
|
|
84
|
-
def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=False, barp=False, Smodel=True, uncData=False):
|
|
84
|
+
def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=False, barp=False, Smodel=True, syst = "TDCR", record = False, uncData=False):
|
|
85
85
|
"""
|
|
86
86
|
This is the main function of the TDCRPy package running the Monte-Carlo Triple-to-Double Coincidence Ratio model.
|
|
87
87
|
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.
|
|
@@ -140,6 +140,8 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
140
140
|
"True" to display details on the decay sampling. The default is False.
|
|
141
141
|
barp : Boolean, optional
|
|
142
142
|
"True" to display the calculation progress. The default is True.
|
|
143
|
+
record : Boolean, optional
|
|
144
|
+
"True" to record details of decay events. The default is False.
|
|
143
145
|
Smodel : Boolean, optional
|
|
144
146
|
"True" to run the stochastic TDCR model. False to run the analytical caclulation (available only for pure beta emitters).
|
|
145
147
|
|
|
@@ -159,7 +161,59 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
159
161
|
Estimation of the efficiency of triple coincidences. (only in mode="eff")
|
|
160
162
|
std_efficiency_T : float
|
|
161
163
|
Standard uncertainty from calculation associated with the estimation of the efficiency of triple coincidences. (only in mode="eff")
|
|
164
|
+
mean_efficiency_D2 : float
|
|
165
|
+
Estimation of the efficiency of double coincidences for C/N systems. (only in mode="eff")
|
|
166
|
+
std_efficiency_D2 : float
|
|
167
|
+
Standard uncertainty from calculation associated with the estimation of the efficiency of double coincidences for C/N systems. (only in mode="eff")
|
|
162
168
|
"""
|
|
169
|
+
if record:
|
|
170
|
+
# recfile1 = "recordFiles/"+Rad+"_"+pmf_1+"_"+str(N)+".dhf1"
|
|
171
|
+
recfile1 = "recordFiles/Temp_E0.txt"
|
|
172
|
+
header_content1 = """# TDCRPy output: inital energies from nuclear decays
|
|
173
|
+
# Column 1: KPAR (1=electron, 2=photon, 3=positron, 4=alpha)
|
|
174
|
+
# Column 2: Energy in eV (> ECNUC)
|
|
175
|
+
# Column 3: Decay number mod 100, two digits
|
|
176
|
+
# Column 4: Cascade number mod 10, one digit
|
|
177
|
+
# Column 5: Particle age in seconds (since decay started)
|
|
178
|
+
# 2 3 4 5
|
|
179
|
+
"""
|
|
180
|
+
with open(recfile1, "w") as file: file.write(header_content1)
|
|
181
|
+
|
|
182
|
+
# recfile2 = "recordFiles/"+Rad+"_"+pmf_1+"_"+str(N)+".dhf2"
|
|
183
|
+
recfile2 = "recordFiles/Temp_E1.txt"
|
|
184
|
+
header_content2 = """# TDCRPy output: deposited energies from nuclear decays
|
|
185
|
+
# Column 1: KPAR (1=electron, 2=photon, 3=positron, 4=alpha)
|
|
186
|
+
# Column 2: Energy in eV (> ECNUC)
|
|
187
|
+
# Column 3: Decay number mod 100, two digits
|
|
188
|
+
# Column 4: Cascade number mod 10, one digit
|
|
189
|
+
# Column 5: Particle age in seconds (since decay started)
|
|
190
|
+
# 2 3 4 5
|
|
191
|
+
"""
|
|
192
|
+
with open(recfile2, "w") as file: file.write(header_content2)
|
|
193
|
+
|
|
194
|
+
# recfile3 = "recordFiles/"+Rad+"_"+pmf_1+"_"+str(N)+".dhf3"
|
|
195
|
+
recfile3 = "recordFiles/Temp_E2.txt"
|
|
196
|
+
header_content3 = """# TDCRPy output: deposited quenched energies from nuclear decays
|
|
197
|
+
# Column 1: KPAR (1=electron, 2=photon, 3=positron, 4=alpha)
|
|
198
|
+
# Column 2: Energy in eV (> ECNUC)
|
|
199
|
+
# Column 3: Decay number mod 100, two digits
|
|
200
|
+
# Column 4: Cascade number mod 10, one digit
|
|
201
|
+
# Column 5: Particle age in seconds (since decay started)
|
|
202
|
+
# 2 3 4 5
|
|
203
|
+
"""
|
|
204
|
+
with open(recfile3, "w") as file: file.write(header_content3)
|
|
205
|
+
|
|
206
|
+
header_content4 = """# TDCRPy output: detection probabilities
|
|
207
|
+
# Column 1: Decay number mod 100, two digits
|
|
208
|
+
# Column 2: detection probability of single events
|
|
209
|
+
# Column 3: detection probability if double coincidences
|
|
210
|
+
# Column 4: detection probability if triple coincidences
|
|
211
|
+
# 2 3 4
|
|
212
|
+
"""
|
|
213
|
+
# recfile4 = "recordFiles/"+Rad+"_"+pmf_1+"_"+str(N)+".dhf4"
|
|
214
|
+
recfile4 = "recordFiles/Temp_E3.txt"
|
|
215
|
+
with open(recfile4, "w") as file: file.write(header_content4)
|
|
216
|
+
|
|
163
217
|
if barp: tl.display_header()
|
|
164
218
|
config = configparser.ConfigParser()
|
|
165
219
|
with importlib.resources.as_file(files('tdcrpy').joinpath('config.toml')) as data_path:
|
|
@@ -243,8 +297,11 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
243
297
|
trans_halfLife.append(out_PenNuc[15])
|
|
244
298
|
# print("\n",trans_halfLife)
|
|
245
299
|
|
|
300
|
+
efficiency_A2 = []
|
|
301
|
+
efficiency_B2 = []
|
|
246
302
|
efficiency_S = []
|
|
247
303
|
efficiency_D = []
|
|
304
|
+
efficiency_D2 = []
|
|
248
305
|
efficiency_T = []
|
|
249
306
|
efficiency_AB = []
|
|
250
307
|
efficiency_BC = []
|
|
@@ -253,7 +310,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
253
310
|
|
|
254
311
|
if barp and not Display: NN = tqdm(range(N), desc="Processing", unit=" decays")
|
|
255
312
|
else: NN = range(N)
|
|
256
|
-
for
|
|
313
|
+
for idec in NN: # Main Loop - Monte Carlo trials
|
|
257
314
|
particle_vec=[]
|
|
258
315
|
energy_vec=[]
|
|
259
316
|
'''
|
|
@@ -263,7 +320,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
263
320
|
'''
|
|
264
321
|
index_rad = tl.sampling(pmf_1)
|
|
265
322
|
rad_i = Rad[index_rad]
|
|
266
|
-
if Display: print("\n\n Trial ",str(
|
|
323
|
+
if Display: print("\n\n Trial ",str(idec+1),"- Sampled radionuclide: ", rad_i)
|
|
267
324
|
|
|
268
325
|
|
|
269
326
|
'''
|
|
@@ -505,12 +562,12 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
505
562
|
|
|
506
563
|
if Display:
|
|
507
564
|
print("\n\t ATOMIC RECOMBINATION--Prompt")
|
|
508
|
-
for
|
|
565
|
+
for idisp, p in enumerate(particle_vec):
|
|
509
566
|
if p[:4] != "Atom":
|
|
510
567
|
if p=="beta" or p=="beta+":
|
|
511
|
-
print(f'\t\t {p} transition of energy = {energy_vec[
|
|
568
|
+
print(f'\t\t {p} transition of energy = {energy_vec[idisp]}, keV')
|
|
512
569
|
else:
|
|
513
|
-
print(f"\t\t emitted {p} of energy = {round(energy_vec[
|
|
570
|
+
print(f"\t\t emitted {p} of energy = {round(energy_vec[idisp],3)} keV")
|
|
514
571
|
else:
|
|
515
572
|
print(f'\t\t an electron left the {p[5:]} shell')
|
|
516
573
|
|
|
@@ -524,12 +581,12 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
524
581
|
|
|
525
582
|
if Display:
|
|
526
583
|
print("\n\t ATOMIC RECOMBINATION--Delay")
|
|
527
|
-
for
|
|
584
|
+
for idisp, p in enumerate(particle_vec2):
|
|
528
585
|
if p[:4] != "Atom":
|
|
529
586
|
if p=="beta" or p=="beta+":
|
|
530
|
-
print(f'\t\t {p} transition of energy = {energy_vec2[
|
|
587
|
+
print(f'\t\t {p} transition of energy = {energy_vec2[idisp]}, keV')
|
|
531
588
|
else:
|
|
532
|
-
print(f"\t\t emitted {p} of energy = {round(energy_vec2[
|
|
589
|
+
print(f"\t\t emitted {p} of energy = {round(energy_vec2[idisp],3)} keV")
|
|
533
590
|
else:
|
|
534
591
|
print(f'\t\t an electron left the {p[5:]} shell')
|
|
535
592
|
|
|
@@ -540,155 +597,293 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
540
597
|
'''
|
|
541
598
|
if ("beta" in particle_vec) or ("beta+" in particle_vec):
|
|
542
599
|
if Display: print("\n\t EMISSION OF BETA PARTICLES")
|
|
543
|
-
for
|
|
600
|
+
for ipart, p in enumerate(particle_vec):
|
|
544
601
|
if p == "beta":
|
|
545
602
|
e_b,p_b = tl.readBetaShape(rad_i,"beta-",level_before_trans) # read the data of BetaShape
|
|
546
603
|
index_beta_energy = tl.sampling(p_b) # sampling in PDF
|
|
547
|
-
particle_vec[
|
|
548
|
-
energy_vec[
|
|
549
|
-
if Display: print(f"\t\t emitted {p} of energy = {round(energy_vec[
|
|
604
|
+
particle_vec[ipart] = "electron"
|
|
605
|
+
energy_vec[ipart] = e_b[index_beta_energy]
|
|
606
|
+
if Display: print(f"\t\t emitted {p} of energy = {round(energy_vec[ipart],3)} keV")
|
|
550
607
|
|
|
551
608
|
if p == "beta+":
|
|
552
609
|
e_b,p_b = tl.readBetaShape(rad_i,"beta+",level_before_trans)
|
|
553
610
|
index_beta_energy = tl.sampling(p_b) # sampling in PDF
|
|
554
|
-
particle_vec[
|
|
555
|
-
energy_vec[
|
|
611
|
+
particle_vec[ipart] = "positron"
|
|
612
|
+
energy_vec[ipart] = e_b[index_beta_energy]
|
|
556
613
|
particle_vec.append("gamma")
|
|
557
614
|
particle_vec.append("gamma")
|
|
558
615
|
energy_vec.append(511)
|
|
559
616
|
energy_vec.append(511)
|
|
560
|
-
if Display: print(f"\t\t emitted {p} of energy = {round(energy_vec[
|
|
617
|
+
if Display: print(f"\t\t emitted {p} of energy = {round(energy_vec[ipart],3)} keV")
|
|
561
618
|
#energy_vec_initial = energy_vec
|
|
562
619
|
energy_vec_initial = energy_vec.copy()
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
"""
|
|
624
|
+
==========================================================
|
|
625
|
+
III.a.1 record initial energies in file
|
|
626
|
+
==========================================================
|
|
627
|
+
"""
|
|
628
|
+
if record:
|
|
629
|
+
with open(recfile1, "a") as file:
|
|
630
|
+
# t1w=0
|
|
631
|
+
for irec, p in enumerate(particle_vec):
|
|
632
|
+
writeOn = True
|
|
633
|
+
|
|
634
|
+
if p == "electron" or ("Auger" in p): col1 = "1"
|
|
635
|
+
elif p == "gamma" or ("X" in p): col1 = "2"
|
|
636
|
+
elif p == "beta+": col1 = "3"
|
|
637
|
+
elif p == "alpha": col1 = "4"
|
|
638
|
+
else: writeOn = False
|
|
639
|
+
|
|
640
|
+
# if ('t1' in globals()) or ('t1' in locals()): t1w+=t1
|
|
641
|
+
|
|
642
|
+
if writeOn:
|
|
643
|
+
if idec<10:
|
|
644
|
+
file.write(f"{col1} {energy_vec[irec]*1e3:.6E} {idec} 1 0\n")
|
|
645
|
+
else:
|
|
646
|
+
file.write(f"{col1} {energy_vec[irec]*1e3:.6E} {idec} 1 0\n")
|
|
647
|
+
|
|
648
|
+
if evenement != 1:
|
|
649
|
+
for irec, p in enumerate(particle_vec2):
|
|
650
|
+
writeOn = True
|
|
651
|
+
|
|
652
|
+
if p == "electron" or ("Auger" in p): col1 = "1"
|
|
653
|
+
elif p == "gamma" or ("X" in p): col1 = "2"
|
|
654
|
+
elif p == "beta+": col1 = "3"
|
|
655
|
+
elif p == "alpha": col1 = "4"
|
|
656
|
+
else: writeOn = False
|
|
657
|
+
|
|
658
|
+
# if ('t1' in globals()) or ('t1' in locals()): t1w+=t1
|
|
659
|
+
|
|
660
|
+
if writeOn:
|
|
661
|
+
if idec<10:
|
|
662
|
+
file.write(f"{col1} {energy_vec2[irec]*1e3:.6E} {idec} 1 {t1:.6E}\n")
|
|
663
|
+
else:
|
|
664
|
+
file.write(f"{col1} {energy_vec2[irec]*1e3:.6E} {idec} 1 {t1:.6E}\n")
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
563
668
|
'''
|
|
564
669
|
==========================================================
|
|
565
670
|
III.b INTERACTION RAYONNEMENT/MATIERE
|
|
566
671
|
==========================================================
|
|
567
672
|
'''
|
|
568
673
|
|
|
569
|
-
for
|
|
674
|
+
for ipart, p in enumerate(particle_vec):
|
|
570
675
|
if p == "electron":
|
|
571
|
-
energy_vec[
|
|
676
|
+
energy_vec[ipart] = tl.energie_dep_beta2(energy_vec[ipart],v=V)
|
|
572
677
|
|
|
573
678
|
if p == "beta+":
|
|
574
|
-
energy_vec[
|
|
679
|
+
energy_vec[ipart] = tl.energie_dep_beta2(energy_vec[ipart],v=V)
|
|
575
680
|
|
|
576
681
|
if p == "gamma" or p == "XKA" or p == "XKB" or p == "XL":
|
|
577
|
-
p0 = particle_vec[
|
|
578
|
-
Ei = energy_vec[
|
|
682
|
+
p0 = particle_vec[ipart]
|
|
683
|
+
Ei = energy_vec[ipart]
|
|
579
684
|
Ed = tl.energie_dep_gamma2(Ei,v=V) # sampling energy free from photon
|
|
580
685
|
if Ei == Ed: # effet photoelectrique
|
|
581
686
|
energie_ele_emis,lacune_ph,element_ph = tl.interaction_scintillation(Ed)
|
|
582
687
|
particule_emise_ph,energie_par_emise_ph,posi_lacune_ph,par_emise_ph = tl.relaxation_atom_ph(lacune_ph,element_ph,v=V)
|
|
583
688
|
particle_vec = particle_vec + par_emise_ph
|
|
584
|
-
energy_vec_initial[
|
|
585
|
-
energy_vec[
|
|
689
|
+
energy_vec_initial[ipart]=energie_ele_emis
|
|
690
|
+
energy_vec[ipart]=energie_ele_emis # energie du photoélectron primaire
|
|
586
691
|
energy_vec_initial = energy_vec_initial + energie_par_emise_ph
|
|
587
692
|
energy_vec = energy_vec + energie_par_emise_ph
|
|
588
693
|
elif Ed == Ei - 1022: # creation de paire
|
|
589
694
|
#particle_vec[i] = 'electron'
|
|
590
695
|
E_e = (Ei-1022)/2
|
|
591
|
-
energy_vec[
|
|
696
|
+
energy_vec[ipart] = E_e#tl.energie_dep_beta2(E_e,v=V)
|
|
592
697
|
particle_vec.append("positron")
|
|
593
698
|
energy_vec.append(E_e)#tl.energie_dep_beta2(E_e,v=V))
|
|
594
699
|
else: # diffusion Compton
|
|
595
|
-
energy_vec[
|
|
596
|
-
particle_vec[
|
|
700
|
+
energy_vec[ipart]=Ed
|
|
701
|
+
particle_vec[ipart] = "electron"
|
|
597
702
|
|
|
598
703
|
if "Auger" in p:
|
|
599
|
-
particle_vec[
|
|
600
|
-
energy_vec[
|
|
704
|
+
particle_vec[ipart] = "electron"
|
|
705
|
+
energy_vec[ipart] = tl.energie_dep_beta2(energy_vec[ipart],v=V)
|
|
601
706
|
|
|
602
707
|
if Display:
|
|
603
708
|
print("\n\t INTERACTION--Prompt \n\t Summary of the energy deposited by charged particles")
|
|
604
|
-
for
|
|
605
|
-
if p[:4] != "Atom" and energy_vec[
|
|
606
|
-
if p == "gamma" or p == "XKA" or p == "XKB" or p == "XL": (f"\t\t the {p0} gives {energy_vec[
|
|
607
|
-
else: print(f"\t\t {p} of energy = {round(energy_vec[
|
|
709
|
+
for ipart, p in enumerate(particle_vec):
|
|
710
|
+
if p[:4] != "Atom" and energy_vec[ipart]!=0:
|
|
711
|
+
if p == "gamma" or p == "XKA" or p == "XKB" or p == "XL": (f"\t\t the {p0} gives {energy_vec[ipart]} keV to a recoil electron")
|
|
712
|
+
else: print(f"\t\t {p} of energy = {round(energy_vec[ipart],3)} keV")
|
|
608
713
|
|
|
609
714
|
|
|
610
715
|
if evenement!=1:
|
|
611
716
|
energy_vec_initial2 = energy_vec2.copy()
|
|
612
|
-
for
|
|
717
|
+
for ipart, p in enumerate(particle_vec2):
|
|
613
718
|
if p == "electron":
|
|
614
|
-
energy_vec2[
|
|
719
|
+
energy_vec2[ipart] = tl.energie_dep_beta2(energy_vec2[ipart],v=V)
|
|
615
720
|
|
|
616
721
|
if p == "gamma" or p == "XKA" or p == "XKB" or p == "XL":
|
|
617
|
-
p0 = particle_vec2[
|
|
618
|
-
Ei_2 = energy_vec2[
|
|
722
|
+
p0 = particle_vec2[ipart]
|
|
723
|
+
Ei_2 = energy_vec2[ipart]
|
|
619
724
|
Ed_2 = tl.energie_dep_gamma2(Ei_2,v=V) # sampling energy free from photon
|
|
620
725
|
if Ei_2 == Ed_2: # effet photon-electrique
|
|
621
726
|
energie_ele_emis2,lacune_ph2,element_ph2 = tl.interaction_scintillation(Ed_2)
|
|
622
727
|
particule_emise_ph2,energie_par_emise_ph2,posi_lacune_ph2,par_emise_ph2 = tl.relaxation_atom_ph(lacune_ph2,element_ph2,v=V)
|
|
623
|
-
energy_vec2[
|
|
624
|
-
energy_vec_initial2[
|
|
728
|
+
energy_vec2[ipart]=energie_ele_emis2
|
|
729
|
+
energy_vec_initial2[ipart]=energie_ele_emis2
|
|
625
730
|
energy_vec2 = energy_vec2 + energie_par_emise_ph2
|
|
626
731
|
energy_vec_initial2 = energy_vec_initial2 + energie_par_emise_ph2
|
|
627
732
|
particle_vec2 = particle_vec2 + par_emise_ph2
|
|
628
733
|
elif Ed_2 == Ei_2 - 1022: # creation de paire
|
|
629
|
-
#particle_vec2[
|
|
734
|
+
#particle_vec2[ipart] = 'electron'
|
|
630
735
|
E_e = (Ei_2-1022)/2
|
|
631
|
-
energy_vec2[
|
|
736
|
+
energy_vec2[ipart] = E_e#tl.energie_dep_beta2(E_e,v=V)
|
|
632
737
|
particle_vec2.append("positron")
|
|
633
738
|
energy_vec2.append(E_e)#tl.energie_dep_beta2(E_e,v=V))
|
|
634
739
|
else: # diffusion Compton
|
|
635
|
-
energy_vec2[
|
|
636
|
-
particle_vec2[
|
|
740
|
+
energy_vec2[ipart]=Ed_2
|
|
741
|
+
particle_vec2[ipart] = "electron"
|
|
637
742
|
if Display:
|
|
638
|
-
print(f"\t\t {p0} give energy {energy_vec2[
|
|
743
|
+
print(f"\t\t {p0} give energy {energy_vec2[ipart]} keV to electron")
|
|
639
744
|
|
|
640
745
|
|
|
641
746
|
if "Auger" in p:
|
|
642
|
-
particle_vec2[
|
|
643
|
-
energy_vec2[
|
|
747
|
+
particle_vec2[ipart] = "electron"
|
|
748
|
+
energy_vec2[ipart] = tl.energie_dep_beta2(energy_vec2[ipart],v=V)
|
|
644
749
|
|
|
645
750
|
if Display:
|
|
646
751
|
print("\n\t INTERACTION--Delay \n\t Summary of the energy deposited by charged particles")
|
|
647
|
-
for
|
|
648
|
-
if p[:4] != "Atom" and energy_vec2[
|
|
649
|
-
if p == "gamma" or p == "XKA" or p == "XKB" or p == "XL": (f"\t\t the {p0} gives {energy_vec2[
|
|
650
|
-
else: print(f"\t\t {p} of energy = {round(energy_vec2[
|
|
752
|
+
for ipart, p in enumerate(particle_vec2):
|
|
753
|
+
if p[:4] != "Atom" and energy_vec2[ipart]!=0:
|
|
754
|
+
if p == "gamma" or p == "XKA" or p == "XKB" or p == "XL": (f"\t\t the {p0} gives {energy_vec2[ipart]} keV to a recoil electron")
|
|
755
|
+
else: print(f"\t\t {p} of energy = {round(energy_vec2[ipart],3)} keV")
|
|
651
756
|
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
757
|
+
"""
|
|
758
|
+
==========================================================
|
|
759
|
+
III.b.1 record deposited energies in file
|
|
760
|
+
==========================================================
|
|
761
|
+
"""
|
|
762
|
+
if record:
|
|
763
|
+
with open(recfile2, "a") as file:
|
|
764
|
+
# t1w=0
|
|
765
|
+
for irec, p in enumerate(particle_vec):
|
|
766
|
+
writeOn = True
|
|
767
|
+
|
|
768
|
+
if p == "electron" or ("Auger" in p): col1 = "1"
|
|
769
|
+
elif p == "gamma" or ("X" in p): col1 = "2"
|
|
770
|
+
elif p == "beta+": col1 = "3"
|
|
771
|
+
elif p == "alpha": col1 = "4"
|
|
772
|
+
else: writeOn = False
|
|
773
|
+
|
|
774
|
+
# if ('t1' in globals()) or ('t1' in locals()): t1w+=t1
|
|
775
|
+
|
|
776
|
+
if writeOn:
|
|
777
|
+
if idec<10:
|
|
778
|
+
file.write(f"{col1} {energy_vec[irec]*1e3:.6E} {idec} 1 0\n")
|
|
779
|
+
else:
|
|
780
|
+
file.write(f"{col1} {energy_vec[irec]*1e3:.6E} {idec} 1 0\n")
|
|
781
|
+
|
|
782
|
+
if evenement != 1:
|
|
783
|
+
for irec, p in enumerate(particle_vec2):
|
|
784
|
+
writeOn = True
|
|
785
|
+
|
|
786
|
+
if p == "electron" or ("Auger" in p): col1 = "1"
|
|
787
|
+
elif p == "gamma" or ("X" in p): col1 = "2"
|
|
788
|
+
elif p == "beta+": col1 = "3"
|
|
789
|
+
elif p == "alpha": col1 = "4"
|
|
790
|
+
else: writeOn = False
|
|
791
|
+
|
|
792
|
+
# if ('t1' in globals()) or ('t1' in locals()): t1w+=t1
|
|
793
|
+
|
|
794
|
+
if writeOn:
|
|
795
|
+
if idec<10:
|
|
796
|
+
file.write(f"{col1} {energy_vec2[irec]*1e3:.6E} {idec} 1 {t1:.6E}\n")
|
|
797
|
+
else:
|
|
798
|
+
file.write(f"{col1} {energy_vec2[irec]*1e3:.6E} {idec} 1 {t1:.6E}\n")
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
'''
|
|
802
|
+
====================
|
|
803
|
+
IV. LA SCINTILLATION
|
|
804
|
+
Calculation of the scintillation quenching with the Birks Model
|
|
805
|
+
====================
|
|
806
|
+
'''
|
|
658
807
|
if Display: print(f"\n\t SCINTILLATION--Prompt \n\t\t Birks constant = {kB} cm/keV\n\t Summary of the estimation of quenched energies")
|
|
659
808
|
e_quenching=[]
|
|
660
|
-
for
|
|
809
|
+
for ipart, p in enumerate(particle_vec):
|
|
661
810
|
if p == "alpha":
|
|
662
|
-
energy_vec[
|
|
663
|
-
e_quenching.append(energy_vec[
|
|
811
|
+
energy_vec[ipart] = tl.Em_a(energy_vec[ipart],kB,nE_alpha)
|
|
812
|
+
e_quenching.append(energy_vec[ipart])
|
|
664
813
|
elif p == "electron" or p == "positron":
|
|
665
|
-
energy_vec[
|
|
666
|
-
if micCorr: energy_vec[
|
|
667
|
-
e_quenching.append(energy_vec[
|
|
814
|
+
energy_vec[ipart] = tl.Em_e(energy_vec_initial[ipart]*1e3,energy_vec[ipart]*1e3,kB*1e3,nE_electron)*1e-3
|
|
815
|
+
if micCorr: energy_vec[ipart] = energy_vec[ipart]*tl.micelleLoss(energy_vec_initial[ipart])
|
|
816
|
+
e_quenching.append(energy_vec[ipart])
|
|
668
817
|
else:
|
|
669
818
|
e_quenching.append(0)
|
|
670
819
|
if Display: print("\t\t Birks constant = ", kB, ' cm/keV')
|
|
671
820
|
if Display:
|
|
672
|
-
for
|
|
821
|
+
for ipart, p in enumerate(particle_vec):
|
|
673
822
|
#print(e_quenching[i])
|
|
674
|
-
if p[:4] != "Atom": print(f"\t\t quenched energy of {p} = ", np.round(e_quenching[
|
|
823
|
+
if p[:4] != "Atom": print(f"\t\t quenched energy of {p} = ", np.round(e_quenching[ipart],3), "keV")
|
|
675
824
|
|
|
676
825
|
if evenement!=1:
|
|
677
826
|
if Display: print(f"\n\t SCINTILLATION--Delayed \n\t\t Birks constant = {kB} cm/keV\n\t Summary of the estimation of quenched energies")
|
|
678
827
|
e_quenching2=[]
|
|
679
|
-
for
|
|
828
|
+
for ipart, p in enumerate(particle_vec2):
|
|
680
829
|
if p == "alpha":
|
|
681
|
-
energy_vec2[
|
|
682
|
-
e_quenching2.append(energy_vec2[
|
|
830
|
+
energy_vec2[ipart] = tl.Em_a(energy_vec2[ipart],kB,nE_alpha)
|
|
831
|
+
e_quenching2.append(energy_vec2[ipart])
|
|
683
832
|
elif p == "electron" or p == "positron":
|
|
684
|
-
energy_vec2[
|
|
685
|
-
if micCorr: energy_vec2[
|
|
686
|
-
e_quenching2.append(energy_vec2[
|
|
833
|
+
energy_vec2[ipart] = tl.Em_e(energy_vec_initial2[ipart]*1e3,energy_vec2[ipart]*1e3,kB*1e3,nE_electron)*1e-3
|
|
834
|
+
if micCorr: energy_vec2[ipart] = energy_vec2[ipart]*tl.micelleLoss(energy_vec_initial2[ipart])
|
|
835
|
+
e_quenching2.append(energy_vec2[ipart])
|
|
687
836
|
else:
|
|
688
837
|
e_quenching2.append(0)
|
|
689
838
|
if Display:
|
|
690
|
-
for
|
|
691
|
-
if p[:4] != "Atom": print(f"\t\t quenched energy of {p} = ", round(e_quenching2[
|
|
839
|
+
for ipart, p in enumerate(particle_vec2):
|
|
840
|
+
if p[:4] != "Atom": print(f"\t\t quenched energy of {p} = ", round(e_quenching2[ipart],3), "keV")
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
"""
|
|
844
|
+
==========================================================
|
|
845
|
+
IV.1 record deposited quenched energies in file
|
|
846
|
+
==========================================================
|
|
847
|
+
"""
|
|
848
|
+
if record:
|
|
849
|
+
with open(recfile3, "a") as file:
|
|
850
|
+
# t1w=0
|
|
851
|
+
for irec, p in enumerate(particle_vec):
|
|
852
|
+
writeOn = True
|
|
853
|
+
|
|
854
|
+
if p == "electron" or ("Auger" in p): col1 = "1"
|
|
855
|
+
elif p == "gamma" or ("X" in p): col1 = "2"
|
|
856
|
+
elif p == "beta+": col1 = "3"
|
|
857
|
+
elif p == "alpha": col1 = "4"
|
|
858
|
+
else: writeOn = False
|
|
859
|
+
|
|
860
|
+
# if ('t1' in globals()) or ('t1' in locals()): t1w+=t1
|
|
861
|
+
|
|
862
|
+
if writeOn:
|
|
863
|
+
if idec<10:
|
|
864
|
+
file.write(f"{col1} {e_quenching[irec]*1e3:.6E} {idec} 1 0\n")
|
|
865
|
+
else:
|
|
866
|
+
file.write(f"{col1} {e_quenching[irec]*1e3:.6E} {idec} 1 0\n")
|
|
867
|
+
|
|
868
|
+
if evenement != 1:
|
|
869
|
+
for irec, p in enumerate(particle_vec2):
|
|
870
|
+
writeOn = True
|
|
871
|
+
|
|
872
|
+
if p == "electron" or ("Auger" in p): col1 = "1"
|
|
873
|
+
elif p == "gamma" or ("X" in p): col1 = "2"
|
|
874
|
+
elif p == "beta+": col1 = "3"
|
|
875
|
+
elif p == "alpha": col1 = "4"
|
|
876
|
+
else: writeOn = False
|
|
877
|
+
|
|
878
|
+
# if ('t1' in globals()) or ('t1' in locals()): t1w+=t1
|
|
879
|
+
|
|
880
|
+
if writeOn:
|
|
881
|
+
if idec<10:
|
|
882
|
+
file.write(f"{col1} {e_quenching2[irec]*1e3:.6E} {idec} 1 {t1:.6E}\n")
|
|
883
|
+
else:
|
|
884
|
+
file.write(f"{col1} {e_quenching2[irec]*1e3:.6E} {idec} 1 {t1:.6E}\n")
|
|
885
|
+
|
|
886
|
+
|
|
692
887
|
|
|
693
888
|
'''
|
|
694
889
|
====================
|
|
@@ -704,6 +899,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
704
899
|
efficiency_S.append(1-p_nosingle**3+1-p_nosingle2**3)
|
|
705
900
|
efficiency_T.append(p_single**3+p_single2**3)
|
|
706
901
|
efficiency_D.append(3*(p_single)**2-2*p_single**3+(3*(p_single2)**2-2*p_single2**3))
|
|
902
|
+
efficiency_D2.append(p_single**2+p_single2**2)
|
|
707
903
|
if Display: print(f"\n\t COUNTING--Sym \n\t\t Free parameter = {L} keV-1 \n\t Summary of TDCR measurement (prompt)")
|
|
708
904
|
if Display: print("\t\t Free parameter = ", L, "keV-1")
|
|
709
905
|
if Display: print("\t\t Efficiency of single events = ", round(1-p_nosingle**3,5))
|
|
@@ -723,6 +919,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
723
919
|
efficiency_S.append(1-p_nosingle**3)
|
|
724
920
|
efficiency_T.append(p_single**3)
|
|
725
921
|
efficiency_D.append(3*(p_single)**2-2*efficiency_T[-1])
|
|
922
|
+
efficiency_D2.append(p_single**2)
|
|
726
923
|
if Display: print(f"\n\t COUNTING--Sym \n\t\t Free parameter = {L} keV-1 \n\t Summary of TDCR measurement (prompt)")
|
|
727
924
|
if Display: print("\t\t Efficiency of single events = ", round(efficiency_S[-1],5))
|
|
728
925
|
if Display: print("\t\t Efficiency of double events = ", round(efficiency_D[-1],5))
|
|
@@ -744,6 +941,8 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
744
941
|
pC_nosingle2 = np.exp(-L[2]*np.sum(np.asarray(e_quenching2))/3) # probability to have 0 electrons in a PMT
|
|
745
942
|
pC_single2 = 1-pC_nosingle2 # probability to have at least 1 electrons in a PMT
|
|
746
943
|
|
|
944
|
+
efficiency_A2.append(pA_single+pA_single2)
|
|
945
|
+
efficiency_B2.append(pB_single+pB_single2)
|
|
747
946
|
efficiency_AB.append(pA_single*pB_single+pA_single2*pB_single2)
|
|
748
947
|
efficiency_BC.append(pB_single*pC_single+pB_single2*pC_single2)
|
|
749
948
|
efficiency_AC.append(pA_single*pC_single+pA_single2*pC_single2)
|
|
@@ -751,6 +950,9 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
751
950
|
efficiency_D.append(pA_single*pB_single+pB_single*pC_single+pA_single*pC_single-2*pA_single*pB_single*pC_single+(pA_single2*pB_single2+pB_single2*pC_single2+pA_single2*pC_single2-2*pA_single2*pB_single2*pC_single2))
|
|
752
951
|
#efficiency_S.append(pA_single+pB_single+pC_single-pA_single*pB_single+pB_single*pC_single+pA_single*pC_single-2*pA_single*pB_single*pC_single-pA_single*pB_single*pC_single+(pA_single2+pB_single2+pC_single2-pA_single2*pB_single2+pB_single2*pC_single2+pA_single2*pC_single2-2*pA_single2*pB_single2*pC_single2-pA_single2*pB_single2*pC_single2))
|
|
753
952
|
efficiency_S.append(1-pA_nosingle*pB_nosingle*pC_nosingle+1-pA_nosingle2*pB_nosingle2*pC_nosingle2)
|
|
953
|
+
efficiency_D2.append(pA_single*pB_single+pA_single2*pB_single2)
|
|
954
|
+
|
|
955
|
+
|
|
754
956
|
|
|
755
957
|
if Display: print(f"\n\t COUNTING--Asym \n\t\t Free parameters (A,B,C) = {L[0]},{L[1]},{L[2]} keV-1 \n\t Summary of TDCR measurement (prompt)")
|
|
756
958
|
#if Display: print("\t Summary of TDCR measurement (prompt)")
|
|
@@ -769,12 +971,15 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
769
971
|
pC_nosingle = np.exp(-L[2]*np.sum(np.asarray(e_quenching))/3) # probability to have 0 electrons in a PMT
|
|
770
972
|
pC_single = 1-pC_nosingle # probability to have at least 1 electrons in a PMT
|
|
771
973
|
|
|
974
|
+
efficiency_A2.append(pA_single)
|
|
975
|
+
efficiency_B2.append(pB_single)
|
|
772
976
|
efficiency_AB.append(pA_single*pB_single)
|
|
773
977
|
efficiency_BC.append(pB_single*pC_single)
|
|
774
978
|
efficiency_AC.append(pA_single*pC_single)
|
|
775
979
|
efficiency_T.append(pA_single*pB_single*pC_single)
|
|
776
980
|
efficiency_D.append(efficiency_AB[-1]+efficiency_BC[-1]+efficiency_AC[-1]-2*efficiency_T[-1])
|
|
777
981
|
efficiency_S.append(1-pA_nosingle*pB_nosingle*pC_nosingle)
|
|
982
|
+
efficiency_D2.append(pA_single*pB_single)
|
|
778
983
|
if Display: print(f"\n\t COUNTING--Asym \n\t\t Free parameters (A,B,C) = {L[0]},{L[1]},{L[2]} keV-1 \n\t Summary of TDCR measurement (prompt)")
|
|
779
984
|
if Display: print("\t\t Free parameter PMT A: ", L[0], "keV-1")
|
|
780
985
|
if Display: print("\t\t Free parameter PMT B: ", L[1], "keV-1")
|
|
@@ -783,7 +988,19 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
783
988
|
if Display: print("\t\t Efficiency of double events: ", round(efficiency_D[-1],5))
|
|
784
989
|
if Display: print("\t\t Efficiency of triple events: ", round(efficiency_T[-1],5))
|
|
785
990
|
|
|
786
|
-
|
|
991
|
+
"""
|
|
992
|
+
==========================================================
|
|
993
|
+
V.1 record detection probabilities in file
|
|
994
|
+
==========================================================
|
|
995
|
+
"""
|
|
996
|
+
if record:
|
|
997
|
+
with open(recfile4, "a") as file:
|
|
998
|
+
print(idec)
|
|
999
|
+
if mode2=="sym":
|
|
1000
|
+
file.write(f"{idec} {efficiency_S[-1]} {efficiency_D[-1]} {efficiency_T[-1]}\n")
|
|
1001
|
+
elif mode2=="asym":
|
|
1002
|
+
file.write(f"{idec} {efficiency_S[-1]} {efficiency_D[-1]} {efficiency_T[-1]} {efficiency_AB[-1]} {efficiency_BC[-1]} {efficiency_AC[-1]}\n")
|
|
1003
|
+
|
|
787
1004
|
'''
|
|
788
1005
|
====================
|
|
789
1006
|
VI. CALCULATION OF THE FINAL ESTIMATORS
|
|
@@ -795,6 +1012,9 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
795
1012
|
mean_efficiency_D = np.mean(efficiency_D)
|
|
796
1013
|
std_efficiency_D = np.std(efficiency_D)/np.sqrt(N)
|
|
797
1014
|
std_efficiency_D = np.sqrt(std_efficiency_D**2+1e-8)
|
|
1015
|
+
mean_efficiency_D2 = np.mean(efficiency_D2)
|
|
1016
|
+
std_efficiency_D2 = np.std(efficiency_D2)/np.sqrt(N)
|
|
1017
|
+
std_efficiency_D2 = np.sqrt(std_efficiency_D2**2+1e-8)
|
|
798
1018
|
mean_efficiency_S = np.mean(efficiency_S)
|
|
799
1019
|
std_efficiency_S = np.std(efficiency_S)/np.sqrt(N)
|
|
800
1020
|
std_efficiency_S = np.sqrt(std_efficiency_S**2+1e-8)
|
|
@@ -823,11 +1043,17 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
823
1043
|
if mode == "eff":
|
|
824
1044
|
if N<200:
|
|
825
1045
|
print("Warning. too low number of MC trials - inaccurate estimation")
|
|
826
|
-
|
|
1046
|
+
if syst == "TDCR":
|
|
1047
|
+
return mean_efficiency_S, 1, mean_efficiency_D, 1, mean_efficiency_T, 1
|
|
1048
|
+
elif syst =="CN":
|
|
1049
|
+
return mean_efficiency_D2, 1
|
|
827
1050
|
else:
|
|
828
|
-
|
|
1051
|
+
if syst == "TDCR":
|
|
1052
|
+
return mean_efficiency_S, std_efficiency_S, mean_efficiency_D, std_efficiency_D, mean_efficiency_T, std_efficiency_T
|
|
1053
|
+
elif syst =="CN":
|
|
1054
|
+
return mean_efficiency_D2, std_efficiency_D2
|
|
829
1055
|
if mode =="dis":
|
|
830
|
-
return efficiency_S, efficiency_D, efficiency_T
|
|
1056
|
+
return efficiency_S, efficiency_D, efficiency_T, efficiency_D2
|
|
831
1057
|
|
|
832
1058
|
# L = 1
|
|
833
1059
|
# TD = 0.977667386529166
|
|
@@ -851,7 +1077,7 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
851
1077
|
# TAB = 0.992232838598821
|
|
852
1078
|
# TBC = 0.992343419459002
|
|
853
1079
|
# TAC = 0.99275350064608
|
|
854
|
-
# Rad="
|
|
1080
|
+
# Rad="Lu-177"
|
|
855
1081
|
# pmf_1="1"
|
|
856
1082
|
# N = 1000
|
|
857
1083
|
# kB =1.0e-5
|
|
@@ -863,3 +1089,5 @@ def TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, V, mode, mode2, Display=Fals
|
|
|
863
1089
|
# print("TDCR", out[4]/out[2])
|
|
864
1090
|
# print("Eff D", out[2])
|
|
865
1091
|
|
|
1092
|
+
|
|
1093
|
+
# out = TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, 20, kB, V, mode, mode2, Display=True, barp=False, Smodel=True, syst = "TDCR", record = "phf1", uncData=False)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# TDCRPy output: inital energies from nuclear decays
|
|
2
|
+
# Column 1: KPAR (1=electron, 2=photon, 3=positron, 4=alpha)
|
|
3
|
+
# Column 2: Energy in eV (> ECNUC)
|
|
4
|
+
# Column 3: Decay number mod 100, two digits
|
|
5
|
+
# Column 4: Cascade number mod 10, one digit
|
|
6
|
+
# Column 5: Particle age in seconds (since decay started)
|
|
7
|
+
# 2 3 4 5
|
|
8
|
+
1 8.900000E+04 0 1 0
|
|
9
|
+
1 3.620000E+05 1 1 0
|
|
10
|
+
1 1.210000E+05 2 1 0
|
|
11
|
+
1 3.000000E+03 3 1 0
|
|
12
|
+
2 2.083662E+05 3 1 0
|
|
13
|
+
1 4.759900E+04 3 1 0
|
|
14
|
+
2 5.579090E+04 3 1 0
|
|
15
|
+
1 7.750000E+03 3 1 0
|
|
16
|
+
1 6.100000E+04 4 1 0
|
|
17
|
+
2 2.083662E+05 4 1 0
|
|
18
|
+
1 1.024262E+05 4 1 0
|
|
19
|
+
1 7.750000E+03 4 1 0
|
|
20
|
+
1 2.350000E+05 5 1 0
|
|
21
|
+
1 2.280000E+05 6 1 0
|
|
22
|
+
1 1.800000E+05 7 1 0
|
|
23
|
+
1 3.150000E+05 8 1 0
|
|
24
|
+
1 4.200000E+04 9 1 0
|
|
25
|
+
1 6.000000E+03 10 1 0
|
|
26
|
+
1 1.010000E+05 11 1 0
|
|
27
|
+
1 6.100000E+04 12 1 0
|
|
28
|
+
1 3.230000E+05 13 1 0
|
|
29
|
+
1 1.220000E+05 14 1 0
|
|
30
|
+
1 4.400000E+04 15 1 0
|
|
31
|
+
2 2.083662E+05 15 1 0
|
|
32
|
+
1 1.024262E+05 15 1 0
|
|
33
|
+
1 7.750000E+03 15 1 0
|
|
34
|
+
1 4.700000E+04 16 1 0
|
|
35
|
+
1 3.400000E+04 17 1 0
|
|
36
|
+
1 9.900000E+04 18 1 0
|
|
37
|
+
1 8.500000E+04 19 1 0
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# TDCRPy output: deposited energies from nuclear decays
|
|
2
|
+
# Column 1: KPAR (1=electron, 2=photon, 3=positron, 4=alpha)
|
|
3
|
+
# Column 2: Energy in eV (> ECNUC)
|
|
4
|
+
# Column 3: Decay number mod 100, two digits
|
|
5
|
+
# Column 4: Cascade number mod 10, one digit
|
|
6
|
+
# Column 5: Particle age in seconds (since decay started)
|
|
7
|
+
# 2 3 4 5
|
|
8
|
+
1 8.900000E+04 0 1 0
|
|
9
|
+
1 3.620000E+05 1 1 0
|
|
10
|
+
1 1.210000E+05 2 1 0
|
|
11
|
+
1 3.000000E+03 3 1 0
|
|
12
|
+
1 0.000000E+00 3 1 0
|
|
13
|
+
1 4.759900E+04 3 1 0
|
|
14
|
+
1 1.283191E+04 3 1 0
|
|
15
|
+
1 7.750000E+03 3 1 0
|
|
16
|
+
1 6.100000E+04 4 1 0
|
|
17
|
+
1 0.000000E+00 4 1 0
|
|
18
|
+
1 1.024262E+05 4 1 0
|
|
19
|
+
1 7.750000E+03 4 1 0
|
|
20
|
+
1 2.350000E+05 5 1 0
|
|
21
|
+
1 2.280000E+05 6 1 0
|
|
22
|
+
1 1.800000E+05 7 1 0
|
|
23
|
+
1 2.125648E+05 8 1 0
|
|
24
|
+
1 4.200000E+04 9 1 0
|
|
25
|
+
1 6.000000E+03 10 1 0
|
|
26
|
+
1 1.010000E+05 11 1 0
|
|
27
|
+
1 6.100000E+04 12 1 0
|
|
28
|
+
1 3.230000E+05 13 1 0
|
|
29
|
+
1 1.220000E+05 14 1 0
|
|
30
|
+
1 4.400000E+04 15 1 0
|
|
31
|
+
1 0.000000E+00 15 1 0
|
|
32
|
+
1 1.024262E+05 15 1 0
|
|
33
|
+
1 7.750000E+03 15 1 0
|
|
34
|
+
1 4.700000E+04 16 1 0
|
|
35
|
+
1 3.400000E+04 17 1 0
|
|
36
|
+
1 9.900000E+04 18 1 0
|
|
37
|
+
1 8.500000E+04 19 1 0
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# TDCRPy output: deposited quenched energies from nuclear decays
|
|
2
|
+
# Column 1: KPAR (1=electron, 2=photon, 3=positron, 4=alpha)
|
|
3
|
+
# Column 2: Energy in eV (> ECNUC)
|
|
4
|
+
# Column 3: Decay number mod 100, two digits
|
|
5
|
+
# Column 4: Cascade number mod 10, one digit
|
|
6
|
+
# Column 5: Particle age in seconds (since decay started)
|
|
7
|
+
# 2 3 4 5
|
|
8
|
+
1 7.256485E+04 0 1 0
|
|
9
|
+
1 3.126531E+05 1 1 0
|
|
10
|
+
1 1.004394E+05 2 1 0
|
|
11
|
+
1 1.350593E+03 3 1 0
|
|
12
|
+
1 0.000000E+00 3 1 0
|
|
13
|
+
1 3.690230E+04 3 1 0
|
|
14
|
+
1 1.095075E+04 3 1 0
|
|
15
|
+
1 4.466165E+03 3 1 0
|
|
16
|
+
1 4.836887E+04 4 1 0
|
|
17
|
+
1 0.000000E+00 4 1 0
|
|
18
|
+
1 8.423896E+04 4 1 0
|
|
19
|
+
1 4.466165E+03 4 1 0
|
|
20
|
+
1 2.005481E+05 5 1 0
|
|
21
|
+
1 1.943812E+05 6 1 0
|
|
22
|
+
1 1.521483E+05 7 1 0
|
|
23
|
+
1 1.870476E+05 8 1 0
|
|
24
|
+
1 3.214612E+04 9 1 0
|
|
25
|
+
1 3.252983E+03 10 1 0
|
|
26
|
+
1 8.299727E+04 11 1 0
|
|
27
|
+
1 4.836887E+04 12 1 0
|
|
28
|
+
1 2.781928E+05 13 1 0
|
|
29
|
+
1 1.013130E+05 14 1 0
|
|
30
|
+
1 3.384221E+04 15 1 0
|
|
31
|
+
1 0.000000E+00 15 1 0
|
|
32
|
+
1 8.423896E+04 15 1 0
|
|
33
|
+
1 4.466165E+03 15 1 0
|
|
34
|
+
1 3.639232E+04 16 1 0
|
|
35
|
+
1 2.540040E+04 17 1 0
|
|
36
|
+
1 8.125656E+04 18 1 0
|
|
37
|
+
1 6.909427E+04 19 1 0
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# TDCRPy output: detection probabilities
|
|
2
|
+
# Column 1: Decay number mod 100, two digits
|
|
3
|
+
# Column 2: detection probability of single events
|
|
4
|
+
# Column 3: detection probability if double coincidences
|
|
5
|
+
# Column 4: detection probability if triple coincidences
|
|
6
|
+
# 2 3 4
|
|
7
|
+
0 1.0 0.9999999999999998 0.9999999999061827
|
|
8
|
+
1 1.0 1.0 1.0
|
|
9
|
+
2 1.0 1.0 0.9999999999999913
|
|
10
|
+
3 1.0 0.9999999999999991 0.999999948994126
|
|
11
|
+
4 1.0 1.0 1.0
|
|
12
|
+
5 1.0 1.0 1.0
|
|
13
|
+
6 1.0 1.0 1.0
|
|
14
|
+
7 1.0 1.0 1.0
|
|
15
|
+
8 1.0 1.0 1.0
|
|
16
|
+
9 0.999999999999989 0.9999999985213657 0.9999333984161588
|
|
17
|
+
10 0.9613412941994496 0.7343237230821587 0.2899479433902926
|
|
18
|
+
11 1.0 1.0 0.9999999999971023
|
|
19
|
+
12 1.0 0.99999999999997 0.999999701455034
|
|
20
|
+
13 1.0 1.0 1.0
|
|
21
|
+
14 1.0 1.0000000000000002 0.9999999999999937
|
|
22
|
+
15 1.0 1.0 1.0
|
|
23
|
+
16 0.9999999999999999 0.9999999999128106 0.99998382697656
|
|
24
|
+
17 0.9999999999906943 0.9999998672938257 0.9993691221325874
|
|
25
|
+
18 1.0 1.0 0.9999999999948235
|
|
26
|
+
19 1.0 1.0 0.9999999997016666
|
|
File without changes
|
|
File without changes
|
|
File without changes
|