Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Proto3ShowerCalibFit.m
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Proto3ShowerCalibFit.m
1 
2 clear all
3 close all
4 
5 global Ndata;
6 global DataSet;
7 global low_tower_IDs;
8 
9 %%
10 
11 DataFolder = 'E:/tmp/Transfer Buffer/ShowerCalib/';
12 
13 % FileID = {'Rot45','THP','UIUC18','UpTilt5', 'ShowerDepth'};
14 FileID = {'3rd_positionscan'};
16 
17 sim_const = 3/100;
18 sim_stat = 12/100;
19 Ndata = 64;
20 InitConst = [ones(1, 64) ];
21 
22 zero_sup = -1000; %zero suppression disabled
23 
24 %%
25 
26 for i = 1:size(FileList,2)
27 
28  FileList{i} = [DataFolder FileList{i} '.lst_EMCalCalib.root.dat'];
29 
30 end
31 
32 %%
33 
35 
36 %% Readin
37 % global DataSet
38 DataSet =struct('FileID',{},'E',{},'DE',{},'data',{}, 'accept',{});
39 
40 N_Runs = 0;
41 % for i = 1:1
42 for i = 1:size(FileList,2)
43  filename = FileList{i};
44  fprintf('processing %s\n', filename);
45 
46  data = textread(filename);
47  % disp(size(data));
48 
49  energys = data(:,1);
50  energy = unique(energys);
51  data = data(:,2:(1+Ndata));
52 
53  energy = energy(energy<=8 & energy>2);
54 
55  for j=1:size(energy, 1)
56 
57  N_Runs = N_Runs +1;
58  fprintf('processing %s - %.0f GeV @ %d\n', filename,energy(j), N_Runs );
59 
60  DataSet(N_Runs).FileID = FileID{i};
61  DataSet(N_Runs).E = energy(j);
62  DataSet(N_Runs).DE = sqrt( sim_const.^2 + sim_stat.^2./DataSet(i).E ) ;
63 
64  DataSet(N_Runs).data = data(energys == energy(j),:);
65  DataSet(N_Runs).data = DataSet(N_Runs).data .* (DataSet(N_Runs).data>zero_sup);
66 
68 
69  DataSet(N_Runs).data = DataSet(N_Runs).data(total_E > DataSet(N_Runs).E/2, :);
70  DataSet(N_Runs).accept = ones(size(data, 1), 1);
71 
72  end
73 
74 end
75 
76 %%
77 DrawDataSet(DataSet, InitConst, 'Inputs');
78 
79 SaveCanvas([DataFolder 'EnergyCalibFIt'],gcf);
80 
81 
82 
83 %%
84 
85 figure('name',['DrawDataSet_EnergyFraction'],'PaperPositionMode','auto', ...
86  'position',[100,0,1800,1000]) ;
87 
88 SumFraction = [];
89 
90 for i = 1:N_Runs
91  subplot(1,1,i);
92  total_E = ones(size(DataSet(i).data)) .*DataSet(i).E;
93  Fraction = DataSet(i).data ./ total_E;
94  MeanFraction = mean(Fraction, 1);
95  MeanFraction = reshape(MeanFraction, 8, 8);
96 
97  SumFraction = [SumFraction; Fraction];
98 
99  imagesc(0:7, 0:7, MeanFraction);
100  colorbar
101  set(gca,'YDir','normal')
102 
103  title(sprintf('%s, E = %.1f GeV', DataSet(i).FileID, DataSet(i).E));
104  xlabel('Column ID');
105  ylabel('Row ID');
106 end
107 
108 SaveCanvas([DataFolder 'EnergyCalibFIt'],gcf);
109 %%
110 
111 figure('name',['DrawDataSet_EnergyFractionSum'],'PaperPositionMode','auto', ...
112  'position',[100,0,1900,400]) ;
113 
114 subplot(1,3,1);
115 
116 MeanFraction = mean(SumFraction, 1);
117 MeanFraction = reshape(MeanFraction, 8, 8);
118 
119 imagesc(0:7, 0:7, MeanFraction);
120 colorbar
121 set(gca,'YDir','normal');
122 
123 title(sprintf('Sum all data'));
124 xlabel('Column ID');
125 ylabel('Row ID');
126 
127 subplot(1,3,2);
128 
129 hist(reshape(MeanFraction,size(MeanFraction,1) * size(MeanFraction,2),1),100);
130 title('fraction of shower energy carried by each tower');
131 xlabel('MeanFraction');
132 
133 subplot(1,3,3);
134 
135 low_tower_IDs =reshape( MeanFraction<0.01, 1, Ndata);
136 % low_tower_IDs =reshape( MeanFraction<0.0001, 1, Ndata);
137 
138 imagesc(0:7, 0:7, reshape(low_tower_IDs, 8, 8));
139 colorbar
140 set(gca,'YDir','normal');
141 
142 title(sprintf('Low hit towers'));
143 xlabel('Column ID');
144 ylabel('Row ID');
145 
146 SaveCanvas([DataFolder 'EnergyCalibFIt'],gcf);
147 
148 % return
149 %%
150 
151 % InitConst_RunScale = [InitConst ones(1, N_Runs)];
152 InitConst_RunScale = [InitConst ];
153 % InitConst_RunScale = [InitConst ];
154 
155 data_selection(InitConst_RunScale,10);
156 disp(object_function(InitConst_RunScale));
157 
158 % disp(object_function(InitConst_RunScale, 2));
159 % disp(object_function(InitConst_RunScale, 1));
160 
161 %%
162 
163 x = InitConst_RunScale;
164 
165 options = optimset('Display','iter','TolX',1, 'MaxFunEvals', 100000,'MaxIter',40000,'PlotFcns',@optimplotfval );
166 
167 data_selection(x,8);
168 disp(object_function(x));
169 
170 x = fminsearch(@(x) object_function(x), x,...
171  options);
172 
173 %%
174 options = optimset('Display','iter','TolX',1, 'MaxFunEvals', 100000,'MaxIter',40000,'PlotFcns',@optimplotfval );
175 %
176 data_selection(x,4);
177 disp(object_function(x));
178 
179 x = fminsearch(@(x) object_function(x), x,...
180  options);
181 
182 
183 %%
184 options = optimset('Display','iter','TolX',1, 'MaxFunEvals', 100000,'MaxIter',40000,'PlotFcns',@optimplotfval );
185 %
186 data_selection(x,2);
187 disp(object_function(x));
188 
189 x = fminsearch(@(x) object_function(x), x,...
190  options);
191 
192 
193 %%
194 
195 data_selection(x,2);
196 
197 calib_const = x(1:Ndata);
198 % E_scale = x((Ndata+1):(Ndata + N_Runs));
199 E_scale = ones(N_Runs);
200 
201 
202 figure('name',['CalibConst'],'PaperPositionMode','auto', ...
203  'position',[100,0,1800,400]) ;
204 
205 subplot(1,3,1);
206 
207 plot(calib_const);
208 title(sprintf('Calibration constant'));
209 xlabel('Col * 8 + Row');
210 ylabel('Calibration New / Old');
211 
212 subplot(1,3,2);
213 
214 imagesc(0:7, 0:7, reshape(calib_const, 8, 8));
215 colorbar
216 set(gca,'YDir','normal')
217 
218 title(sprintf('Calibration constant, New / Old'));
219 xlabel('Column ID');
220 ylabel('Row ID');
221 
222 
223 subplot(1,3,3);
224 
225 plot(E_scale,'x');
226 title(sprintf('Energy scale constant, mean = %.2f', mean(E_scale)));
227 xlabel('Run ID');
228 ylabel('Energy scale New / Old');
229 set(gca,'YLim',[0.5,1.5])
230 grid on
231 
232 
233 SaveCanvas([DataFolder 'EnergyCalibFIt'],gcf);
234 %%
235 
236 % figure('name',['CalibConstVSModuleDensity'],'PaperPositionMode','auto', ...
237 % 'position',[100,0,1300,1000]) ;
238 %
239 % ModuleDensity =[
240 % 10.19 8.47 8.96 9.77
241 % 9.74 9.96 10.00 9.87
242 % 9.25 9.83 9.32 10.10
243 % 9.59 9.39 10.06 9.62
244 % 9.48 9.5 9.34 9.33
245 % 9.43 9.34 9.39 9.55
246 % 9.21 9.55 9.3 9.3
247 % 9.5 9.6 9.3 9.24
248 % ];
249 %
250 % ModuleDensity = ModuleDensity(8:-1:1,:);
251 %
252 % ModuleDensity = [ModuleDensity(:,1) ModuleDensity(:,1) ModuleDensity(:,2) ModuleDensity(:,2) ModuleDensity(:,3) ModuleDensity(:,3) ModuleDensity(:,4) ModuleDensity(:,4)];
253 %
254 % subplot(2,2,1);
255 % imagesc(0:7, 0:7,ModuleDensity);
256 % colorbar
257 % set(gca,'YDir','normal')
258 %
259 % title(sprintf('Module Density (g/cm^3)'));
260 % xlabel('Column ID');
261 % ylabel('Row ID');
262 %
263 %
264 % subplot(2,2,2);
265 %
266 % imagesc(0:7, 0:7, reshape(calib_const, 8, 8));
267 % colorbar
268 % set(gca,'YDir','normal');
269 %
270 % title(sprintf('Calibration constant, New / Old'));
271 % xlabel('Column ID');
272 % ylabel('Row ID');
273 %
274 %
275 % subplot(2,2,3);
276 %
277 % [calib_const_col, calib_const_row]= meshgrid(0:7,0:7);
278 %
279 % calib_const_col = reshape(calib_const_col,1,64);
280 % calib_const_row = reshape(calib_const_row,1,64);
281 % % IDs = ~low_tower_IDs;
282 % IDs = (calib_const_col >=3 & calib_const_col<=5 & calib_const_row>=4 & calib_const_row<=6);
283 %
284 % dens = reshape(ModuleDensity,1, 8* 8);
285 % dens = dens(IDs);
286 %
287 % plot(calib_const(IDs),dens, 'o');
288 % title(sprintf('THP 3x3, Calibration adjustment VS density'));
289 % xlabel('Calibration constant, New / Old');
290 % ylabel('Module Density');
291 %
292 % subplot(2,2,4);
293 %
294 %
295 % IDs = ~low_tower_IDs;
296 % % IDs = (calib_const_col >=3 & calib_const_col<=5 & calib_const_row>=4 & calib_const_row<=6);
297 %
298 % dens = reshape(ModuleDensity,1, 8* 8);
299 % dens = dens(IDs);
300 %
301 % plot(calib_const(IDs),dens, 'o');
302 % title(sprintf('All calibrated modules, Calibration adjustment VS density'));
303 % xlabel('Calibration constant, New / Old');
304 % ylabel('Module Density');
305 %
306 % SaveCanvas([DataFolder 'EnergyCalibFIt'],gcf);
307 
308 
309 
310 %%
311 
312 DrawDataSet(DataSet,calib_const,'Optimized');
313 SaveCanvas([DataFolder 'EnergyCalibFIt'],gcf);
314 
315 %% Save out
316 %
317 % for i = 1:N_Runs
318 % filename = sprintf('%s/calirbated_%d_%.0f.dat',DataFolder, DataSet(i).FileID, DataSet(i).E );
319 %
320 %
321 % total_E = sum( DataSet(i).data*InitConst', 2) ;
323 %
324 % dlmwrite(filename,[total_E calib_total_E]);
325 % end
326 
327 save([DataFolder 'fit.mat']);
328 % save('goodfit.mat');
329 
330 %%
331 
332 [calib_const_col, calib_const_row]= meshgrid(0:7,0:7);
333 
334 A = [reshape(calib_const_col,1,64); reshape(calib_const_row,1,64); calib_const];
335 
336 fileID = fopen([DataFolder 'ShowerCalibFit_CablibConst.dat'],'w');
337 % fprintf(fileID,'%d - %d \n',);
338 
339 fprintf(fileID,'%d\t%d\t%f\n',A);
340 
341 
342 fclose(fileID);
343 
344 
345 
346