g4tools  5.4.0
slice
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_histo_slice
5 #define tools_histo_slice
6 
7 #include "axis"
8 
9 namespace tools {
10 namespace histo {
11 
15 
16 template <class H2,class H1>
17 inline bool fill_slice_x(const H2& a_from,int aJbeg,int aJend,H1& a_to) {
18 
19  if(!a_from.dimension()) return false;
20 
21  typedef typename H2::bn_t bn_t;
22 
23  bn_t jbeg;
24  if(!a_from.axis_y().in_range_to_absolute_index(aJbeg,jbeg)) return false;
25  bn_t jend;
26  if(!a_from.axis_y().in_range_to_absolute_index(aJend,jend)) return false;
27  if(jbeg>jend) return false;
28 
29  if(a_from.axis_x().bins()!=a_to.axis().bins()) return false;
30 
31  typedef typename H1::hd_t hd_t;
32  hd_t hdata = a_to.dac();
33 
34  bn_t aoffset,offset,jbin;
35  bn_t yoffset = a_from.axis_y().m_offset;
36 
37  typedef typename H2::num_entries_t TN;
38  typedef typename H2::weight_t TW;
39  typedef typename H2::coordinate_t TC;
40 
41  const std::vector<TN>& af_bin_entries = a_from.bins_entries();
42  const std::vector<TW>& af_bin_Sw = a_from.bins_sum_w();
43  const std::vector<TW>& af_bin_Sw2 = a_from.bins_sum_w2();
44  const std::vector< std::vector<TC> >& af_bin_Sxw = a_from.bins_sum_xw();
45  const std::vector< std::vector<TC> >& af_bin_Sx2w = a_from.bins_sum_x2w();
46 
47  // Fill also the outflow.
48  bn_t abins = hdata.m_axes[0].bins()+2;
49  for(bn_t aibin=0;aibin<abins;aibin++) {
50  //offset1D = ibin
51  aoffset = aibin;
52  for(jbin=jbeg;jbin<=jend;jbin++) {
53  //offset2D = ibin + jbin * yoffset
54  // hdata booked with x then :
55  offset = aibin + jbin * yoffset;
56  // Bin :
57  hdata.m_bin_entries[aoffset] += af_bin_entries[offset];
58  hdata.m_bin_Sw[aoffset] += af_bin_Sw[offset];
59  hdata.m_bin_Sw2[aoffset] += af_bin_Sw2[offset];
60  hdata.m_bin_Sxw[aoffset][0] += af_bin_Sxw[offset][0];
61  hdata.m_bin_Sx2w[aoffset][0] += af_bin_Sx2w[offset][0];
62  }
63  }
64 
65  hdata.m_in_range_plane_Sxyw.assign(a_to.number_of_planes(),0); //ill-defined.
66 
67  hdata.update_fast_getters();
68  a_to.copy_from_data(hdata);
69  return true;
70 }
71 
72 template <class H2,class H1>
73 inline H1* slice_x(const H2& a_from,int aJbeg,int aJend,const std::string& a_title) {
74  H1* slice = new H1(a_title,a_from.axis_x().bins(),a_from.axis_x().lower_edge(),a_from.axis_x().upper_edge());
75  if(!fill_slice_x(a_from,aJbeg,aJend,*slice)) {delete slice;return 0;}
76  return slice;
77 }
78 
79 template <class H2,class H1>
80 inline H1* projection_x(const H2& a_from,const std::string& a_title) {
81  return slice_x(a_from,axis_UNDERFLOW_BIN,axis_OVERFLOW_BIN,a_title);
82 }
83 
84 template <class H2,class H1>
85 inline bool fill_slice_y(const H2& a_from,int aIbeg,int aIend,H1& a_to) {
86 
87  if(!a_from.dimension()) return false;
88 
89  typedef typename H2::bn_t bn_t;
90 
91  bn_t ibeg;
92  if(!a_from.axis_x().in_range_to_absolute_index(aIbeg,ibeg)) return false;
93  bn_t iend;
94  if(!a_from.axis_x().in_range_to_absolute_index(aIend,iend)) return false;
95  if(ibeg>iend) return false;
96 
97  if(a_from.axis_y().bins()!=a_to.axis().bins()) return false;
98 
99  typedef typename H1::hd_t hd_t;
100  hd_t hdata = a_to.dac();
101 
102  bn_t aibin,aoffset,offset,ibin;
103  bn_t yoffset = a_from.axis_y().m_offset;
104 
105  typedef typename H2::num_entries_t TN;
106  typedef typename H2::weight_t TW;
107  typedef typename H2::coordinate_t TC;
108 
109  const std::vector<TN>& af_bin_entries = a_from.bins_entries();
110  const std::vector<TW>& af_bin_Sw = a_from.bins_sum_w();
111  const std::vector<TW>& af_bin_Sw2 = a_from.bins_sum_w2();
112  const std::vector< std::vector<TC> >& af_bin_Sxw = a_from.bins_sum_xw();
113  const std::vector< std::vector<TC> >& af_bin_Sx2w = a_from.bins_sum_x2w();
114 
115  // Fill also the outflow.
116  bn_t abins = hdata.m_axes[0].bins()+2;
117  for(aibin=0;aibin<abins;aibin++) {
118  //offset1D = ibin
119  aoffset = aibin;
120  for(ibin=ibeg;ibin<=iend;ibin++) {
121  //offset2D = ibin + jbin * yoffset
122  // hdata booked with y then :
123  offset = ibin + aibin * yoffset;
124  // Bin :
125  hdata.m_bin_entries[aoffset] += af_bin_entries[offset];
126  hdata.m_bin_Sw[aoffset] += af_bin_Sw[offset];
127  hdata.m_bin_Sw2[aoffset] += af_bin_Sw2[offset];
128  hdata.m_bin_Sxw[aoffset][0] += af_bin_Sxw[offset][1];
129  hdata.m_bin_Sx2w[aoffset][0] += af_bin_Sx2w[offset][1];
130  }
131  }
132 
133  hdata.m_in_range_plane_Sxyw.assign(a_to.number_of_planes(),0); //ill-defined.
134 
135  hdata.update_fast_getters();
136  a_to.copy_from_data(hdata);
137  return true;
138 }
139 
140 template <class H2,class H1>
141 inline H1* slice_y(const H2& a_from,int aIbeg,int aIend,const std::string& a_title) {
142  H1* slice = new H1(a_title,a_from.axis_y().bins(),a_from.axis_y().lower_edge(),a_from.axis_y().upper_edge());
143  if(!fill_slice_y(a_from,aIbeg,aIend,*slice)) {delete slice;return 0;}
144  return slice;
145 }
146 
147 template <class H2,class H1>
148 inline H1* projection_y(const H2& a_from,const std::string& a_title) {
149  return slice_y(a_from,axis_UNDERFLOW_BIN,axis_OVERFLOW_BIN,a_title);
150 }
151 
155 
156 template <class H2,class P1>
157 inline bool fill_profile_x(const H2& a_from,int aJbeg,int aJend,P1& a_to) {
158  if(!a_from.dimension()) return false;
159 
160  typedef typename H2::bn_t bn_t;
161 
162  bn_t jbeg;
163  if(!a_from.axis_y().in_range_to_absolute_index(aJbeg,jbeg)) return false;
164  bn_t jend;
165  if(!a_from.axis_y().in_range_to_absolute_index(aJend,jend)) return false;
166  if(jbeg>jend) return false;
167 
168  if(a_from.axis_x().bins()!=a_to.axis().bins()) return false;
169 
170  typedef typename P1::pd_t pd_t;
171  pd_t hdata = a_to.get_histo_data();
172 
173  bn_t aoffset,offset,jbin;
174  bn_t yoffset = a_from.axis_y().m_offset;
175 
176  typedef typename H2::num_entries_t TN;
177  typedef typename H2::weight_t TW;
178  typedef typename H2::coordinate_t TC;
179 
180  const std::vector<TN>& af_bin_entries = a_from.bins_entries();
181  const std::vector<TW>& af_bin_Sw = a_from.bins_sum_w();
182  const std::vector<TW>& af_bin_Sw2 = a_from.bins_sum_w2();
183  const std::vector< std::vector<TC> >& af_bin_Sxw = a_from.bins_sum_xw();
184  const std::vector< std::vector<TC> >& af_bin_Sx2w = a_from.bins_sum_x2w();
185 
186  // Fill also the outflow.
187  bn_t abins = hdata.m_axes[0].bins()+2;
188  for(bn_t aibin=0;aibin<abins;aibin++) {
189  //offset1D = ibin
190  aoffset = aibin;
191  for(jbin=jbeg;jbin<=jend;jbin++) {
192  //offset2D = ibin + jbin * yoffset
193  // hdata booked with x then :
194  offset = aibin + jbin * yoffset;
195  // Bin :
196  hdata.m_bin_entries[aoffset] += af_bin_entries[offset];
197  hdata.m_bin_Sw[aoffset] += af_bin_Sw[offset];
198  hdata.m_bin_Sw2[aoffset] += af_bin_Sw2[offset];
199  hdata.m_bin_Sxw[aoffset][0] += af_bin_Sxw[offset][0];
200  hdata.m_bin_Sx2w[aoffset][0] += af_bin_Sx2w[offset][0];
201 
202  hdata.m_bin_Svw[aoffset] += af_bin_Sxw[offset][1];
203  hdata.m_bin_Sv2w[aoffset] += af_bin_Sx2w[offset][1];
204 
205  }
206  }
207 
208  hdata.m_in_range_plane_Sxyw.assign(a_to.number_of_planes(),0); //ill-defined.
209 
210  hdata.update_fast_getters();
211  a_to.copy_from_data(hdata);
212  return true;
213 }
214 
215 template <class H2,class P1>
216 inline bool fill_profile_y(const H2& a_from,int aIbeg,int aIend,P1& a_to) {
217 
218  if(!a_from.dimension()) return false;
219 
220  typedef typename H2::bn_t bn_t;
221 
222  bn_t ibeg;
223  if(!a_from.axis_x().in_range_to_absolute_index(aIbeg,ibeg)) return false;
224  bn_t iend;
225  if(!a_from.axis_x().in_range_to_absolute_index(aIend,iend)) return false;
226  if(ibeg>iend) return false;
227 
228  if(a_from.axis_y().bins()!=a_to.axis().bins()) return false;
229 
230  typedef typename P1::pd_t pd_t;
231  pd_t hdata = a_to.get_histo_data();
232 
233  bn_t aibin,aoffset,offset,ibin;
234  bn_t yoffset = a_from.axis_y().m_offset;
235 
236  typedef typename H2::num_entries_t TN;
237  typedef typename H2::weight_t TW;
238  typedef typename H2::coordinate_t TC;
239 
240  const std::vector<TN>& af_bin_entries = a_from.bins_entries();
241  const std::vector<TW>& af_bin_Sw = a_from.bins_sum_w();
242  const std::vector<TW>& af_bin_Sw2 = a_from.bins_sum_w2();
243  const std::vector< std::vector<TC> >& af_bin_Sxw = a_from.bins_sum_xw();
244  const std::vector< std::vector<TC> >& af_bin_Sx2w = a_from.bins_sum_x2w();
245 
246  // Fill also the outflow.
247  bn_t abins = hdata.m_axes[0].bins()+2;
248  for(aibin=0;aibin<abins;aibin++) {
249  //offset1D = ibin
250  aoffset = aibin;
251  for(ibin=ibeg;ibin<=iend;ibin++) {
252  //offset2D = ibin + jbin * yoffset
253  // hdata booked with y then :
254  offset = ibin + aibin * yoffset;
255  // Bin :
256  hdata.m_bin_entries[aoffset] += af_bin_entries[offset];
257  hdata.m_bin_Sw[aoffset] += af_bin_Sw[offset];
258  hdata.m_bin_Sw2[aoffset] += af_bin_Sw2[offset];
259  hdata.m_bin_Sxw[aoffset][0] += af_bin_Sxw[offset][1];
260  hdata.m_bin_Sx2w[aoffset][0] += af_bin_Sx2w[offset][1];
261 
262  hdata.m_bin_Svw[aoffset] += af_bin_Sxw[offset][0];
263  hdata.m_bin_Sv2w[aoffset] += af_bin_Sx2w[offset][0];
264  }
265  }
266 
267  hdata.m_in_range_plane_Sxyw.assign(a_to.number_of_planes(),0); //ill-defined.
268 
269  hdata.update_fast_getters();
270  a_to.copy_from_data(hdata);
271  return true;
272 }
273 
277 
278 template <class H3,class H2>
279 inline bool fill_slice_yz(const H3& a_from,int aIbeg,int aIend,H2& a_to) {
280 
281  if(!a_from.dimension()) return false;
282 
283  typedef typename H3::bn_t bn_t;
284 
285  bn_t ibeg;
286  if(!a_from.axis_x().in_range_to_absolute_index(aIbeg,ibeg)) return false;
287  bn_t iend;
288  if(!a_from.axis_x().in_range_to_absolute_index(aIend,iend)) return false;
289  if(ibeg>iend) return false;
290 
291  if(a_from.axis_y().bins()!=a_to.axis_x().bins()) return false;
292  if(a_from.axis_z().bins()!=a_to.axis_y().bins()) return false;
293 
294  typedef typename H2::hd_t hd_t;
295  hd_t hdata = a_to.dac();
296 
297  bn_t aibin,ajbin,aoffset,offset,ibin;
298 
299  bn_t ayoffset = hdata.m_axes[1].m_offset;
300  bn_t yoffset = a_from.axis_y().m_offset;
301  bn_t zoffset = a_from.axis_z().m_offset;
302 
303  bn_t axbins = hdata.m_axes[0].bins()+2;
304  bn_t aybins = hdata.m_axes[1].bins()+2;
305 
306  typedef typename H3::num_entries_t TN;
307  typedef typename H3::weight_t TW;
308  typedef typename H3::coordinate_t TC;
309 
310  const std::vector<TN>& af_bin_entries = a_from.bins_entries();
311  const std::vector<TW>& af_bin_Sw = a_from.bins_sum_w();
312  const std::vector<TW>& af_bin_Sw2 = a_from.bins_sum_w2();
313  const std::vector< std::vector<TC> >& af_bin_Sxw = a_from.bins_sum_xw();
314  const std::vector< std::vector<TC> >& af_bin_Sx2w = a_from.bins_sum_x2w();
315 
316  // Fill also the outflow.
317  for(aibin=0;aibin<axbins;aibin++) {
318  for(ajbin=0;ajbin<aybins;ajbin++) {
319  //offset2D = ibin + jbin * m_axes[1].m_offset
320  aoffset = aibin + ajbin * ayoffset;
321  for(ibin=ibeg;ibin<=iend;ibin++) {
322  //offset3D = ibin + jbin * m_axes[1].m_offset + kbin*m_axes[2].m_offset;
323  // hdata booked with y-z then :
324  offset = ibin + aibin * yoffset + ajbin * zoffset;
325 
326  // Bin :
327  hdata.m_bin_entries[aoffset] += af_bin_entries[offset];
328  hdata.m_bin_Sw[aoffset] += af_bin_Sw[offset];
329  hdata.m_bin_Sw2[aoffset] += af_bin_Sw2[offset];
330  hdata.m_bin_Sxw[aoffset][0] += af_bin_Sxw[offset][1];
331  hdata.m_bin_Sxw[aoffset][1] += af_bin_Sxw[offset][2];
332  hdata.m_bin_Sx2w[aoffset][0] += af_bin_Sx2w[offset][1];
333  hdata.m_bin_Sx2w[aoffset][1] += af_bin_Sx2w[offset][2];
334  }
335  }
336  }
337 
338  hdata.m_in_range_plane_Sxyw.assign(a_to.number_of_planes(),0); //ill-defined.
339 
340  hdata.update_fast_getters();
341  a_to.copy_from_data(hdata);
342  return true;
343 }
344 
345 template <class H3,class H2>
346 inline bool fill_slice_xy(const H3& a_from,int aKbeg,int aKend,H2& a_to) {
347 
348  if(!a_from.dimension()) return false;
349 
350  typedef typename H3::bn_t bn_t;
351 
352  bn_t kbeg;
353  if(!a_from.axis_z().in_range_to_absolute_index(aKbeg,kbeg)) return false;
354  bn_t kend;
355  if(!a_from.axis_z().in_range_to_absolute_index(aKend,kend)) return false;
356  if(kbeg>kend) return false;
357 
358  if(a_from.axis_x().bins()!=a_to.axis_x().bins()) return false;
359  if(a_from.axis_y().bins()!=a_to.axis_y().bins()) return false;
360 
361  typedef typename H2::hd_t hd_t;
362  hd_t hdata = a_to.dac();
363 
364  bn_t kbin;
365  bn_t aibin,ajbin,aoffset,offset;
366 
367  bn_t ayoffset = hdata.m_axes[1].m_offset;
368  bn_t yoffset = a_from.axis_y().m_offset;
369  bn_t zoffset = a_from.axis_z().m_offset;
370 
371  bn_t axbins = hdata.m_axes[0].bins()+2;
372  bn_t aybins = hdata.m_axes[1].bins()+2;
373 
374  typedef typename H3::num_entries_t TN;
375  typedef typename H3::weight_t TW;
376  typedef typename H3::coordinate_t TC;
377 
378  const std::vector<TN>& af_bin_entries = a_from.bins_entries();
379  const std::vector<TW>& af_bin_Sw = a_from.bins_sum_w();
380  const std::vector<TW>& af_bin_Sw2 = a_from.bins_sum_w2();
381  const std::vector< std::vector<TC> >& af_bin_Sxw = a_from.bins_sum_xw();
382  const std::vector< std::vector<TC> >& af_bin_Sx2w = a_from.bins_sum_x2w();
383 
384  // Fill also the outflow.
385  for(aibin=0;aibin<axbins;aibin++) {
386  for(ajbin=0;ajbin<aybins;ajbin++) {
387  //offset2D = ibin + jbin * m_axes[1].m_offset
388  aoffset = aibin + ajbin * ayoffset;
389  for(kbin=kbeg;kbin<=kend;kbin++) {
390  //offset3D = ibin + jbin * m_axes[1].m_offset + kbin*m_axes[2].m_offset;
391  // hdata booked with x-y then :
392  offset = aibin + ajbin * yoffset + kbin * zoffset;
393 
394  // Bin :
395  hdata.m_bin_entries[aoffset] += af_bin_entries[offset];
396  hdata.m_bin_Sw[aoffset] += af_bin_Sw[offset];
397  hdata.m_bin_Sw2[aoffset] += af_bin_Sw2[offset];
398  hdata.m_bin_Sxw[aoffset][0] += af_bin_Sxw[offset][0];
399  hdata.m_bin_Sxw[aoffset][1] += af_bin_Sxw[offset][1];
400  hdata.m_bin_Sx2w[aoffset][0] += af_bin_Sx2w[offset][0];
401  hdata.m_bin_Sx2w[aoffset][1] += af_bin_Sx2w[offset][1];
402  }
403  }
404  }
405 
406  hdata.m_in_range_plane_Sxyw.assign(a_to.number_of_planes(),0); //ill-defined.
407 
408  hdata.update_fast_getters();
409  a_to.copy_from_data(hdata);
410  return true;
411 }
412 
413 template <class H3,class H2>
414 inline bool fill_slice_xz(const H3& a_from,int aJbeg,int aJend,H2& a_to) {
415 
416  if(!a_from.dimension()) return false;
417 
418  typedef typename H3::bn_t bn_t;
419 
420  bn_t jbeg;
421  if(!a_from.axis_y().in_range_to_absolute_index(aJbeg,jbeg)) return false;
422  bn_t jend;
423  if(!a_from.axis_y().in_range_to_absolute_index(aJend,jend)) return false;
424  if(jbeg>jend) return false;
425 
426  if(a_from.axis_x().bins()!=a_to.axis_x().bins()) return false;
427  if(a_from.axis_z().bins()!=a_to.axis_y().bins()) return false;
428 
429  typedef typename H2::hd_t hd_t;
430  hd_t hdata = a_to.dac();
431 
432  bn_t aibin,ajbin,aoffset,offset,jbin;
433 
434  bn_t ayoffset = hdata.m_axes[1].m_offset;
435  bn_t yoffset = a_from.axis_y().m_offset;
436  bn_t zoffset = a_from.axis_z().m_offset;
437 
438  bn_t axbins = hdata.m_axes[0].bins()+2;
439  bn_t aybins = hdata.m_axes[1].bins()+2;
440 
441  typedef typename H3::num_entries_t TN;
442  typedef typename H3::weight_t TW;
443  typedef typename H3::coordinate_t TC;
444 
445  const std::vector<TN>& af_bin_entries = a_from.bins_entries();
446  const std::vector<TW>& af_bin_Sw = a_from.bins_sum_w();
447  const std::vector<TW>& af_bin_Sw2 = a_from.bins_sum_w2();
448  const std::vector< std::vector<TC> >& af_bin_Sxw = a_from.bins_sum_xw();
449  const std::vector< std::vector<TC> >& af_bin_Sx2w = a_from.bins_sum_x2w();
450 
451  // Fill also the outflow.
452  for(aibin=0;aibin<axbins;aibin++) {
453  for(ajbin=0;ajbin<aybins;ajbin++) {
454  //offset2D = ibin + jbin * m_axes[1].m_offset
455  aoffset = aibin + ajbin * ayoffset;
456  for(jbin=jbeg;jbin<=jend;jbin++) {
457  //offset3D = ibin + jbin * m_axes[1].m_offset + kbin*m_axes[2].m_offset;
458  // hdata booked with x-z then :
459  offset = aibin + jbin * yoffset + ajbin * zoffset;
460 
461  // Bin :
462  hdata.m_bin_entries[aoffset] += af_bin_entries[offset];
463  hdata.m_bin_Sw[aoffset] += af_bin_Sw[offset];
464  hdata.m_bin_Sw2[aoffset] += af_bin_Sw2[offset];
465  hdata.m_bin_Sxw[aoffset][0] += af_bin_Sxw[offset][0];
466  hdata.m_bin_Sxw[aoffset][1] += af_bin_Sxw[offset][2];
467  hdata.m_bin_Sx2w[aoffset][0] += af_bin_Sx2w[offset][0];
468  hdata.m_bin_Sx2w[aoffset][1] += af_bin_Sx2w[offset][2];
469  }
470  }
471  }
472 
473  hdata.m_in_range_plane_Sxyw.assign(a_to.number_of_planes(),0); //ill-defined.
474 
475  hdata.update_fast_getters();
476  a_to.copy_from_data(hdata);
477  return true;
478 }
479 
480 template <class H3,class H2>
481 inline H2* slice_xy(const H3& a_from,int aKbeg,int aKend,const std::string& a_title) {
482  H2* slice = new H2(a_title,
483  a_from.axis_x().bins(),a_from.axis_x().lower_edge(),a_from.axis_x().upper_edge(),
484  a_from.axis_y().bins(),a_from.axis_y().lower_edge(),a_from.axis_y().upper_edge());
485  if(!fill_slice_xy(a_from,aKbeg,aKend,*slice)) {delete slice;return 0;}
486  return slice;
487 }
488 
489 template <class H3,class H2>
490 inline H2* slice_yz(const H3& a_from,int aIbeg,int aIend,const std::string& a_title) {
491  H2* slice = new H2(a_title,
492  a_from.axis_y().bins(),a_from.axis_y().lower_edge(),a_from.axis_y().upper_edge(),
493  a_from.axis_z().bins(),a_from.axis_z().lower_edge(),a_from.axis_z().upper_edge());
494  if(!fill_slice_yz(a_from,aIbeg,aIend,*slice)) {delete slice;return 0;}
495  return slice;
496 }
497 
498 template <class H3,class H2>
499 inline H2* slice_xz(const H3& a_from,int aJbeg,int aJend,const std::string& a_title) {
500  H2* slice = new H2(a_title,
501  a_from.axis_x().bins(),a_from.axis_x().lower_edge(),a_from.axis_x().upper_edge(),
502  a_from.axis_z().bins(),a_from.axis_z().lower_edge(),a_from.axis_z().upper_edge());
503  if(!fill_slice_xz(a_from,aJbeg,aJend,*slice)) {delete slice;return 0;}
504  return slice;
505 }
506 
507 }}
508 
509 #endif
tools::histo::fill_slice_xz
bool fill_slice_xz(const H3 &a_from, int aJbeg, int aJend, H2 &a_to)
Definition: slice:414
tools::histo::axis_UNDERFLOW_BIN
@ axis_UNDERFLOW_BIN
Definition: axis:13
tools::histo::slice_xz
H2 * slice_xz(const H3 &a_from, int aJbeg, int aJend, const std::string &a_title)
Definition: slice:499
tools::histo::fill_profile_y
bool fill_profile_y(const H2 &a_from, int aIbeg, int aIend, P1 &a_to)
Definition: slice:216
tools::histo::fill_slice_yz
bool fill_slice_yz(const H3 &a_from, int aIbeg, int aIend, H2 &a_to)
h3 -> h2 ////////////////////////////////////////////////////////////////////
Definition: slice:279
tools::histo::fill_slice_x
bool fill_slice_x(const H2 &a_from, int aJbeg, int aJend, H1 &a_to)
h2 -> h1 ////////////////////////////////////////////////////////////////////
Definition: slice:17
tools::histo::fill_slice_xy
bool fill_slice_xy(const H3 &a_from, int aKbeg, int aKend, H2 &a_to)
Definition: slice:346
tools::histo::axis_OVERFLOW_BIN
@ axis_OVERFLOW_BIN
Definition: axis:13
tools::histo::projection_y
H1 * projection_y(const H2 &a_from, const std::string &a_title)
Definition: slice:148
axis
tools::histo::slice_yz
H2 * slice_yz(const H3 &a_from, int aIbeg, int aIend, const std::string &a_title)
Definition: slice:490
tools::histo::fill_slice_y
bool fill_slice_y(const H2 &a_from, int aIbeg, int aIend, H1 &a_to)
Definition: slice:85
tools::histo::slice_xy
H2 * slice_xy(const H3 &a_from, int aKbeg, int aKend, const std::string &a_title)
Definition: slice:481
tools::histo::slice_y
H1 * slice_y(const H2 &a_from, int aIbeg, int aIend, const std::string &a_title)
Definition: slice:141
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::histo::projection_x
H1 * projection_x(const H2 &a_from, const std::string &a_title)
Definition: slice:80
tools::histo::slice_x
H1 * slice_x(const H2 &a_from, int aJbeg, int aJend, const std::string &a_title)
Definition: slice:73
tools::histo::fill_profile_x
bool fill_profile_x(const H2 &a_from, int aJbeg, int aJend, P1 &a_to)
h2 -> p1 ////////////////////////////////////////////////////////////////////
Definition: slice:157