Back to home page

sPhenix code displayed by LXR

 
 

    


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