Loading power_dist_test.m +89 −11 Original line number Diff line number Diff line Loading @@ -54,10 +54,10 @@ for i = 1:length(mario) xlim([100 3000]) ylim([yme*0.8 yme*1.2]) yline(yme) pause if (~isempty(xtemp(xtemp ==0))) maxcount = max(xtemp); ptot0 = length(xtemp(xtemp == 0))/N; mi = -log(ptot0); ncr = 8; Loading @@ -69,14 +69,36 @@ for i = 1:length(mario) expectot = expec1*mi vartot = var1*mi + mi*expec1^2 qcr = (1-epscr)^(1/ncr); p8l(1) = (1-epscr); p8l(2) = (8*pcr*qcr^14); p8l(3) = (84*(pcr^2)*(qcr^20)); p8l(4) = 24*(pcr^3)*(qcr^24)*(1+3*qcr+38*qcr^2); p8l(5) = 4*(pcr^4)*(qcr^30)*(180+540*qcr+2521*qcr^2); r8l = p8l(5)/(1-sum(p8l(1:4))); for k = 6:10 p8l(k) = p8l(5)*(1-r8l)^(k-5); p8_1(1) = (1-epscr); p8_1(2) = (8*pcr*qcr^14); p8_1(3) = (12*(pcr^2)*(qcr^18)*(1+2*qcr+4*qcr^2)); p8_1(4) = 4*(pcr^3)*(qcr^20)*(1+3*qcr+14*qcr^2+30*qcr^3+61*qcr^4+59*qcr^5+72*qcr^6); p8_1(5) = 5*(pcr^4)*(qcr^24)*(9+36*qcr+98*qcr^2+188*qcr^3+310*qcr^4+372*qcr^5+520*qcr^6+396*qcr^7+341*qcr^8); r8_1 = p8_1(5)/(1-sum(p8_1(1:4))); vard = var(xtemp) vsuetot = vartot/expectot vsuedat = vard/mean(xtemp) meanpow = mean(Y0(100*Tseg+1:end))/2 meanpow/vsuetot meanpow/vsuedat ncr = 4; epscr = 1 - (length(xtemp(xtemp == 1))/N)/(mi*ptot0); pcr = 1- (1-epscr)^(1/ncr); expec1 = 1+ epscr + (3*(ncr-1)/(2*ncr))*epscr^2; var1 = epscr + (epscr^2)*(7-9/ncr)/2; enf = 1 + var1/(expec1^2); expectot = expec1*mi vartot = var1*mi + mi*expec1^2 qcr = (1-epscr)^(1/ncr); p4_1(1) = (1-epscr); p4_1(2) = (4*pcr*qcr^6); p4_1(3) = (18*(pcr^2)*(qcr^8)); p4_1(4) = 4*(pcr^3)*(qcr^8)*(1+3*qcr+18*qcr^2); p4_1(5) = 5*(pcr^4)*(qcr^10)*(8+24*qcr+55*qcr^2); r4_1 = p4_1(5)/(1-sum(p4_1(1:4))); for k = 6:maxcount p8_1(k) = p8_1(5)*(1-r8_1)^(k-5); p4_1(k) = p4_1(5)*(1-r4_1)^(k-5); end vard = var(xtemp) vsuetot = vartot/expectot Loading @@ -86,7 +108,7 @@ for i = 1:length(mario) meanpow/vsuedat else disp('Too many counts!') disp(['Avg. counts per bin :',num2str(mean(xtemp)/N),'.']); disp(['Avg. counts per bin :',num2str(mean(xtemp)),'.']); end pause end Loading Loading @@ -171,3 +193,59 @@ end % % [histnosub,~] = histcounts(Y0sub2,powedges,'normalization','pdf'); % % powmid(1:52) = (powedges(2:53)+powedges(1:52))./2; % % semilogy(powmid,histno,'o',powmid,histnodiv,'+',powmid,chi2pdf(powmid,(2.0)),powmid,histnosub,'*') %% A function to calculate crosstalk probabilities given any distribution %% of primary events and the pncr_1 (see Gallego+2013) % if (length(pncr_1)< maxcount) % disp('p8_1 was not calculated for the whole distribution of observed counts') % disp(['Setting the size of p8_m to that (',num2str(length(pncr_1)),') instead of ',num2str(maxcount),'.']) % maxcount = length(pncr_1); % end % pncr_m = zeros(maxcount); % pncr_m(1,:) = pncr_1(:); % for m = 1:9 % for k = 1:maxcount % for i = 1:k-m % pncr_m(m+1,k) = pncr_m(m+1,k) + pncr_m(m,k-i)*pncr_1(i); % end % % pncr_m(m+1,k) = sum(pncr_m(m,k-(1:k-m)).*pncr_1(1:k-m)); % end % end % extrtot = zeros(size(pncr_1)); % for k = 1:maxcount % for m = 1:k % extrtot(k) = extrtot(k) + extrprim(m).*pncr_m(m,k); % end % end % for i = 1:maxcount % datadist(i) = length(xtemp(xtemp == i))/N; % end %% extrtot = ptotk(p4_1,extrpoiss) function res = ptotk(pncr_1,extrprim) %Calculate crosstalk prob. as in Gallego+13 % if (length(pncr_1)<maxcount) % disp('p8_1 was not calculated for the whole distribution of observed counts') % disp(['Setting the size of p8_m to that (',num2str(length(pncr_1)),') instead of ',num2str(maxcount),'.']) % maxcount = length(pncr_1); % end maxcount = length(pncr_1); pncr_m = zeros(maxcount); pncr_m(1,:) = pncr_1(:); for m = 1:maxcount-1 for k = 1:maxcount for i = 1:k-m pncr_m(m+1,k) = pncr_m(m+1,k) + pncr_m(m,k-i)*pncr_1(i); end % pncr_m(m+1,k) = sum(pncr_m(m,k-(1:k-m)).*pncr_1(1:k-m)); end end res = zeros(size(pncr_1)); for k = 1:maxcount for m = 1:k res(k) = res(k) + extrprim(m).*pncr_m(m,k); end end end No newline at end of file Loading
power_dist_test.m +89 −11 Original line number Diff line number Diff line Loading @@ -54,10 +54,10 @@ for i = 1:length(mario) xlim([100 3000]) ylim([yme*0.8 yme*1.2]) yline(yme) pause if (~isempty(xtemp(xtemp ==0))) maxcount = max(xtemp); ptot0 = length(xtemp(xtemp == 0))/N; mi = -log(ptot0); ncr = 8; Loading @@ -69,14 +69,36 @@ for i = 1:length(mario) expectot = expec1*mi vartot = var1*mi + mi*expec1^2 qcr = (1-epscr)^(1/ncr); p8l(1) = (1-epscr); p8l(2) = (8*pcr*qcr^14); p8l(3) = (84*(pcr^2)*(qcr^20)); p8l(4) = 24*(pcr^3)*(qcr^24)*(1+3*qcr+38*qcr^2); p8l(5) = 4*(pcr^4)*(qcr^30)*(180+540*qcr+2521*qcr^2); r8l = p8l(5)/(1-sum(p8l(1:4))); for k = 6:10 p8l(k) = p8l(5)*(1-r8l)^(k-5); p8_1(1) = (1-epscr); p8_1(2) = (8*pcr*qcr^14); p8_1(3) = (12*(pcr^2)*(qcr^18)*(1+2*qcr+4*qcr^2)); p8_1(4) = 4*(pcr^3)*(qcr^20)*(1+3*qcr+14*qcr^2+30*qcr^3+61*qcr^4+59*qcr^5+72*qcr^6); p8_1(5) = 5*(pcr^4)*(qcr^24)*(9+36*qcr+98*qcr^2+188*qcr^3+310*qcr^4+372*qcr^5+520*qcr^6+396*qcr^7+341*qcr^8); r8_1 = p8_1(5)/(1-sum(p8_1(1:4))); vard = var(xtemp) vsuetot = vartot/expectot vsuedat = vard/mean(xtemp) meanpow = mean(Y0(100*Tseg+1:end))/2 meanpow/vsuetot meanpow/vsuedat ncr = 4; epscr = 1 - (length(xtemp(xtemp == 1))/N)/(mi*ptot0); pcr = 1- (1-epscr)^(1/ncr); expec1 = 1+ epscr + (3*(ncr-1)/(2*ncr))*epscr^2; var1 = epscr + (epscr^2)*(7-9/ncr)/2; enf = 1 + var1/(expec1^2); expectot = expec1*mi vartot = var1*mi + mi*expec1^2 qcr = (1-epscr)^(1/ncr); p4_1(1) = (1-epscr); p4_1(2) = (4*pcr*qcr^6); p4_1(3) = (18*(pcr^2)*(qcr^8)); p4_1(4) = 4*(pcr^3)*(qcr^8)*(1+3*qcr+18*qcr^2); p4_1(5) = 5*(pcr^4)*(qcr^10)*(8+24*qcr+55*qcr^2); r4_1 = p4_1(5)/(1-sum(p4_1(1:4))); for k = 6:maxcount p8_1(k) = p8_1(5)*(1-r8_1)^(k-5); p4_1(k) = p4_1(5)*(1-r4_1)^(k-5); end vard = var(xtemp) vsuetot = vartot/expectot Loading @@ -86,7 +108,7 @@ for i = 1:length(mario) meanpow/vsuedat else disp('Too many counts!') disp(['Avg. counts per bin :',num2str(mean(xtemp)/N),'.']); disp(['Avg. counts per bin :',num2str(mean(xtemp)),'.']); end pause end Loading Loading @@ -171,3 +193,59 @@ end % % [histnosub,~] = histcounts(Y0sub2,powedges,'normalization','pdf'); % % powmid(1:52) = (powedges(2:53)+powedges(1:52))./2; % % semilogy(powmid,histno,'o',powmid,histnodiv,'+',powmid,chi2pdf(powmid,(2.0)),powmid,histnosub,'*') %% A function to calculate crosstalk probabilities given any distribution %% of primary events and the pncr_1 (see Gallego+2013) % if (length(pncr_1)< maxcount) % disp('p8_1 was not calculated for the whole distribution of observed counts') % disp(['Setting the size of p8_m to that (',num2str(length(pncr_1)),') instead of ',num2str(maxcount),'.']) % maxcount = length(pncr_1); % end % pncr_m = zeros(maxcount); % pncr_m(1,:) = pncr_1(:); % for m = 1:9 % for k = 1:maxcount % for i = 1:k-m % pncr_m(m+1,k) = pncr_m(m+1,k) + pncr_m(m,k-i)*pncr_1(i); % end % % pncr_m(m+1,k) = sum(pncr_m(m,k-(1:k-m)).*pncr_1(1:k-m)); % end % end % extrtot = zeros(size(pncr_1)); % for k = 1:maxcount % for m = 1:k % extrtot(k) = extrtot(k) + extrprim(m).*pncr_m(m,k); % end % end % for i = 1:maxcount % datadist(i) = length(xtemp(xtemp == i))/N; % end %% extrtot = ptotk(p4_1,extrpoiss) function res = ptotk(pncr_1,extrprim) %Calculate crosstalk prob. as in Gallego+13 % if (length(pncr_1)<maxcount) % disp('p8_1 was not calculated for the whole distribution of observed counts') % disp(['Setting the size of p8_m to that (',num2str(length(pncr_1)),') instead of ',num2str(maxcount),'.']) % maxcount = length(pncr_1); % end maxcount = length(pncr_1); pncr_m = zeros(maxcount); pncr_m(1,:) = pncr_1(:); for m = 1:maxcount-1 for k = 1:maxcount for i = 1:k-m pncr_m(m+1,k) = pncr_m(m+1,k) + pncr_m(m,k-i)*pncr_1(i); end % pncr_m(m+1,k) = sum(pncr_m(m,k-(1:k-m)).*pncr_1(1:k-m)); end end res = zeros(size(pncr_1)); for k = 1:maxcount for m = 1:k res(k) = res(k) + extrprim(m).*pncr_m(m,k); end end end No newline at end of file