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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: TDCRPy
3
- Version: 1.12.11
3
+ Version: 1.12.13
4
4
  Summary: TDCR model
5
5
  Home-page: https://pypi.org/project/TDCRPy/
6
6
  Author: RomainCoulon (Romain Coulon)
@@ -1,4 +1,4 @@
1
- tdcrpy/TDCRPy.py,sha256=BF5D-SXuYJvmpZ4WzGao1rktNkM6Udn6Tj3QB62XPnA,54209
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.11.dist-info/LICENCE.md,sha256=ZTpWyGU3qv_iwEpgvCijoCuCYpOPpyzJCgOk46WpUKU,1066
1085
- TDCRPy-1.12.11.dist-info/METADATA,sha256=ehz0XowQstuLX8J7AuXro9VcGc8C-5GOa-in_3YEhwg,15833
1086
- TDCRPy-1.12.11.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
1087
- TDCRPy-1.12.11.dist-info/top_level.txt,sha256=f4vzFFcKSEnonAACs0ZXuRczmroLLqtPTqXFymU_VU0,14
1088
- TDCRPy-1.12.11.dist-info/RECORD,,
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 i in NN: # Main Loop - Monte Carlo trials
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(i+1),"- Sampled radionuclide: ", rad_i)
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 i, p in enumerate(particle_vec):
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[i]}, keV')
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[i],3)} keV")
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 i, p in enumerate(particle_vec2):
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[i]}, keV')
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[i],3)} keV")
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 i, p in enumerate(particle_vec):
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[i] = "electron"
548
- energy_vec[i] = e_b[index_beta_energy]
549
- if Display: print(f"\t\t emitted {p} of energy = {round(energy_vec[i],3)} keV")
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[i] = "positron"
555
- energy_vec[i] = e_b[index_beta_energy]
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[i],3)} keV")
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 i, p in enumerate(particle_vec):
674
+ for ipart, p in enumerate(particle_vec):
570
675
  if p == "electron":
571
- energy_vec[i] = tl.energie_dep_beta2(energy_vec[i],v=V)
676
+ energy_vec[ipart] = tl.energie_dep_beta2(energy_vec[ipart],v=V)
572
677
 
573
678
  if p == "beta+":
574
- energy_vec[i] = tl.energie_dep_beta2(energy_vec[i],v=V)
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[i]
578
- Ei = energy_vec[i]
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[i]=energie_ele_emis
585
- energy_vec[i]=energie_ele_emis # energie du photoélectron primaire
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[i] = E_e#tl.energie_dep_beta2(E_e,v=V)
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[i]=Ed
596
- particle_vec[i] = "electron"
700
+ energy_vec[ipart]=Ed
701
+ particle_vec[ipart] = "electron"
597
702
 
598
703
  if "Auger" in p:
599
- particle_vec[i] = "electron"
600
- energy_vec[i] = tl.energie_dep_beta2(energy_vec[i],v=V)
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 i, p in enumerate(particle_vec):
605
- if p[:4] != "Atom" and energy_vec[i]!=0:
606
- if p == "gamma" or p == "XKA" or p == "XKB" or p == "XL": (f"\t\t the {p0} gives {energy_vec[i]} keV to a recoil electron")
607
- else: print(f"\t\t {p} of energy = {round(energy_vec[i],3)} keV")
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 i, p in enumerate(particle_vec2):
717
+ for ipart, p in enumerate(particle_vec2):
613
718
  if p == "electron":
614
- energy_vec2[i] = tl.energie_dep_beta2(energy_vec2[i],v=V)
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[i]
618
- Ei_2 = energy_vec2[i]
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[i]=energie_ele_emis2
624
- energy_vec_initial2[i]=energie_ele_emis2
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[i] = 'electron'
734
+ #particle_vec2[ipart] = 'electron'
630
735
  E_e = (Ei_2-1022)/2
631
- energy_vec2[i] = E_e#tl.energie_dep_beta2(E_e,v=V)
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[i]=Ed_2
636
- particle_vec2[i] = "electron"
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[i]} keV to electron")
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[i] = "electron"
643
- energy_vec2[i] = tl.energie_dep_beta2(energy_vec2[i],v=V)
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 i, p in enumerate(particle_vec2):
648
- if p[:4] != "Atom" and energy_vec2[i]!=0:
649
- if p == "gamma" or p == "XKA" or p == "XKB" or p == "XL": (f"\t\t the {p0} gives {energy_vec2[i]} keV to a recoil electron")
650
- else: print(f"\t\t {p} of energy = {round(energy_vec2[i],3)} keV")
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
- IV. LA SCINTILLATION
655
- Calculation of the scintillation quenching with the Birks Model
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 i, p in enumerate(particle_vec):
809
+ for ipart, p in enumerate(particle_vec):
661
810
  if p == "alpha":
662
- energy_vec[i] = tl.Em_a(energy_vec[i],kB,nE_alpha)
663
- e_quenching.append(energy_vec[i])
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[i] = tl.Em_e(energy_vec_initial[i]*1e3,energy_vec[i]*1e3,kB*1e3,nE_electron)*1e-3
666
- if micCorr: energy_vec[i] = energy_vec[i]*tl.micelleLoss(energy_vec_initial[i])
667
- e_quenching.append(energy_vec[i])
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 i, p in enumerate(particle_vec):
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[i],3), "keV")
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 i, p in enumerate(particle_vec2):
828
+ for ipart, p in enumerate(particle_vec2):
680
829
  if p == "alpha":
681
- energy_vec2[i] = tl.Em_a(energy_vec2[i],kB,nE_alpha)
682
- e_quenching2.append(energy_vec2[i])
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[i] = tl.Em_e(energy_vec_initial2[i]*1e3,energy_vec2[i]*1e3,kB*1e3,nE_electron)*1e-3
685
- if micCorr: energy_vec2[i] = energy_vec2[i]*tl.micelleLoss(energy_vec_initial2[i])
686
- e_quenching2.append(energy_vec2[i])
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 i, p in enumerate(particle_vec2):
691
- if p[:4] != "Atom": print(f"\t\t quenched energy of {p} = ", round(e_quenching2[i],3), "keV")
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
- return mean_efficiency_S, 1, mean_efficiency_D, 1, mean_efficiency_T, 1
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
- return mean_efficiency_S, std_efficiency_S, mean_efficiency_D, std_efficiency_D, mean_efficiency_T, std_efficiency_T
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="Fe-55"
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