Warning, /analysis/TPC/DAQ/macros/TPCRateData.m is written in an unsupported language. File is not indexed.
0001 close all
0002
0003 clear all
0004
0005 %%
0006
0007 % n = 1000;
0008 % full_rate = 100e3;
0009 % trig_rate = 15e3;
0010 % trigger_window = 18e-6;
0011
0012 % n = 10000000;
0013 n = 100000;
0014 % n = 500000;
0015 full_rate = 100e3;
0016 % full_rate = 50e3;
0017 trig_rate = 15e3;
0018 % trigger_window = 13e-6;
0019 trigger_window = 17.5e-6;
0020 % trigger_window = 35e-6;
0021 BCO = 10e6;
0022
0023
0024 % Active region readout only
0025 % 0.69
0026
0027 trigger_window_in_BCO = int64(trigger_window * BCO);
0028 event_time_gap = ...
0029 exprnd(1/full_rate,n,1);
0030
0031 DataLoadBCO = zeros(int64(n/full_rate*BCO*1.1), 1);
0032 TriggerLoadBCO = zeros(int64(n/full_rate*BCO*1.1), 1);
0033
0034 trig_event = binornd(1,trig_rate./full_rate, n, 1);
0035
0036 DataRateBeforeTriggerPerkHz = (1/100e3)* 966. *.5*.6;
0037
0038
0039 %%
0040
0041 recorded_data = 0;
0042 triggered_data = 0;
0043
0044 n_recorded = 0;
0045 n_triggered = 0;
0046 current_time = 0;
0047
0048 for i = 1:n
0049
0050 start_time_bin = int64(current_time*BCO)+1;
0051 % add data
0052 DataLoadBCO(start_time_bin:(start_time_bin+trigger_window_in_BCO)) =...
0053 DataLoadBCO(start_time_bin:(start_time_bin+trigger_window_in_BCO)) + 1;
0054
0055 % trigger
0056 if (trig_event(i) == 1)
0057 current_trigger_window = trigger_window;
0058
0059 TriggerLoadBCO(start_time_bin:(start_time_bin+trigger_window_in_BCO)) =...
0060 TriggerLoadBCO(start_time_bin:(start_time_bin+trigger_window_in_BCO)) + 1;
0061
0062 n_triggered = n_triggered + 1;
0063
0064 end
0065
0066 % time elaps
0067 current_time = current_time + event_time_gap(i);
0068
0069 end
0070
0071 %%
0072
0073 % fprintf('Throttled event / total = %.3f; Throttled data / total = %.3f; Triggered event / total = %.3f; Triggered data / total = = %.3f\n',...
0074 % n_recorded/n, recorded_data/n, n_triggered./n, triggered_data/n);
0075 fprintf('------------\n');
0076
0077 fprintf('full_rate = %.0f kHz; trig_rate= %.0f kHz; trigger_window= %.1f us; \n',...
0078 full_rate/1e3,trig_rate/1e3, trigger_window*1e6 );
0079 fprintf('Trigger rate*drift window = %.2f;Full rate*drift window= %.2f;Trigger rate/full rate= %.2f; \n',...
0080 trig_rate*trigger_window,full_rate*trigger_window,trig_rate/full_rate );
0081
0082 fprintf('throttled data / total = %.3f; Triggered data / total = %.3f; throttled/trigger = %.3f \n',...
0083 sum((TriggerLoadBCO >0) .* DataLoadBCO)/ sum(DataLoadBCO), sum(TriggerLoadBCO .* DataLoadBCO)/ sum(DataLoadBCO), ...
0084 sum((TriggerLoadBCO >0) .* DataLoadBCO/ sum(TriggerLoadBCO .* DataLoadBCO)));
0085
0086 fprintf('throttled data rate = %.0f Gbps; Triggered data rate = %.0f \n',...
0087 sum((TriggerLoadBCO >0) .* DataLoadBCO)/ sum(DataLoadBCO) *full_rate*DataRateBeforeTriggerPerkHz ,...
0088 sum(TriggerLoadBCO .* DataLoadBCO)/ sum(DataLoadBCO)*full_rate*DataRateBeforeTriggerPerkHz);
0089 fprintf('------------\n');
0090
0091 % fprintf('throttled event / total = %.3f; Triggered event / total = = %.3f; throttled/trigger = %.3f\n',...
0092 % recorded_data/n, triggered_data/n, recorded_data/triggered_data );
0093
0094
0095 %%
0096
0097
0098 % recorded_data = 0;
0099 % triggered_data = 0;
0100 %
0101 % n_recorded = 0;
0102 % n_triggered = 0;
0103 % current_trigger_window = -1;
0104 % recorded_window = -1;
0105 %
0106 % for i = 1:n
0107 %
0108 % % trigger
0109 % if (trig_event(i) == 1)
0110 % current_trigger_window = trigger_window;
0111 % end
0112 %
0113 % % readout
0114 % if (current_trigger_window>0)
0115 % % n_recorded = n_recorded + 1;
0116 % % n_triggered = n_triggered + 1;
0117 %
0118 % if (current_trigger_window>=trigger_window)
0119 %
0120 % if (recorded_window>=trigger_window)
0121 % recorded_data = recorded_data +0;
0122 % elseif (recorded_window>=0)
0123 % recorded_data = recorded_data + (trigger_window - recorded_window)/trigger_window;
0124 % recorded_window = trigger_window;
0125 % else
0126 % recorded_data = recorded_data + 1;
0127 % recorded_window = trigger_window;
0128 % end
0129 %
0130 % else % if (current_trigger_window>=trigger_window)
0131 %
0132 % if (recorded_window>=current_trigger_window)
0133 % recorded_data = recorded_data +0;
0134 % elseif (recorded_window>=0)
0135 % recorded_data = recorded_data + (current_trigger_window - recorded_window)/trigger_window;
0136 % recorded_window = current_trigger_window;
0137 % else
0138 % recorded_data = recorded_data + (current_trigger_window )/trigger_window;
0139 % recorded_window = current_trigger_window;
0140 % end
0141 % end % if (current_trigger_window>=trigger_window)
0142 %
0143 % end % (current_trigger_window>0)
0144 %
0145 % % time elaps
0146 % current_trigger_window = current_trigger_window - event_time_gap(i);
0147 % recorded_window = recorded_window - event_time_gap(i);
0148 %
0149 % end
0150
0151