| The Gaudi Framework v32r1 (f65d50dc)

HistoDecorator.cpp
Go to the documentation of this file.
1 // ============================================================================
2 // Include files
3 // ============================================================================
4 // GaudiAlg
5 // ============================================================================
6 #include "GaudiAlg/GaudiHistoAlg.h"
7 #include "GaudiAlg/GaudiHistoTool.h"
8 // ============================================================================
9 // GaudiPython
10 // ============================================================================
11 #include "GaudiPython/HistoDecorator.h"
12 #include "GaudiPython/Vector.h"
13 // ============================================================================
19 // ============================================================================
20 /* "plot"(book&fill) a sequence of data from the vector (implicit loop)
21 * (Expected to be more efficient)
22 * @param algo the algorithm
23 * @param data data
24 * @param title histogram title
25 * @param low low edge
26 * @param high high edge
27 * @param bins number of bins
28 */
29 // ============================================================================
30 AIDA::IHistogram1D* GaudiPython::HistoDecorator::plot1D( const GaudiHistoAlg& algo, const double data,
31 const std::string& title, const double low, const double high,
32 const unsigned long bins ) {
33 return algo.plot1D( data, title, low, high, bins );
34 }
35 // ============================================================================
36 /* "plot"(book&fill) a sequence of data from the vector (implicit loop)
37 * (Expected to be more efficient)
38 * @param algo the algorithm
39 * @param data data
40 * @param ID histogram ID
41 * @param title histogram title
42 * @param low low edge
43 * @param high high edge
44 * @param bins number of bins
45 */
46 // ============================================================================
47 AIDA::IHistogram1D* GaudiPython::HistoDecorator::plot1D( const GaudiHistoAlg& algo, const double data,
48 const GaudiAlg::HistoID& ID, const std::string& title,
49 const double low, const double high,
50 const unsigned long bins ) {
51 return algo.plot1D( data, ID, title, low, high, bins );
52 }
53 // ============================================================================
54 /* "plot"(book&fill) a sequence of data from the vector (implicit loop)
55 * (Expected to be more efficient)
56 * @param algo the algorithm
57 * @param data data
58 * @param ID histogram ID
59 * @param title histogram title
60 * @param low low edge
61 * @param high high edge
62 * @param bins number of bins
63 */
64 // ============================================================================
65 AIDA::IHistogram1D* GaudiPython::HistoDecorator::plot1D( const GaudiHistoAlg& algo, const double data, const long ID,
66 const std::string& title, const double low, const double high,
67 const unsigned long bins ) {
68 return algo.plot1D( data, ID, title, low, high, bins );
69 }
70 // ============================================================================
71 /* "plot"(book&fill) a sequence of data from the vector (implicit loop)
72 * (Expected to be more efficient)
73 * @param algo the algorithm
74 * @param data data
75 * @param ID histogram ID
76 * @param title histogram title
77 * @param low low edge
78 * @param high high edge
79 * @param bins number of bins
80 */
81 // ============================================================================
82 AIDA::IHistogram1D* GaudiPython::HistoDecorator::plot1D( const GaudiHistoAlg& algo, const double data,
83 const std::string& ID, const std::string& title,
84 const double low, const double high,
85 const unsigned long bins ) {
86 return algo.plot1D( data, ID, title, low, high, bins );
87 }
88 // ============================================================================
89 /* "plot"(book&fill) a sequence of data from the vector (implicit loop)
90 * (Expected to be more efficient)
91 * @param algo the algorithm
92 * @param data vector of data
93 * @param title histogram title
94 * @param low low edge
95 * @param high high edge
96 * @param bins number of bins
97 */
98 // ============================================================================
99 AIDA::IHistogram1D* GaudiPython::HistoDecorator::plot1D( const GaudiHistoAlg& algo, const GaudiPython::Vector& data,
100 const std::string& title, const double low, const double high,
101 const unsigned long bins ) {
102 return algo.plot( GaudiPython::_identity(), data.begin(), data.end(), title, low, high, bins );
103 }
104 // ============================================================================
105 /* "plot"(book&fill) a sequence of data from the vector (implicit loop)
106 * (Expected to be more efficient)
107 * @param algo the algorithm
108 * @param data vector of data
109 * @param ID histogram ID
110 * @param title histogram title
111 * @param low low edge
112 * @param high high edge
113 * @param bins number of bins
114 */
115 // ============================================================================
116 AIDA::IHistogram1D* GaudiPython::HistoDecorator::plot1D( const GaudiHistoAlg& algo, const GaudiPython::Vector& data,
117 const GaudiAlg::HistoID& ID, const std::string& title,
118 const double low, const double high,
119 const unsigned long bins ) {
120 return algo.plot( GaudiPython::_identity(), data.begin(), data.end(), ID, title, low, high, bins );
121 }
122 // ============================================================================
123 /* "plot"(book&fill) a sequence of data from the vector (implicit loop)
124 * (Expected to be more efficient)
125 * @param algo the algorithm
126 * @param data vector of data
127 * @param ID histogram ID
128 * @param title histogram title
129 * @param low low edge
130 * @param high high edge
131 * @param bins number of bins
132 */
133 // ============================================================================
134 AIDA::IHistogram1D* GaudiPython::HistoDecorator::plot1D( const GaudiHistoAlg& algo, const GaudiPython::Vector& data,
135 const long ID, const std::string& title, const double low,
136 const double high, const unsigned long bins ) {
137 return algo.plot( GaudiPython::_identity(), data.begin(), data.end(), ID, title, low, high, bins );
138 }
139 // ============================================================================
140 /* "plot"(book&fill) a sequence of data from the vector (implicit loop)
141 * (Expected to be more efficient)
142 * @param algo the algorithm
143 * @param data vector of data
144 * @param ID histogram ID
145 * @param title histogram title
146 * @param low low edge
147 * @param high high edge
148 * @param bins number of bins
149 */
150 // ============================================================================
151 AIDA::IHistogram1D* GaudiPython::HistoDecorator::plot1D( const GaudiHistoAlg& algo, const GaudiPython::Vector& data,
152 const std::string& ID, const std::string& title,
153 const double low, const double high,
154 const unsigned long bins ) {
155 return algo.plot( GaudiPython::_identity(), data.begin(), data.end(), ID, title, low, high, bins );
156 }
157 // ============================================================================
158 /* fill the 2D histogram (book on demand)
159 * @param valueX x value to be filled
160 * @param valueY y value to be filled
161 * @param title histogram title (must be unique within the algorithm)
162 * @param lowX low x limit for histogram
163 * @param highX high x limit for histogram
164 * @param lowY low y limit for histogram
165 * @param highY high y limit for histogram
166 * @param binsX number of bins in x
167 * @param binsY number of bins in y
168 * @param weight weight
169 * @return pointer to AIDA 2D histogram
170 */
171 // ============================================================================
172 AIDA::IHistogram2D* GaudiPython::HistoDecorator::plot2D( const GaudiHistoAlg& algo, const double valueX,
173 const double valueY, const std::string& title,
174 const double lowX, const double highX, const double lowY,
175 const double highY, const unsigned long binsX,
176 const unsigned long binsY, const double weight ) {
177 return algo.plot2D( valueX, valueY, title, lowX, highX, lowY, highY, binsX, binsY, weight );
178 }
179 // ============================================================================
194 // ============================================================================
195 AIDA::IHistogram2D* GaudiPython::HistoDecorator::plot2D( const GaudiHistoAlg& algo, const double valueX,
196 const double valueY, const GaudiAlg::HistoID& ID,
197 const std::string& title, const double lowX,
198 const double highX, const double lowY, const double highY,
199 const unsigned long binsX, const unsigned long binsY,
200 const double weight ) {
201 return algo.plot2D( valueX, valueY, ID, title, lowX, highX, lowY, highY, binsX, binsY, weight );
202 }
203 // ============================================================================
204 /* fill the 2D histogram (book on demand)
205 * @param valueX x value to be filled
206 * @param valueY y value to be filled
207 * @param ID Histogram ID to use
208 * @param title histogram title (must be unique within the algorithm)
209 * @param lowX low x limit for histogram
210 * @param highX high x limit for histogram
211 * @param lowY low y limit for histogram
212 * @param highY high y limit for histogram
213 * @param binsX number of bins in x
214 * @param binsY number of bins in y
215 * @param weight weight
216 * @return pointer to AIDA 2D histogram
217 */
218 // ============================================================================
219 AIDA::IHistogram2D* GaudiPython::HistoDecorator::plot2D( const GaudiHistoAlg& algo, const double valueX,
220 const double valueY, const long ID, const std::string& title,
221 const double lowX, const double highX, const double lowY,
222 const double highY, const unsigned long binsX,
223 const unsigned long binsY, const double weight ) {
224 return algo.plot2D( valueX, valueY, ID, title, lowX, highX, lowY, highY, binsX, binsY, weight );
225 }
226 // ============================================================================
227 /* fill the 2D histogram (book on demand)
228 * @param valueX x value to be filled
229 * @param valueY y value to be filled
230 * @param ID Histogram ID to use
231 * @param title histogram title (must be unique within the algorithm)
232 * @param lowX low x limit for histogram
233 * @param highX high x limit for histogram
234 * @param lowY low y limit for histogram
235 * @param highY high y limit for histogram
236 * @param binsX number of bins in x
237 * @param binsY number of bins in y
238 * @param weight weight
239 * @return pointer to AIDA 2D histogram
240 */
241 // ============================================================================
242 AIDA::IHistogram2D* GaudiPython::HistoDecorator::plot2D( const GaudiHistoAlg& algo, const double valueX,
243 const double valueY, const std::string& ID,
244 const std::string& title, const double lowX,
245 const double highX, const double lowY, const double highY,
246 const unsigned long binsX, const unsigned long binsY,
247 const double weight ) {
248 return algo.plot2D( valueX, valueY, ID, title, lowX, highX, lowY, highY, binsX, binsY, weight );
249 }
250 // ============================================================================
251 /* fill the 3D histogram (book on demand)
252 * @param valueX x value to be filled
253 * @param valueY y value to be filled
254 * @param valueZ z value to be filled
255 * @param title histogram title (must be unique within the algorithm)
256 * @param lowX low x limit for histogram
257 * @param highX high x limit for histogram
258 * @param lowY low y limit for histogram
259 * @param highY high y limit for histogram
260 * @param lowZ low z limit for histogram
261 * @param highZ high z limit for histogram
262 * @param binsX number of bins in x
263 * @param binsY number of bins in y
264 * @param binsZ number of bins in z
265 * @param weight weight
266 * @return pointer to AIDA 3D histogram
267 */
268 // ============================================================================
269 AIDA::IHistogram3D* GaudiPython::HistoDecorator::plot3D(
270 const GaudiHistoAlg& algo, const double valueX, const double valueY, const double valueZ, const std::string& title,
271 const double lowX, const double highX, const double lowY, const double highY, const double lowZ, const double highZ,
272 const unsigned long binsX, const unsigned long binsY, const unsigned long binsZ, const double weight ) {
273 return algo.plot3D( valueX, valueY, valueZ, title, lowX, highX, lowY, highY, lowZ, highZ, binsX, binsY, binsZ,
274 weight );
275 }
276 // ============================================================================
277 /* fill the 3D histogram (book on demand)
278 * @param valueX x value to be filled
279 * @param valueY y value to be filled
280 * @param valueZ z value to be filled
281 * @param title histogram title (must be unique within the algorithm)
282 * @param lowX low x limit for histogram
283 * @param highX high x limit for histogram
284 * @param lowY low y limit for histogram
285 * @param highY high y limit for histogram
286 * @param lowZ low z limit for histogram
287 * @param highZ high z limit for histogram
288 * @param binsX number of bins in x
289 * @param binsY number of bins in y
290 * @param binsZ number of bins in z
291 * @param weight weight
292 * @return pointer to AIDA 3D histogram
293 */
294 // ============================================================================
295 AIDA::IHistogram3D* GaudiPython::HistoDecorator::plot3D( const GaudiHistoAlg& algo, const double valueX,
296 const double valueY, const double valueZ,
297 const GaudiAlg::HistoID& ID, const std::string& title,
298 const double lowX, const double highX, const double lowY,
299 const double highY, const double lowZ, const double highZ,
300 const unsigned long binsX, const unsigned long binsY,
301 const unsigned long binsZ, const double weight ) {
302 return algo.plot3D( valueX, valueY, valueZ, ID, title, lowX, highX, lowY, highY, lowZ, highZ, binsX, binsY, binsZ,
303 weight );
304 }
305 // ============================================================================
306 /* fill the 3D histogram (book on demand)
307 * @param valueX x value to be filled
308 * @param valueY y value to be filled
309 * @param valueZ z value to be filled
310 * @param title histogram title (must be unique within the algorithm)
311 * @param lowX low x limit for histogram
312 * @param highX high x limit for histogram
313 * @param lowY low y limit for histogram
314 * @param highY high y limit for histogram
315 * @param lowZ low z limit for histogram
316 * @param highZ high z limit for histogram
317 * @param binsX number of bins in x
318 * @param binsY number of bins in y
319 * @param binsZ number of bins in z
320 * @param weight weight
321 * @return pointer to AIDA 3D histogram
322 */
323 // ============================================================================
324 AIDA::IHistogram3D* GaudiPython::HistoDecorator::plot3D( const GaudiHistoAlg& algo, const double valueX,
325 const double valueY, const double valueZ, const long ID,
326 const std::string& title, const double lowX,
327 const double highX, const double lowY, const double highY,
328 const double lowZ, const double highZ,
329 const unsigned long binsX, const unsigned long binsY,
330 const unsigned long binsZ, const double weight ) {
331 return algo.plot3D( valueX, valueY, valueZ, ID, title, lowX, highX, lowY, highY, lowZ, highZ, binsX, binsY, binsZ,
332 weight );
333 }
334 // ============================================================================
335 /* fill the 3D histogram (book on demand)
336 * @param valueX x value to be filled
337 * @param valueY y value to be filled
338 * @param valueZ z value to be filled
339 * @param title histogram title (must be unique within the algorithm)
340 * @param lowX low x limit for histogram
341 * @param highX high x limit for histogram
342 * @param lowY low y limit for histogram
343 * @param highY high y limit for histogram
344 * @param lowZ low z limit for histogram
345 * @param highZ high z limit for histogram
346 * @param binsX number of bins in x
347 * @param binsY number of bins in y
348 * @param binsZ number of bins in z
349 * @param weight weight
350 * @return pointer to AIDA 3D histogram
351 */
352 // ============================================================================
353 AIDA::IHistogram3D* GaudiPython::HistoDecorator::plot3D( const GaudiHistoAlg& algo, const double valueX,
354 const double valueY, const double valueZ,
355 const std::string& ID, const std::string& title,
356 const double lowX, const double highX, const double lowY,
357 const double highY, const double lowZ, const double highZ,
358 const unsigned long binsX, const unsigned long binsY,
359 const unsigned long binsZ, const double weight ) {
360 return algo.plot3D( valueX, valueY, valueZ, ID, title, lowX, highX, lowY, highY, lowZ, highZ, binsX, binsY, binsZ,
361 weight );
362 }
363 // ========================================================================
364 // 1D-profiles: by title
365 // ========================================================================
366 AIDA::IProfile1D* GaudiPython::HistoDecorator::profile1D( const GaudiHistoAlg& algo, const double valueX,
367 const double valueY, const std::string& title,
368 const double lowX, const double highX,
369 const unsigned long binsX, const std::string& opt,
370 const double lowY, const double highY, const double weight ) {
371 return algo.profile1D( valueX, valueY, title, lowX, highX, binsX, opt, lowY, highY, weight );
372 }
373 // ========================================================================
374 // 1D-profiles: by generic ID
375 // ========================================================================
376 AIDA::IProfile1D* GaudiPython::HistoDecorator::profile1D( const GaudiHistoAlg& algo, const double valueX,
377 const double valueY, const GaudiAlg::HistoID& ID,
378 const std::string& title, const double lowX,
379 const double highX, const unsigned long binsX,
380 const std::string& opt, const double lowY, const double highY,
381 const double weight ) {
382 return algo.profile1D( valueX, valueY, ID, title, lowX, highX, binsX, opt, lowY, highY, weight );
383 }
384 // ========================================================================
385 // 1D-profiles: by numeric ID
386 // ========================================================================
387 AIDA::IProfile1D* GaudiPython::HistoDecorator::profile1D( const GaudiHistoAlg& algo, const double valueX,
388 const double valueY, const long ID, const std::string& title,
389 const double lowX, const double highX,
390 const unsigned long binsX, const std::string& opt,
391 const double lowY, const double highY, const double weight ) {
392 return algo.profile1D( valueX, valueY, ID, title, lowX, highX, binsX, opt, lowY, highY, weight );
393 }
394 // ========================================================================
395 // 1D-profiles: by string ID
396 // ========================================================================
397 AIDA::IProfile1D* GaudiPython::HistoDecorator::profile1D( const GaudiHistoAlg& algo, const double valueX,
398 const double valueY, const std::string& ID,
399 const std::string& title, const double lowX,
400 const double highX, const unsigned long binsX,
401 const std::string& opt, const double lowY, const double highY,
402 const double weight ) {
403 return algo.profile1D( valueX, valueY, ID, title, lowX, highX, binsX, opt, lowY, highY, weight );
404 }
405 // ========================================================================
406 // 2D-profiles: by title
407 // ========================================================================
408 AIDA::IProfile2D* GaudiPython::HistoDecorator::profile2D( const GaudiHistoAlg& algo, const double valueX,
409 const double valueY, const double valueZ,
410 const std::string& title, const double lowX,
411 const double highX, const double lowY, const double highY,
412 const unsigned long binsX, const unsigned long binsY,
413 const double weight ) {
414 return algo.profile2D( valueX, valueY, valueZ, title, lowX, highX, lowY, highY, binsX, binsY, weight );
415 }
416 // ========================================================================
417 // 2D-profiles: by generic ID
418 // ========================================================================
419 AIDA::IProfile2D* GaudiPython::HistoDecorator::profile2D( const GaudiHistoAlg& algo, const double valueX,
420 const double valueY, const double valueZ,
421 const GaudiAlg::HistoID& ID, const std::string& title,
422 const double lowX, const double highX, const double lowY,
423 const double highY, const unsigned long binsX,
424 const unsigned long binsY, const double weight ) {
425 return algo.profile2D( valueX, valueY, valueZ, ID, title, lowX, highX, lowY, highY, binsX, binsY, weight );
426 }
427 // ========================================================================
428 // 2D-profiles: by numeric ID
429 // ========================================================================
430 AIDA::IProfile2D* GaudiPython::HistoDecorator::profile2D( const GaudiHistoAlg& algo, const double valueX,
431 const double valueY, const double valueZ, const long ID,
432 const std::string& title, const double lowX,
433 const double highX, const double lowY, const double highY,
434 const unsigned long binsX, const unsigned long binsY,
435 const double weight ) {
436 return algo.profile2D( valueX, valueY, valueZ, ID, title, lowX, highX, lowY, highY, binsX, binsY, weight );
437 }
438 // ========================================================================
439 // 2D-profiles: by string ID
440 // ========================================================================
441 AIDA::IProfile2D* GaudiPython::HistoDecorator::profile2D( const GaudiHistoAlg& algo, const double valueX,
442 const double valueY, const double valueZ,
443 const std::string& ID, const std::string& title,
444 const double lowX, const double highX, const double lowY,
445 const double highY, const unsigned long binsX,
446 const unsigned long binsY, const double weight ) {
447 return algo.profile2D( valueX, valueY, valueZ, ID, title, lowX, highX, lowY, highY, binsX, binsY, weight );
448 }
449 // ============================================================================
450 // get all histograms
451 // ============================================================================
452 namespace {
454 // =========================================================================
455 template <typename Container, typename HISTO>
456 size_t fromMap( const Container& a, std::vector<GaudiAlg::ID>& b, std::vector<HISTO>& c ) {
457 b.clear();
458 c.clear();
459 for ( const auto& i : a ) {
460 if ( !i.second ) { continue; }
461 b.push_back( i.first );
462 c.push_back( i.second );
463 }
464 return b.size();
465 }
466 // ==========================================================================
467 } // namespace
468 // ============================================================================
469 size_t GaudiPython::HistoDecorator::_histos_a_( const GaudiHistoAlg* cmp, GaudiPython::HistoDecorator::IDs& ids,
470 GaudiPython::HistoDecorator::Histos1D& histos ) {
471 histos.clear();
472 ids.clear();
473 return cmp ? fromMap( cmp->histo1DMapID(), ids, histos ) : 0;
474 // ==========================================================================
475 }
476 // ============================================================================
477 size_t GaudiPython::HistoDecorator::_histos_t_( const GaudiHistoTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
478 GaudiPython::HistoDecorator::Histos1D& histos ) {
479 histos.clear();
480 ids.clear();
481 return cmp ? fromMap( cmp->histo1DMapID(), ids, histos ) : 0;
482 // ==========================================================================
483 }
484 // ============================================================================
485 size_t GaudiPython::HistoDecorator::_histos_a_( const IAlgorithm* cmp, GaudiPython::HistoDecorator::IDs& ids,
486 GaudiPython::HistoDecorator::Histos1D& histos ) {
487 ids.clear();
488 histos.clear();
489 return cmp ? _histos_a_( dynamic_cast<const GaudiHistoAlg*>( cmp ), ids, histos ) : 0;
490 }
491 // ============================================================================
492 size_t GaudiPython::HistoDecorator::_histos_t_( const IAlgTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
493 GaudiPython::HistoDecorator::Histos1D& histos ) {
494 ids.clear();
495 histos.clear();
496 return cmp ? _histos_t_( dynamic_cast<const GaudiHistoTool*>( cmp ), ids, histos ) : 0;
497 }
498 // ============================================================================
499 // 2D-histograms
500 // ============================================================================
501 size_t GaudiPython::HistoDecorator::_histos_a_( const GaudiHistoAlg* cmp, GaudiPython::HistoDecorator::IDs& ids,
502 GaudiPython::HistoDecorator::Histos2D& histos ) {
503 histos.clear();
504 ids.clear();
505 return cmp ? fromMap( cmp->histo2DMapID(), ids, histos ) : 0;
506 // ==========================================================================
507 }
508 // ============================================================================
509 size_t GaudiPython::HistoDecorator::_histos_t_( const GaudiHistoTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
510 GaudiPython::HistoDecorator::Histos2D& histos ) {
511 histos.clear();
512 ids.clear();
513 return cmp ? fromMap( cmp->histo2DMapID(), ids, histos ) : 0;
514 // ==========================================================================
515 }
516 // ============================================================================
517 size_t GaudiPython::HistoDecorator::_histos_a_( const IAlgorithm* cmp, GaudiPython::HistoDecorator::IDs& ids,
518 GaudiPython::HistoDecorator::Histos2D& histos ) {
519 ids.clear();
520 histos.clear();
521 return cmp ? _histos_a_( dynamic_cast<const GaudiHistoAlg*>( cmp ), ids, histos ) : 0;
522 }
523 // ============================================================================
524 size_t GaudiPython::HistoDecorator::_histos_t_( const IAlgTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
525 GaudiPython::HistoDecorator::Histos2D& histos ) {
526 ids.clear();
527 histos.clear();
528 return cmp ? _histos_t_( dynamic_cast<const GaudiHistoTool*>( cmp ), ids, histos ) : 0;
529 }
530 // ============================================================================
531 // 3D-histograms
532 // ============================================================================
533 size_t GaudiPython::HistoDecorator::_histos_a_( const GaudiHistoAlg* cmp, GaudiPython::HistoDecorator::IDs& ids,
534 GaudiPython::HistoDecorator::Histos3D& histos ) {
535 histos.clear();
536 ids.clear();
537 return cmp ? fromMap( cmp->histo3DMapID(), ids, histos ) : 0;
538 // ==========================================================================
539 }
540 // ============================================================================
541 size_t GaudiPython::HistoDecorator::_histos_t_( const GaudiHistoTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
542 GaudiPython::HistoDecorator::Histos3D& histos ) {
543 histos.clear();
544 ids.clear();
545 return cmp ? fromMap( cmp->histo3DMapID(), ids, histos ) : 0;
546 // ==========================================================================
547 }
548 // ============================================================================
549 size_t GaudiPython::HistoDecorator::_histos_a_( const IAlgorithm* cmp, GaudiPython::HistoDecorator::IDs& ids,
550 GaudiPython::HistoDecorator::Histos3D& histos ) {
551 ids.clear();
552 histos.clear();
553 return cmp ? _histos_a_( dynamic_cast<const GaudiHistoAlg*>( cmp ), ids, histos ) : 0;
554 }
555 // ============================================================================
556 size_t GaudiPython::HistoDecorator::_histos_t_( const IAlgTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
557 GaudiPython::HistoDecorator::Histos3D& histos ) {
558 ids.clear();
559 histos.clear();
560 return cmp ? _histos_t_( dynamic_cast<const GaudiHistoTool*>( cmp ), ids, histos ) : 0;
561 }
562 // ============================================================================
563 // 1D-profiles
564 // ============================================================================
565 size_t GaudiPython::HistoDecorator::_histos_a_( const GaudiHistoAlg* cmp, GaudiPython::HistoDecorator::IDs& ids,
566 GaudiPython::HistoDecorator::Profiles1D& histos ) {
567 histos.clear();
568 ids.clear();
569 return cmp ? fromMap( cmp->profile1DMapID(), ids, histos ) : 0;
570 // ==========================================================================
571 }
572 // ============================================================================
573 size_t GaudiPython::HistoDecorator::_histos_t_( const GaudiHistoTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
574 GaudiPython::HistoDecorator::Profiles1D& histos ) {
575 histos.clear();
576 ids.clear();
577 return cmp ? fromMap( cmp->profile1DMapID(), ids, histos ) : 0;
578 // ==========================================================================
579 }
580 // ============================================================================
581 size_t GaudiPython::HistoDecorator::_histos_a_( const IAlgorithm* cmp, GaudiPython::HistoDecorator::IDs& ids,
582 GaudiPython::HistoDecorator::Profiles1D& histos ) {
583 ids.clear();
584 histos.clear();
585 return cmp ? _histos_a_( dynamic_cast<const GaudiHistoAlg*>( cmp ), ids, histos ) : 0;
586 }
587 // ============================================================================
588 size_t GaudiPython::HistoDecorator::_histos_t_( const IAlgTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
589 GaudiPython::HistoDecorator::Profiles1D& histos ) {
590 ids.clear();
591 histos.clear();
592 return cmp ? _histos_t_( dynamic_cast<const GaudiHistoTool*>( cmp ), ids, histos ) : 0;
593 }
594 // ============================================================================
595 // 2D-profiles
596 // ============================================================================
597 size_t GaudiPython::HistoDecorator::_histos_a_( const GaudiHistoAlg* cmp, GaudiPython::HistoDecorator::IDs& ids,
598 GaudiPython::HistoDecorator::Profiles2D& histos ) {
599 histos.clear();
600 ids.clear();
601 return cmp ? fromMap( cmp->profile2DMapID(), ids, histos ) : 0;
602 // ==========================================================================
603 }
604 // ============================================================================
605 size_t GaudiPython::HistoDecorator::_histos_t_( const GaudiHistoTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
606 GaudiPython::HistoDecorator::Profiles2D& histos ) {
607 histos.clear();
608 ids.clear();
609 return cmp ? fromMap( cmp->profile2DMapID(), ids, histos ) : 0;
610 // ==========================================================================
611 }
612 // ============================================================================
613 size_t GaudiPython::HistoDecorator::_histos_a_( const IAlgorithm* cmp, GaudiPython::HistoDecorator::IDs& ids,
614 GaudiPython::HistoDecorator::Profiles2D& histos ) {
615 ids.clear();
616 histos.clear();
617 return cmp ? _histos_a_( dynamic_cast<const GaudiHistoAlg*>( cmp ), ids, histos ) : 0;
618 }
619 // ============================================================================
620 size_t GaudiPython::HistoDecorator::_histos_t_( const IAlgTool* cmp, GaudiPython::HistoDecorator::IDs& ids,
621 GaudiPython::HistoDecorator::Profiles2D& histos ) {
622 ids.clear();
623 histos.clear();
624 return cmp ? _histos_t_( dynamic_cast<const GaudiHistoTool*>( cmp ), ids, histos ) : 0;
625 }
626 // ============================================================================
627
628 // ============================================================================
629 // The END
630 // ============================================================================
GaudiPython::HistoDecorator::profile2D
static AIDA::IProfile2D * profile2D(const GaudiHistoAlg &algo, const double valueX, const double valueY, const double valueZ, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const unsigned long binsX=50, const unsigned long binsY=50, const double weight=1.0)
Definition: HistoDecorator.cpp:408
GaudiHistos::plot1D
AIDA::IHistogram1D * plot1D(const double value, const std::string &title, const double low, const double high, const unsigned long bins=100, const double weight=1.0) const
fill the 1D histogram (book on demand)
Definition: GaudiHistos_1DFixedBinning.icpp:103
GaudiPython::_identity
It is here due to 'missing'(?) std::identity.
Definition: Vector.h:27
GaudiHistos::histo3DMapID
const Histo3DMapID & histo3DMapID() const
get access to the map of all 3D histograms index via a ID
Definition: GaudiHistos.h:2548
gaudirun.c
c
Definition: gaudirun.py:487
Vector.h
GaudiHistos::plot
AIDA::IHistogram1D * plot(const double value, const std::string &title, const double low, const double high, const unsigned long bins=100, const double weight=1.0) const
fill the 1D histogram (book on demand)
Definition: GaudiHistos.h:152
GaudiHistos::profile2DMapID
const Profile2DMapID & profile2DMapID() const
get access to the map of 2D profile histograms index via a ID
Definition: GaudiHistos.h:2650
GaudiPython::HistoDecorator::plot1D
static AIDA::IHistogram1D * plot1D(const GaudiHistoAlg &algo, const double data, const std::string &title, const double low, const double high, const unsigned long bins=100)
"plot"(book&fill) a sequence of data from the vector (implicit loop) (Expected to be more efficient)
Definition: HistoDecorator.cpp:30
GaudiPython::HistoDecorator::profile1D
static AIDA::IProfile1D * profile1D(const GaudiHistoAlg &algo, const double valueX, const double valueY, const std::string &title, const double lowX, const double highX, const unsigned long binsX=100, const std::string &opt="", const double lowY=-std::numeric_limits< double >::max(), const double highY=std::numeric_limits< double >::max(), const double weight=1.0)
Definition: HistoDecorator.cpp:366
GaudiHistoTool.h
Header file for class : GaudiHistoTool.
GaudiHistoAlg
Simple class to extend the functionality of class GaudiAlgorithm.
Definition: GaudiHistoAlg.h:37
std::vector::end
T end(T... args)
GaudiHistoTool
Simple class to extend the functionality of class GaudiTool.
Definition: GaudiHistoTool.h:39
GaudiHistos::profile1DMapID
const Profile1DMapID & profile1DMapID() const
get access to the map of 1D profile histograms index via a ID
Definition: GaudiHistos.h:2600
std::string
STL class.
std::vector::push_back
T push_back(T... args)
GaudiHistos::profile2D
AIDA::IProfile2D * profile2D(const double valueX, const double valueY, const double valueZ, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const unsigned long binsX=50, const unsigned long binsY=50, const double weight=1.0) const
fill the 2D profile histogram (book on demand)
Definition: GaudiHistos_2DProfFixedBinning.icpp:103
compareRootHistos.histos
list histos
Definition: compareRootHistos.py:13
std::vector::clear
T clear(T... args)
GaudiHistos::profile1D
AIDA::IProfile1D * profile1D(const double valueX, const double valueY, const std::string &title, const double lowX, const double highX, const unsigned long binsX=100, const std::string &opt="", const double lowY=-std::numeric_limits< double >::max(), const double highY=std::numeric_limits< double >::max(), const double weight=1.0) const
fill the 1D profile histogram (book on demand)
Definition: GaudiHistos_1DProfFixedBinning.icpp:104
IAlgorithm
The IAlgorithm is the interface implemented by the Algorithm base class.
Definition: IAlgorithm.h:28
HistoDecorator.h
GaudiPython::HistoDecorator::plot3D
static AIDA::IHistogram3D * plot3D(const GaudiHistoAlg &algo, const double valueX, const double valueY, const double valueZ, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const double lowZ, const double highZ, const unsigned long binsX=10, const unsigned long binsY=10, const unsigned long binsZ=10, const double weight=1.0)
fill the 3D histogram (book on demand)
Definition: HistoDecorator.cpp:269
GaudiHistos::plot3D
AIDA::IHistogram3D * plot3D(const double valueX, const double valueY, const double valueZ, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const double lowZ, const double highZ, const unsigned long binsX=10, const unsigned long binsY=10, const unsigned long binsZ=10, const double weight=1.0) const
fill the 3D histogram (book on demand)
Definition: GaudiHistos_3DFixedBinning.icpp:111
std::vector::size
T size(T... args)
std::vector< double >
GaudiPython::HistoDecorator::plot2D
static AIDA::IHistogram2D * plot2D(const GaudiHistoAlg &algo, const double valueX, const double valueY, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const unsigned long binsX=50, const unsigned long binsY=50, const double weight=1.0)
fill the 2D histogram (book on demand)
Definition: HistoDecorator.cpp:172
std::vector::begin
T begin(T... args)
IAlgTool
The interface implemented by the AlgTool base class.
Definition: IAlgTool.h:23
GaudiHistoAlg.h
GaudiHistos::histo1DMapID
const Histo1DMapID & histo1DMapID() const
get access to the map of all 1D histograms index via ID
Definition: GaudiHistos.h:2448
GaudiPython::HistoDecorator::_histos_a_
static size_t _histos_a_(const GaudiHistoAlg *cmp, IDs &ids, Histos1D &histos)
Definition: HistoDecorator.cpp:469
GaudiPython::HistoDecorator::_histos_t_
static size_t _histos_t_(const GaudiHistoTool *cmp, IDs &ids, Histos1D &histos)
Definition: HistoDecorator.cpp:477
GaudiAlg::ID
ID class for Histogram and Ntuples.
Definition: GaudiHistoID.h:43
GaudiHistos::histo2DMapID
const Histo2DMapID & histo2DMapID() const
get access to the map of 2D histograms index via ID
Definition: GaudiHistos.h:2498
GaudiHistos::plot2D
AIDA::IHistogram2D * plot2D(const double valueX, const double valueY, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const unsigned long binsX=50, const unsigned long binsY=50, const double weight=1.0) const
fill the 2D histogram (book on demand)
Definition: GaudiHistos_2DFixedBinning.icpp:106