Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
HistogramSvc.h
Go to the documentation of this file.
1 // ============================================================================
2 #ifndef GAUDISVC_HISTOGRAMSVC_H
3 #define GAUDISVC_HISTOGRAMSVC_H 1
4 // ============================================================================
5 // Include Files
6 // ============================================================================
7 // GaudiKernel
8 // ============================================================================
9 #include "GaudiKernel/DataSvc.h"
13 #include "GaudiKernel/IRegistry.h"
14 #include "GaudiKernel/System.h"
15 // ============================================================================
16 // AIDA
17 // ============================================================================
19 #include "AIDA/IAnnotation.h"
20 #include "AIDA/IHistogramFactory.h"
21 // ============================================================================
22 // local (+PI)
23 // ============================================================================
24 #include "Axis.h"
25 #include "HistogramUtility.h"
26 #include "TH1.h"
27 #include "TH2.h"
28 #include "TH3.h"
29 // ============================================================================
30 namespace AIDA {
31  class ICloud1D;
32  class ICloud2D;
33  class ICloud3D;
34 } // namespace AIDA
35 
36 namespace detail {
37  template <class T>
38  static DataObject* cast( T* p ) {
39  DataObject* q = dynamic_cast<DataObject*>( p );
40  if ( !q && p ) { throw std::runtime_error( "HistogramSvc: Unexpected object type." ); }
41  return q;
42  }
43 } // namespace detail
44 
45 // ============================================================================
51 class HistogramSvc : public extends<DataSvc, IHistogramSvc>, virtual public AIDA::IHistogramFactory {
52 
53 private:
54  void not_implemented() const { error() << "Sorry, not yet implemented..." << endmsg; }
55 
56 protected:
57  typedef AIDA::IHistogram3D H3D;
58  typedef AIDA::IProfile2D P2D;
59  typedef AIDA::IBaseHistogram Base;
60 
61  struct Helper {
63  Helper( HistogramSvc* p ) : m_svc( p ) {}
64  template <class A1, class A3>
65  StatusCode retrieve( A1 a1, A3*& a3 ) {
66  DataObject* pObject = nullptr;
67  StatusCode sc = m_svc->retrieveObject( a1, pObject );
68  a3 = dynamic_cast<A3*>( pObject );
69  return sc;
70  }
71  template <class A1, class A2, class A3>
72  StatusCode retrieve( A1 a1, A2 a2, A3*& a3 ) {
73  DataObject* pObject = nullptr;
74  StatusCode sc = m_svc->retrieveObject( a1, a2, pObject );
75  a3 = dynamic_cast<A3*>( pObject );
76  return sc;
77  }
78  template <class A1, class A3>
79  StatusCode find( A1 a1, A3*& a3 ) {
80  DataObject* pObject = nullptr;
81  StatusCode sc = m_svc->findObject( a1, pObject );
82  a3 = dynamic_cast<A3*>( pObject );
83  return sc;
84  }
85  template <class A1, class A2, class A3>
86  StatusCode find( A1 a1, A2 a2, A3*& a3 ) {
87  DataObject* pObject = nullptr;
88  StatusCode sc = m_svc->findObject( a1, a2, pObject );
89  a3 = dynamic_cast<A3*>( pObject );
90  return sc;
91  }
92  template <class R, class S, class T1, class T2>
93  static R* act( R* res, const S& b, void ( T1::*pmf )( const T2*, Double_t ), Double_t scale ) {
94  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
95  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
96  if ( h1 && h2 ) {
97  ( h1->*pmf )( h2, scale );
98  return res;
99  }
100  return nullptr;
101  }
102  template <class R, class S, class T1, class T2>
103  static R* act( R* res, const S& b, Bool_t ( T1::*pmf )( const T2*, Double_t ), Double_t scale ) {
104  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
105  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
106  if ( h1 && h2 ) {
107  ( h1->*pmf )( h2, scale );
108  return res;
109  }
110  return nullptr;
111  }
112  template <class R, class S, class T1, class T2>
113  static R* act( R* res, const S& b, void ( T1::*pmf )( const T2* ) ) {
114  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
115  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
116  if ( h1 && h2 ) {
117  ( h1->*pmf )( h2 );
118  return res;
119  }
120  return nullptr;
121  }
122  template <class R, class S, class T1, class T2>
123  static R* act( R* res, const S& b, Bool_t ( T1::*pmf )( const T2* ) ) {
124  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
125  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
126  if ( h1 && h2 ) {
127  ( h1->*pmf )( h2 );
128  return res;
129  }
130  return nullptr;
131  }
132  };
133 
134 public:
137 
142  HistogramSvc( const std::string& name, ISvcLocator* svc );
143 
145  ~HistogramSvc() override;
146 
152  std::pair<std::string, std::string> i_splitPath( const std::string& full );
153 
157  StatusCode connectInput( const std::string& ident );
158 
159  template <class T>
160  inline T* i_book( DataObject* pPar, const std::string& rel, const std::string& title,
161  const std::pair<DataObject*, T*>& o ) {
162  if ( o.first && registerObject( pPar, rel, (Base*)o.second ).isSuccess() ) return o.second;
163  delete o.first;
164  throw GaudiException( "Cannot book " + System::typeinfoName( typeid( T ) ) + " " + title, "HistogramSvc",
166  }
167 
169  AIDA::IHistogram2D* i_project( const std::string& nameAndTitle, const AIDA::IHistogram3D& h, const std::string& dir );
170 
171 public:
173  StatusCode initialize() override;
175  StatusCode reinitialize() override;
177  StatusCode finalize() override;
178 
180  AIDA::IHistogramFactory* histogramFactory() override { return this; }
181 
182  // ==========================================================================
183  // Book 1D histogram with fix binning
184  // ==========================================================================
201  AIDA::IHistogram1D* book( const std::string& par, const std::string& rel, const std::string& title, int nx,
202  double lowx, double upx ) override;
203 
204  AIDA::IHistogram1D* book( const std::string& par, int hID, const std::string& title, int nx, double lowx,
205  double upx ) override;
206 
207  AIDA::IHistogram1D* book( DataObject* pPar, int hID, const std::string& title, int nx, double lowx,
208  double upx ) override;
209 
210  AIDA::IHistogram1D* book( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
211  double upx ) override;
212 
213  virtual AIDA::IHistogram1D* book( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
214  double lowx, double upx );
215 
216  AIDA::IHistogram1D* book( const std::string& full, const std::string& title, int nx, double lowx,
217  double upx ) override;
218 
219  // ==========================================================================
220  // Book 1D Profile histogram with fix binning
221  // ==========================================================================
238  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title, int nx,
239  double lowx, double upx, const std::string& opt ) override;
240 
241  AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title, int nx, double lowx,
242  double upx, const std::string& opt ) override;
243 
244  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
245  const std::string& opt ) override;
246 
247  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
248  double lowx, double upx, const std::string& opt );
249 
250  AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title, int nx, double lowx, double upx,
251  const std::string& opt ) override;
252 
253  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
254  double upx, const std::string& opt ) override;
255 
256  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title, int nx,
257  double lowx, double upx, double upper, double lower, const std::string& opt ) override;
258 
259  AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title, int nx, double lowx,
260  double upx, double upper, double lower, const std::string& opt ) override;
261 
262  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
263  double upper, double lower, const std::string& opt ) override;
264 
265  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
266  double lowx, double upx, double upper, double lower, const std::string& opt );
267 
268  AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title, int nx, double lowx, double upx,
269  double upper, double lower, const std::string& opt ) override;
270 
271  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
272  double upx, double upper, double lower, const std::string& opt ) override;
273 
274  // ==========================================================================
275  // Book 1D histogram with variable binning
276  // ==========================================================================
291  AIDA::IHistogram1D* book( const std::string& par, int hID, const std::string& title, Edges e ) override;
292 
293  AIDA::IHistogram1D* book( DataObject* pPar, int hID, const std::string& title, Edges e ) override;
294 
295  AIDA::IHistogram1D* book( const std::string& par, const std::string& rel, const std::string& title,
296  Edges e ) override;
297 
298  virtual AIDA::IHistogram1D* book( const std::pair<std::string, std::string>& loc, const std::string& title, Edges e );
299 
300  AIDA::IHistogram1D* book( const std::string& full, const std::string& title, Edges e ) override;
301 
302  AIDA::IHistogram1D* book( DataObject* pPar, const std::string& rel, const std::string& title, Edges e ) override;
303 
304  // ==========================================================================
305  // Book 1D profile histogram with variable binning
306  // ==========================================================================
321  AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title, Edges e ) override;
322 
323  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title,
324  Edges e ) override;
325 
326  AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title, Edges e ) override;
327 
328  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title, Edges e ) override;
329 
330  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title,
331  Edges e );
332 
333  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, Edges e ) override;
334 
335  virtual AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title, Edges e, double upper,
336  double lower );
337 
338  virtual AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title, Edges e,
339  double upper, double lower );
340 
341  virtual AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title, Edges e, double upper,
342  double lower );
343 
344  virtual AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title, Edges e, double upper,
345  double lower );
346 
347  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, Edges e,
348  double upper, double lower );
349 
350  virtual AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, Edges e,
351  double upper, double lower );
352 
353  // ==========================================================================
354  // Book 2D histogram with fixed binning
355  // ==========================================================================
375  AIDA::IHistogram2D* book( const std::string& full, const std::string& title, int nx, double lowx, double upx, int ny,
376  double lowy, double upy ) override;
377 
378  AIDA::IHistogram2D* book( const std::string& par, const std::string& rel, const std::string& title, int nx,
379  double lowx, double upx, int ny, double lowy, double upy ) override;
380 
381  AIDA::IHistogram2D* book( const std::string& par, int hID, const std::string& title, int nx, double lowx, double upx,
382  int ny, double lowy, double upy ) override;
383 
384  virtual AIDA::IHistogram2D* book( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
385  double lowx, double upx, int ny, double lowy, double upy );
386 
387  AIDA::IHistogram2D* book( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
388  int ny, double lowy, double upy ) override;
389 
390  AIDA::IHistogram2D* book( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
391  double upx, int ny, double lowy, double upy ) override;
392 
393  // ==========================================================================
394  // Book 2D profile histogram with fixed binning
395  // ==========================================================================
415  virtual AIDA::IProfile2D* bookProf( const std::string& full, const std::string& title, int nx, double lowx,
416  double upx, int ny, double lowy, double upy, double upper, double lower );
417 
418  virtual AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel, const std::string& title, int nx,
419  double lowx, double upx, int ny, double lowy, double upy, double upper,
420  double lower );
421 
422  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
423  double lowx, double upx, int ny, double lowy, double upy, double upper,
424  double lower );
425 
426  virtual AIDA::IProfile2D* bookProf( const std::string& par, int hID, const std::string& title, int nx, double lowx,
427  double upx, int ny, double lowy, double upy, double upper, double lower );
428 
429  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title, int nx, double lowx,
430  double upx, int ny, double lowy, double upy, double upper, double lower );
431 
432  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, int nx,
433  double lowx, double upx, int ny, double lowy, double upy, double upper,
434  double lower );
435 
436  AIDA::IProfile2D* bookProf( const std::string& full, const std::string& title, int nx, double lowx, double upx,
437  int ny, double lowy, double upy ) override;
438 
439  AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel, const std::string& title, int nx,
440  double lowx, double upx, int ny, double lowy, double upy ) override;
441 
442  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
443  double lowx, double upx, int ny, double lowy, double upy );
444 
445  AIDA::IProfile2D* bookProf( const std::string& par, int hID, const std::string& title, int nx, double lowx,
446  double upx, int ny, double lowy, double upy ) override;
447 
448  AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
449  int ny, double lowy, double upy ) override;
450 
451  AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
452  double upx, int ny, double lowy, double upy ) override;
453 
454  // ==========================================================================
455  // Book 2D histogram with variable binning
456  // ==========================================================================
471  AIDA::IHistogram2D* book( const std::string& full, const std::string& title, Edges x, Edges y ) override;
472 
473  AIDA::IHistogram2D* book( const std::string& par, const std::string& rel, const std::string& title, Edges x,
474  Edges y ) override;
475 
476  AIDA::IHistogram2D* book( const std::string& par, int hID, const std::string& title, Edges x, Edges y ) override;
477 
478  virtual AIDA::IHistogram2D* book( const std::pair<std::string, std::string>& loc, const std::string& title, Edges x,
479  Edges y );
480 
481  AIDA::IHistogram2D* book( DataObject* pPar, int hID, const std::string& title, Edges x, Edges y ) override;
482 
483  AIDA::IHistogram2D* book( DataObject* pPar, const std::string& rel, const std::string& title, Edges x,
484  Edges y ) override;
485 
486  // ==========================================================================
487  // Book 2D profile histogram with variable binning
488  // ==========================================================================
503  AIDA::IProfile2D* bookProf( const std::string& full, const std::string& title, Edges x, Edges y ) override;
504 
505  AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel, const std::string& title, Edges x,
506  Edges y ) override;
507 
508  AIDA::IProfile2D* bookProf( const std::string& par, int hID, const std::string& title, Edges x, Edges y ) override;
509 
510  AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title, Edges x, Edges y ) override;
511 
512  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, Edges x,
513  Edges y );
514 
515  AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, Edges x,
516  Edges y ) override;
517 
518  virtual AIDA::IProfile2D* bookProf( const std::string& full, const std::string& title, Edges x, Edges y, double upper,
519  double lower );
520 
521  virtual AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel, const std::string& title, Edges x,
522  Edges y, double upper, double lower );
523 
524  virtual AIDA::IProfile2D* bookProf( const std::string& par, int hID, const std::string& title, Edges x, Edges y,
525  double upper, double lower );
526 
527  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title, Edges x, Edges y,
528  double upper, double lower );
529 
530  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, Edges x,
531  Edges y, double upper, double lower );
532 
533  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, Edges x,
534  Edges y, double upper, double lower );
535 
536  // ==========================================================================
537  // Book 3D histogram with fixed binning
538  // ==========================================================================
555  AIDA::IHistogram3D* book( const std::string& full, const std::string& title, int nx, double lowx, double upx, int ny,
556  double lowy, double upy, int nz, double lowz, double upz ) override;
557 
558  AIDA::IHistogram3D* book( const std::string& par, const std::string& rel, const std::string& title, int nx,
559  double lowx, double upx, int ny, double lowy, double upy, int nz, double lowz,
560  double upz ) override;
561 
562  AIDA::IHistogram3D* book( const std::string& par, int hID, const std::string& title, int nx, double lowx, double upx,
563  int ny, double lowy, double upy, int nz, double lowz, double upz ) override;
564 
565  AIDA::IHistogram3D* book( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
566  int ny, double lowy, double upy, int nz, double lowz, double upz ) override;
567 
568  virtual AIDA::IHistogram3D* book( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
569  double lowx, double upx, int ny, double lowy, double upy, int nz, double lowz,
570  double upz );
571 
572  AIDA::IHistogram3D* book( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
573  double upx, int ny, double lowy, double upy, int nz, double lowz, double upz ) override;
574 
575  // ==========================================================================
576  // Book 3D histogram with variable binning
577  // ==========================================================================
594  AIDA::IHistogram3D* book( const std::string& full, const std::string& title, Edges x, Edges y, Edges z ) override;
595 
596  AIDA::IHistogram3D* book( const std::string& par, const std::string& rel, const std::string& title, Edges x, Edges y,
597  Edges z ) override;
598 
599  AIDA::IHistogram3D* book( const std::string& par, int hID, const std::string& title, Edges x, Edges y,
600  Edges z ) override;
601 
602  AIDA::IHistogram3D* book( DataObject* pPar, int hID, const std::string& title, Edges x, Edges y, Edges z ) override;
603 
604  virtual AIDA::IHistogram3D* book( const std::pair<std::string, std::string>& loc, const std::string& title, Edges x,
605  Edges y, Edges z );
606 
607  AIDA::IHistogram3D* book( DataObject* pPar, const std::string& rel, const std::string& title, Edges x, Edges y,
608  Edges z ) override;
609 
610  // ==========================================================================
611  // Register histogram with the data store
612  // ==========================================================================
614  StatusCode registerObject( const std::string& parent, const std::string& rel, Base* obj ) override;
615 
616  StatusCode registerObject( Base* pPar, const std::string& rel, Base* obj ) override;
617 
618  StatusCode registerObject( const std::string& full, Base* obj ) override;
619 
620  StatusCode registerObject( DataObject* pPar, const std::string& rel, Base* obj ) override;
621 
622  // ==========================================================================
623  // Unregister histogram from the data store
624  // ==========================================================================
625  StatusCode unregisterObject( Base* obj ) override;
626 
627  StatusCode unregisterObject( Base* obj, const std::string& objectPath ) override;
628 
629  StatusCode unregisterObject( Base* obj, int item ) override;
630 
631  // ==========================================================================
632  // Retrieve histogram from data store
633  // ==========================================================================
634  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram1D*& obj ) override;
635 
636  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IProfile1D*& obj ) override;
637 
638  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram2D*& obj ) override;
639 
640  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IProfile2D*& obj ) override;
641 
642  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram3D*& obj ) override;
643 
644  StatusCode retrieveObject( const std::string& full, AIDA::IProfile1D*& obj ) override;
645 
646  StatusCode retrieveObject( const std::string& full, AIDA::IProfile2D*& obj ) override;
647 
648  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram1D*& obj ) override;
649 
650  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram2D*& obj ) override;
651 
652  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram3D*& obj ) override;
653 
654  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IProfile1D*& obj ) override;
655 
656  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IProfile2D*& obj ) override;
657 
658  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram1D*& obj ) override;
659 
660  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram2D*& obj ) override;
661 
662  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram3D*& obj ) override;
663 
664  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IProfile1D*& obj ) override;
665 
666  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IProfile2D*& obj ) override;
667 
668  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram1D*& obj ) override;
669 
670  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram2D*& obj ) override;
671 
672  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram3D*& obj ) override;
673 
674  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
675 
676  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
677 
678  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
679 
680  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
681 
682  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
683 
684  StatusCode retrieveObject( DataObject* par, int item, AIDA::IProfile1D*& obj ) override;
685 
686  StatusCode retrieveObject( DataObject* par, int item, AIDA::IProfile2D*& obj ) override;
687 
688  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram1D*& obj ) override;
689 
690  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram2D*& obj ) override;
691 
692  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram3D*& obj ) override;
693 
694  StatusCode retrieveObject( Base* par, int item, AIDA::IProfile1D*& obj ) override;
695 
696  StatusCode retrieveObject( Base* par, int item, AIDA::IProfile2D*& obj ) override;
697 
698  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram1D*& obj ) override;
699 
700  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram2D*& obj ) override;
701 
702  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram3D*& obj ) override;
703 
704  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
705 
706  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
707 
708  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
709 
710  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
711 
712  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
713 
714  // ==========================================================================
715  // Find histogram identified by its full path in the data store
716  // ==========================================================================
717  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IProfile1D*& obj ) override;
718 
719  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IProfile2D*& obj ) override;
720 
721  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram1D*& obj ) override;
722 
723  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram2D*& obj ) override;
724 
725  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram3D*& obj ) override;
726 
727  StatusCode findObject( const std::string& full, AIDA::IProfile1D*& obj ) override;
728 
729  StatusCode findObject( const std::string& full, AIDA::IProfile2D*& obj ) override;
730 
731  StatusCode findObject( const std::string& full, AIDA::IHistogram1D*& obj ) override;
732 
733  StatusCode findObject( const std::string& full, AIDA::IHistogram2D*& obj ) override;
734 
735  StatusCode findObject( const std::string& full, AIDA::IHistogram3D*& obj ) override;
736 
737  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IProfile1D*& obj ) override;
738 
739  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IProfile2D*& obj ) override;
740 
741  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram1D*& obj ) override;
742 
743  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram2D*& obj ) override;
744 
745  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram3D*& obj ) override;
746 
747  StatusCode findObject( const std::string& par, int item, AIDA::IProfile1D*& obj ) override;
748 
749  StatusCode findObject( const std::string& par, int item, AIDA::IProfile2D*& obj ) override;
750 
751  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram1D*& obj ) override;
752 
753  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram2D*& obj ) override;
754 
755  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram3D*& obj ) override;
756 
757  StatusCode findObject( DataObject* par, int item, AIDA::IProfile1D*& obj ) override;
758 
759  StatusCode findObject( DataObject* par, int item, AIDA::IProfile2D*& obj ) override;
760 
761  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram1D*& obj ) override;
762 
763  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram2D*& obj ) override;
764 
765  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram3D*& obj ) override;
766 
767  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
768 
769  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
770 
771  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
772 
773  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
774 
775  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
776 
777  StatusCode findObject( Base* par, int item, AIDA::IProfile1D*& obj ) override;
778 
779  StatusCode findObject( Base* par, int item, AIDA::IProfile2D*& obj ) override;
780 
781  StatusCode findObject( Base* par, int item, AIDA::IHistogram1D*& obj ) override;
782 
783  StatusCode findObject( Base* par, int item, AIDA::IHistogram2D*& obj ) override;
784 
785  StatusCode findObject( Base* par, int item, AIDA::IHistogram3D*& obj ) override;
786 
787  StatusCode findObject( Base* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
788 
789  StatusCode findObject( Base* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
790 
791  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
792 
793  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
794 
795  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
796 
797  // ==========================================================================
798  // Projections and slices.
799  // ==========================================================================
800  AIDA::IHistogram1D* projectionX( const std::string& name, const AIDA::IHistogram2D& h ) override;
801 
802  AIDA::IHistogram1D* projectionY( const std::string& name, const AIDA::IHistogram2D& h ) override;
803 
804  AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h, int indexY ) override;
805 
806  AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h, int indexX ) override;
807 
808  AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h, int indexY1, int indexY2 ) override;
809 
810  AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h, int indexX1, int indexX2 ) override;
811 
812  bool destroy( IBaseHistogram* hist ) override;
813 
814  AIDA::IHistogram1D* add( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
815  const AIDA::IHistogram1D& b ) override;
816 
817  AIDA::IHistogram1D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
818  const AIDA::IHistogram1D& b ) override;
819 
820  AIDA::IHistogram1D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
821  const AIDA::IHistogram1D& b ) override;
822 
823  AIDA::IHistogram1D* divide( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
824  const AIDA::IHistogram1D& b ) override;
825 
826  AIDA::IHistogram2D* add( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
827  const AIDA::IHistogram2D& b ) override;
828 
829  AIDA::IHistogram2D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
830  const AIDA::IHistogram2D& b ) override;
831 
832  AIDA::IHistogram2D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
833  const AIDA::IHistogram2D& b ) override;
834 
835  AIDA::IHistogram2D* divide( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
836  const AIDA::IHistogram2D& b ) override;
837 
838  AIDA::IHistogram3D* add( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
839  const AIDA::IHistogram3D& b ) override;
840 
841  AIDA::IHistogram3D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
842  const AIDA::IHistogram3D& b ) override;
843 
844  AIDA::IHistogram3D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
845  const AIDA::IHistogram3D& b ) override;
846 
847  AIDA::IHistogram3D* divide( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
848  const AIDA::IHistogram3D& b ) override;
849 
850  AIDA::IHistogram2D* projectionXY( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
851 
852  AIDA::IHistogram2D* projectionXZ( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
853 
854  AIDA::IHistogram2D* projectionYZ( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
855 
856  AIDA::IHistogram2D* sliceXY( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
857  int /* high */ ) override {
858  not_implemented();
859  return nullptr;
860  }
861 
862  AIDA::IHistogram2D* sliceXZ( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
863  int /* high */ ) override {
864  not_implemented();
865  return nullptr;
866  }
867 
868  AIDA::IHistogram2D* sliceYZ( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
869  int /* high */ ) override {
870  not_implemented();
871  return nullptr;
872  }
873 
874  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, int nx, double lowx,
875  double upx );
876 
877  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, int nx, double lowx,
878  double upx, const std::string& /*opt*/ ) override;
879 
880  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, const Edges& x,
881  const std::string& /*opt*/ ) override;
882 
883  AIDA::IHistogram1D* createHistogram1D( const std::string& nameAndTitle, int nx, double lowx, double upx ) override;
884 
885  AIDA::IHistogram1D* createCopy( const std::string& full, const AIDA::IHistogram1D& h ) override;
886 
887  AIDA::IHistogram1D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram1D& h );
888 
889  AIDA::IHistogram1D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram1D& h );
890 
891  AIDA::IHistogram1D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram1D& h );
892 
893  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, int nx, double lowx,
894  double upx, int ny, double lowy, double upy );
895 
896  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, int nx, double lowx,
897  double upx, int ny, double lowy, double upy,
898  const std::string& /*opt*/ ) override;
899 
900  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, const Edges& x,
901  const Edges& y, const std::string& /*opt*/ ) override;
902 
903  AIDA::IHistogram2D* createHistogram2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
904  double lowy, double upy ) override;
905 
906  AIDA::IHistogram2D* createCopy( const std::string& full, const AIDA::IHistogram2D& h ) override;
907 
908  AIDA::IHistogram2D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram2D& h );
909 
910  AIDA::IHistogram2D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram2D& h );
911 
912  AIDA::IHistogram2D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram2D& h );
913 
914  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, int nx, double lowx,
915  double upx, int ny, double lowy, double upy, int nz, double lowz, double upz );
916 
917  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, int nx, double lowx,
918  double upx, int ny, double lowy, double upy, int nz, double lowz, double upz,
919  const std::string& /*opt*/ ) override;
920 
921  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, const Edges& x,
922  const Edges& y, const Edges& z, const std::string& /*opt*/ ) override;
923 
924  AIDA::IHistogram3D* createHistogram3D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
925  double lowy, double upy, int nz, double lowz, double upz ) override;
926 
927  AIDA::IHistogram3D* createCopy( const std::string& full, const AIDA::IHistogram3D& h ) override;
928 
929  AIDA::IHistogram3D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram3D& h );
930 
931  AIDA::IHistogram3D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram3D& h );
932 
933  AIDA::IHistogram3D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram3D& h );
934 
935  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
936  const std::string& opt ) override;
937 
938  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
939  double upper, double lower, const std::string& opt ) override;
940 
941  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, const Edges& x,
942  const std::string& /* opt */ ) override;
943 
944  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, const Edges& x, double upper,
945  double lower, const std::string& /* opt */ ) override;
946 
947  AIDA::IProfile1D* createProfile1D( const std::string& nametit, int nx, double lowx, double upx ) override;
948 
949  AIDA::IProfile1D* createProfile1D( const std::string& nametit, int nx, double lowx, double upx, double upper,
950  double lower ) override;
951 
952  AIDA::IProfile1D* createCopy( const std::string& full, const AIDA::IProfile1D& h ) override;
953 
954  AIDA::IProfile1D* createCopy( const std::string& par, const std::string& rel, const AIDA::IProfile1D& h );
955 
956  AIDA::IProfile1D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IProfile1D& h );
957 
958  AIDA::IProfile1D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IProfile1D& h );
959 
960  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
961  int ny, double lowy, double upy );
962 
963  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
964  int ny, double lowy, double upy, const std::string& /*opt*/ ) override;
965 
966  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, const Edges& x, const Edges& y,
967  const std::string& /*opt*/ ) override;
968 
969  AIDA::IProfile2D* createProfile2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
970  double lowy, double upy ) override;
971 
972  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
973  int ny, double lowy, double upy, double upper, double lower );
974 
975  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
976  int ny, double lowy, double upy, double upper, double lower,
977  const std::string& /*opt*/ ) override;
978 
979  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, const Edges& x, const Edges& y,
980  double upper, double lower, const std::string& /*opt*/ ) override;
981 
982  AIDA::IProfile2D* createProfile2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
983  double lowy, double upy, double upper, double lower ) override;
984 
985  AIDA::IProfile2D* createCopy( const std::string& full, const AIDA::IProfile2D& h ) override;
986 
987  AIDA::IProfile2D* createCopy( const std::string& par, const std::string& rel, const AIDA::IProfile2D& h );
988 
989  AIDA::IProfile2D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IProfile2D& h );
990 
991  AIDA::IProfile2D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IProfile2D& h );
992 
993  AIDA::ICloud1D* createCloud1D( const std::string&, const std::string&, int, const std::string& ) override {
994  not_implemented();
995  return nullptr;
996  }
997 
998  AIDA::ICloud1D* createCloud1D( const std::string& ) override {
999  not_implemented();
1000  return nullptr;
1001  }
1002 
1003  AIDA::ICloud1D* createCopy( const std::string&, const AIDA::ICloud1D& ) override {
1004  not_implemented();
1005  return nullptr;
1006  }
1007 
1008  AIDA::ICloud2D* createCloud2D( const std::string&, const std::string&, int, const std::string& ) override {
1009  not_implemented();
1010  return nullptr;
1011  }
1012 
1013  AIDA::ICloud2D* createCloud2D( const std::string& ) override {
1014  not_implemented();
1015  return nullptr;
1016  }
1017 
1018  AIDA::ICloud2D* createCopy( const std::string&, const AIDA::ICloud2D& ) override {
1019  not_implemented();
1020  return nullptr;
1021  }
1022 
1023  AIDA::ICloud3D* createCloud3D( const std::string&, const std::string&, int, const std::string& ) override {
1024  not_implemented();
1025  return nullptr;
1026  }
1027 
1028  AIDA::ICloud3D* createCloud3D( const std::string& ) override {
1029  not_implemented();
1030  return nullptr;
1031  }
1032 
1033  AIDA::ICloud3D* createCopy( const std::string&, const AIDA::ICloud3D& ) override {
1034  not_implemented();
1035  return nullptr;
1036  }
1037 
1043 
1045  std::ostream& print( Base* h, std::ostream& s = std::cout ) const override;
1046 
1048  std::ostream& write( Base* h, std::ostream& s = std::cout ) const override;
1049 
1051  int write( Base* h, const char* file_name ) const override;
1052 
1054  DataObject* createPath( const std::string& newPath ) override;
1055 
1060  DataObject* createDirectory( const std::string& parentDir, const std::string& subDir ) override;
1061 
1063 
1064 private:
1066  void update1Ddefs();
1067 
1068  Gaudi::Property<DBaseEntries> m_input{this, "Input", {}, "input streams"};
1070  this, "Predefined1DHistos", {}, &HistogramSvc::update1Ddefs, "histograms with predefined parameters"};
1071 
1072  // modified histograms:
1074 };
1075 #endif // GAUDISVC_HISTOGRAMSVC_H
AIDA::ICloud3D * createCloud3D(const std::string &, const std::string &, int, const std::string &) override
Define general base for Gaudi exception.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
std::set< std::string > m_mods1D
GAUDI_API AIDA::IHistogram1D * book(IHistogramSvc *svc, const std::string &path, const Gaudi::Histo1DDef &hist)
helper function to book 1D-histogram
Definition: HistoDef.cpp:87
std::map< std::string, Gaudi::Histo1DDef > Histo1DMap
Implementation of property with value of concrete type.
Definition: Property.h:352
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:309
virtual StatusCode findObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Find object identified by its directory entry.
StatusCode retrieveObject(IRegistry *pReg, const std::string &path, AIDA::IHistogram1D *&obj) override
void not_implemented() const
Definition: HistogramSvc.h:54
StatusCode find(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:79
AIDA::ICloud1D * createCloud1D(const std::string &, const std::string &, int, const std::string &) override
Definition: HistogramSvc.h:993
StatusCode retrieve(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:72
AIDA::ICloud1D * createCloud1D(const std::string &) override
Definition: HistogramSvc.h:998
STL class.
StatusCode registerObject(boost::string_ref parentPath, boost::string_ref objPath, DataObject *pObject) override
Register object with the data store.
Definition: DataSvc.cpp:295
GaudiKernel.
Definition: Fill.h:10
HistogramSvc * m_svc
Definition: HistogramSvc.h:62
T * i_book(DataObject *pPar, const std::string &rel, const std::string &title, const std::pair< DataObject *, T * > &o)
Definition: HistogramSvc.h:160
STL class.
TupleObj.h GaudiAlg/TupleObj.h namespace with few technical implementations.
AIDA::ICloud1D * createCopy(const std::string &, const AIDA::ICloud1D &) override
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *))
Definition: HistogramSvc.h:113
AIDA::ICloud3D * createCloud3D(const std::string &) override
AIDA::IBaseHistogram Base
Definition: HistogramSvc.h:59
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
AIDA::ICloud2D * createCloud2D(const std::string &) override
AIDA::ICloud3D * createCopy(const std::string &, const AIDA::ICloud3D &) override
AIDA::IHistogram2D * sliceYZ(const std::string &, const AIDA::IHistogram3D &, int, int) override
Definition: HistogramSvc.h:868
StatusCode findObject(IRegistry *pReg, const std::string &path, AIDA::IProfile1D *&obj) override
StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject)
Register object with the data store.
virtual StatusCode unregisterObject(boost::string_ref fullPath)=0
Unregister object from the data store.
AIDA::ICloud2D * createCloud2D(const std::string &, const std::string &, int, const std::string &) override
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *, Double_t), Double_t scale)
Definition: HistogramSvc.h:103
def bookProf(args, kwargs)
Definition: HistoUtils.py:256
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
AIDA::IHistogramFactory * histogramFactory() override
Retrieve the AIDA HistogramFactory interface.
Definition: HistogramSvc.h:180
AIDA::IHistogram2D * sliceXY(const std::string &, const AIDA::IHistogram3D &, int, int) override
Definition: HistogramSvc.h:856
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *))
Definition: HistogramSvc.h:123
string s
Definition: gaudirun.py:312
constexpr static const auto FAILURE
Definition: StatusCode.h:86
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *, Double_t), Double_t scale)
Definition: HistogramSvc.h:93
Helper(HistogramSvc *p)
Definition: HistogramSvc.h:63
StatusCode retrieve(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:65
AIDA::IProfile2D P2D
Definition: HistogramSvc.h:58
AIDA::IHistogram2D * sliceXZ(const std::string &, const AIDA::IHistogram3D &, int, int) override
Definition: HistogramSvc.h:862
AIDA::IHistogram3D H3D
Definition: HistogramSvc.h:57
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
STL class.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
AIDA::ICloud2D * createCopy(const std::string &, const AIDA::ICloud2D &) override
void update1Ddefs()
handler to be invoked for updating property m_defs1D
StatusCode find(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:86
HistogramSvc class definition.
Definition: HistogramSvc.h:51