diff --git a/AdditionalPDFs.py b/AdditionalPDFs.py
index ba373ef5f12ab231928fc7016ec4dff5b553fc52..2934d4c22f3f5e9b9d77c92d44216b9c2be0f08b 100644
--- a/AdditionalPDFs.py
+++ b/AdditionalPDFs.py
@@ -5,7 +5,7 @@ import matplotlib.pyplot as plt
 
 
 from scipy.stats._distn_infrastructure import (
-        rv_discrete, get_distribution_names)
+        rv_discrete, _ncx2_pdf, _ncx2_cdf, get_distribution_names)
 
 
 class gpd_gen(rv_discrete):
diff --git a/Example.png b/Example.png
index f38ff251b7ccdf5cc52ea4ee48c05303f3f70091..f6e165d7f9a83aeb4e4875c1243cb9c9d6fc1f98 100644
Binary files a/Example.png and b/Example.png differ
diff --git a/Example.py b/Example.py
index 8e6ce5c72b5e38f72347701193fb85a55c583f87..69f0d7ca4f5ded82f809c259eeaa8b3b6952c384 100644
--- a/Example.py
+++ b/Example.py
@@ -9,38 +9,38 @@ import numpy as np
 #################################
 
 variables={
-"Name_Sim":[0],             #THIS CAN BE ANYTHING YOU LIKE
-"mu":[7],                   #MEAN NUMBER OF GEIGER DISCHARGES
-"ppXT":[0.0],               #PROBABILITY OF PROMPT CROSS-TALK 
-"pdXT":[0.2],               #PROBABILITY OF DELAYED CROSS-TALK
-"taudXT":[25],              #TIME CONSTANT FOR DELAYED CROSS-TALK (NS)
-"rdXT":[0.5],               #FRACTION OF DELAYED CROSS-TALK FROM ADJACENT CELLS
-"pAp":[0.15],               #PROBABILITY OF AFTERPULSE
-"tauAp":[7.5],              #TIME CONSTANT OF AFTERPULSE
-"taur":[20],                #SIPM RECOVERY TIME CONSTANT
-"Sig0":[0.075],             #WIDTH OF PEDESTAL [NORMALISED ADC]
-"Sig1":[0.02],              #INCREASE IN PEAK WIDTH PER ADDITIONAL DISCHARGE [NORMALISED ADC]
-"DCR":[0.0],                #DARK COUNT RATE [GHZ]
-"Sigt":[0.02],              #ELECTRONICS NOISE FOR CURRENT TRANSIENT (FOR TRANSIENT)
-"GSig":[0.75],              #WIDTH OF ELECTRONICS NOISE TRANSFER FUNCTION (FOR TRANSIENT)
-"tslow":[20],               #TIME CONSTANT FOR SLOW PART OF PULSE
-"tfast":[1.5],              #TIME CONSTANT FOR FAST PART OF PULSE
-"rfast":[0.2],              #PROPORTION OF SLOW/FAST
-"start_tgate":[-5],         #GATE START TIME [NS]
-"len_tgate":[100],          #LENGTH OF GATE
-"t0":[100,],                #STARTING POINT OF GATE
-"tl0":[0],                  #GAUSSIAN MEAN OF PRIMARY GEIGER DICHARGE TIME DISTRIBUTION
-"tl1":[0.1],                #GAUSSIAN WIDTH OF PRIMARY GEIGER DICHARGE TIME DISTRIBUTION
-"tl2":[0],                  #FREE PARAMETER
-"Gen_mu":["Poisson"],       #NUMBER PRIMARY GEIGER DISCHARGE PDF
-"Gen_tmu":["Gauss"],        #TIME OF PRIMARY GEIGER DISCHARGE PDF
-"Gen_gain":["Gauss"],       #GAIN PDF (FOR TRANSIENT)
-"Gen_npXT":["Binomial"],    #NUMBER PROMPT X-TALK DISCHARGE DISTRIBUTION
-"Gen_ndXT":["Binomial"],    #NUMBER PROMPT X-TALK DISCHARGE DISTRIBUTION
-"Gen_tdXT":["Exp"],         #TIME DELAYED X-TALK DISTRIBUTION
-"Gen_nAP":["Binom"],        #NUMBER AFTER DISTRIBUTION
-"Gen_tAP":["Exp"],          #AFTERPULSE TIME DISTRIBUTION
-"Gen_noise":["Gauss"]       #ELECTRONIC NOISE DISTRIBUTION (FOR TRANSIENT)
+"Name_Sim":[0], #THIS CAN BE ANYTHING YOU LIKE
+"mu":[7], # MEAN NUMBER OF GEIGER DISCHARGES
+"ppXT":[0.0], # PROBABILITY OF PROMPT CROSS-TALK 
+"pdXT":[0.2], #PROBABILITY OF DELAYED CROSS-TALK
+"taudXT":[25], #TIME CONSTANT FOR DELAYED CROSS-TALK (NS)
+"rdXT":[0.5], #FRACTION OF DELAYED CROSS-TALK FROM ADJACENT CELLS
+"pAp":[0.15], #PROBABILITY OF AFTERPULSE
+"tauAp":[7.5], #TIME CONSTANT OF AFTERPULSE
+"taur":[20], # SIPM RECOVERY TIME CONSTANT
+"Sig0":[0.075], #WIDTH OF PEDESTAL [NORMALISED ADC]
+"Sig1":[0.02], # INCREASE IN PEAK WIDTH PER ADDITIONAL DISCHARGE [NORMALISED ADC]
+"DCR":[0.0], # DARK COUNT RATE [GHZ]
+"Sigt":[0.02], # ELECTRONICS NOISE FOR CURRENT TRANSIENT (FOR TRANSIENT)
+"GSig":[0.75], # WIDTH OF ELECTRONICS NOISE TRANSFER FUNCTION (FOR TRANSIENT)
+"tslow":[20], # TIME CONSTANT FOR SLOW PART OF PULSE
+"tfast":[1.5], # TIME CONSTANT FOR FAST PART OF PULSE
+"rfast":[0.2], # PROPORTION OF SLOW/FAST
+"start_tgate":[-5], # GATE START TIME [NS]
+"len_tgate":[100], # LENGTH OF GATE
+"t0":[100,], # STARTING POINT OF GATE
+"tl0":[0], #GAUSSIAN MEAN OF PRIMARY GEIGER DICHARGE TIME DISTRIBUTION
+"tl1":[0.1], #GAUSSIAN WIDTH OF PRIMARY GEIGER DICHARGE TIME DISTRIBUTION
+"tl2":[0], #FREE PARAMETER
+"Gen_mu":["Poisson"], # NUMBER PRIMARY GEIGER DISCHARGE PDF
+"Gen_tmu":["Gauss"], # TIME OF PRIMARY GEIGER DISCHARGE PDF
+"Gen_gain":["Gauss"],  # GAIN PDF (FOR TRANSIENT)
+"Gen_npXT":["Binomial"], #NUMBER PROMPT X-TALK DISCHARGE DISTRIBUTION
+"Gen_ndXT":["Binomial"],  #NUMBER PROMPT X-TALK DISCHARGE DISTRIBUTION
+"Gen_tdXT":["Exp"], #TIME DELAYED X-TALK DISTRIBUTION
+"Gen_nAP":["Binom"],  #NUMBER AFTER DISTRIBUTION
+"Gen_tAP":["Exp"],  #AFTERPULSE TIME DISTRIBUTION
+"Gen_noise":["Gauss"] #ELECTRONIC NOISE DISTRIBUTION (FOR TRANSIENT)
 }
 
 #################################
@@ -55,7 +55,7 @@ s = SiPMSimulation()
 
 s.AddVariables(variables)
 
-n_events = int(1e2)
+n_events = int(1e5)
 
 
 #################################
diff --git a/LightSimtastic.py b/LightSimtastic.py
index 1808e678c5c52d7dc8fa6ee5743caf04f179e9f2..c09d042a8136e452a3d0e5cf0e3dabc6f6bef2cd 100644
--- a/LightSimtastic.py
+++ b/LightSimtastic.py
@@ -250,7 +250,7 @@ class SiPMSimulation:
                 line = _RemoveNonAscii(line)
                 elems = line.replace('"', "").split(",")
                 elems = _ToFloats(elems)
-                t0 = 0                  #ns
+                
                 if elems[0] in self.VariableDictionary:
                     variables[elems[0]] = elems[1::]
         
@@ -304,7 +304,18 @@ class SiPMSimulation:
         partialSum = 0
         for _i in dXT_n:
             temp = []
-            for _ii in _i:t0 = 0                  #ns
+            for _ii in _i:
+                temp.append(dXT_nt[partialSum:partialSum+_ii])
+                partialSum += _ii
+            output.append(temp)
+        return output
+
+
+    
+    def AllGeiger(self, ns):
+        
+        pbar = tqdm(range(len(self.pb_ag_text)-1))
+        pbar.set_description("{0}".format(self.pb_ag_text[0]))
         
         nlight = np.asarray(ns.dist_flight.rvs(size=ns.n_sim))
         nDC = np.asarray(ns.dist_fDC.rvs(size=ns.n_sim))
@@ -316,7 +327,16 @@ class SiPMSimulation:
             
         nPG = nDC + nlight
         
-        pbar.update(1)t0 = 0                  #ns
+        pbar.update(1)
+        pbar.set_description("{0}".format(self.pb_ag_text[1]))
+        
+        nlight_sum = np.sum(nlight)
+        nDC_sum = np.sum(nDC)
+        nPG_sum = nlight_sum + nDC_sum
+        
+        npXT = np.array(ns.dist_fpXT.rvs(size=nPG_sum))
+        ndXT = np.array(ns.dist_fdXT.rvs(size=nPG_sum))
+        
         npXT_sum = np.sum(npXT)
         
         nPG_pXT_sum = nPG_sum + npXT_sum
@@ -336,7 +356,13 @@ class SiPMSimulation:
         pg_l_d = np.split(pg_l_d, nlight_cumsum)[:-1]
         pg_l_t = np.split(pg_l_t, nlight_cumsum)[:-1]
         pg_dc_d = np.split(pg_dc_d, nDC_cumsum)[:-1]
-        pg_dc_t = np.split(pg_dc_t, nDC_cumsum)[:-1]t0 = 0                  #ns
+        pg_dc_t = np.split(pg_dc_t, nDC_cumsum)[:-1]
+        
+        pXT_n = np.split(npXT, nPG_cumsum)[:-1]
+        dXT_n = np.split(ndXT, nPG_cumsum)[:-1]
+        
+        pg_d = [np.concatenate(elem) for elem in zip(pg_l_d, pg_dc_d)]
+        pg_t = [np.concatenate(elem) for elem in zip(pg_l_t, pg_dc_t)]
     
 
         pbar.update(1)
@@ -466,7 +492,23 @@ class SiPMSimulation:
 
         
         
-        pbar.update(1)t0 = 0                  #ns
+        pbar.update(1)
+        pbar.set_description("{0}".format(self.pb_ag_text[5]))
+        
+        ag_d = [
+            np.concatenate( (list_pg_d, list_pXT_d, list_dXT_d, list_Ap_d))
+            for list_pg_d, list_pXT_d, list_dXT_d, list_Ap_d, in zip(pg_d, pXT_d, dXT_d, Ap_d)  
+        ]
+        
+        ag_t = [
+            np.concatenate( (list_pg_t, list_pXT_t, list_dXT_t, list_Ap_t))
+            for list_pg_t, list_pXT_t, list_dXT_t, list_Ap_t, in zip(pg_t, pXT_t, dXT_t, Ap_t)  
+        ]
+        
+        ns.ag_d = ag_d
+        ns.ag_t = ag_t
+        
+        pbar.update(1)
         pbar.set_description("{0}".format(self.pb_ag_text[6]))
     
     
@@ -687,7 +729,8 @@ class SiPMSimulation:
             end_time = time.time()
                           
              
-            self.pars.at[index, "GeigerArray"] =  np.vstack([ns.ag_d, ns.ag_t]) #             self.pars.at[index, "TimeElapsed_GeigerArray"] = end_time-start_time
+            self.pars.at[index, "GeigerArray"] =  np.vstack([ns.ag_d, ns.ag_t])
+#             self.pars.at[index, "TimeElapsed_GeigerArray"] = end_time-start_time
 
 
             self.pars.at[index, "ChargeSpectrum"] =  Qs
diff --git a/__pycache__/AdditionalPDFs.cpython-310.pyc b/__pycache__/AdditionalPDFs.cpython-310.pyc
deleted file mode 100644
index ee86b019f37fd574ba07d2f101f3083319470d3e..0000000000000000000000000000000000000000
Binary files a/__pycache__/AdditionalPDFs.cpython-310.pyc and /dev/null differ
diff --git a/__pycache__/LightSimtastic.cpython-310.pyc b/__pycache__/LightSimtastic.cpython-310.pyc
deleted file mode 100644
index bcf12a3a0a70470199e386ba5fce1d374b77d0c7..0000000000000000000000000000000000000000
Binary files a/__pycache__/LightSimtastic.cpython-310.pyc and /dev/null differ