The Gaudi Framework  v30r4 (9b837755)
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 {
32  class ICloud1D;
33  class ICloud2D;
34  class ICloud3D;
35 }
36 
37 namespace detail
38 {
39  template <class T>
40  static DataObject* cast( T* p )
41  {
42  DataObject* q = dynamic_cast<DataObject*>( p );
43  if ( !q && p ) {
44  throw std::runtime_error( "HistogramSvc: Unexpected object type." );
45  }
46  return q;
47  }
48 }
49 
50 // ============================================================================
56 class HistogramSvc : public extends<DataSvc, IHistogramSvc>, virtual public AIDA::IHistogramFactory
57 {
58 
59 private:
60  void not_implemented() const { error() << "Sorry, not yet implemented..." << endmsg; }
61 
62 protected:
63  typedef AIDA::IHistogram3D H3D;
64  typedef AIDA::IProfile2D P2D;
65  typedef AIDA::IBaseHistogram Base;
66 
67  struct Helper {
69  Helper( HistogramSvc* p ) : m_svc( p ) {}
70  template <class A1, class A3>
71  StatusCode retrieve( A1 a1, A3*& a3 )
72  {
73  DataObject* pObject = nullptr;
74  StatusCode sc = m_svc->retrieveObject( a1, pObject );
75  a3 = dynamic_cast<A3*>( pObject );
76  return sc;
77  }
78  template <class A1, class A2, class A3>
79  StatusCode retrieve( A1 a1, A2 a2, A3*& a3 )
80  {
81  DataObject* pObject = nullptr;
82  StatusCode sc = m_svc->retrieveObject( a1, a2, pObject );
83  a3 = dynamic_cast<A3*>( pObject );
84  return sc;
85  }
86  template <class A1, class A3>
87  StatusCode find( A1 a1, A3*& a3 )
88  {
89  DataObject* pObject = nullptr;
90  StatusCode sc = m_svc->findObject( a1, pObject );
91  a3 = dynamic_cast<A3*>( pObject );
92  return sc;
93  }
94  template <class A1, class A2, class A3>
95  StatusCode find( A1 a1, A2 a2, A3*& a3 )
96  {
97  DataObject* pObject = nullptr;
98  StatusCode sc = m_svc->findObject( a1, a2, pObject );
99  a3 = dynamic_cast<A3*>( pObject );
100  return sc;
101  }
102  template <class R, class S, class T1, class T2>
103  static R* act( R* res, const S& b, void ( T1::*pmf )( const T2*, Double_t ), Double_t scale )
104  {
105  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
106  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
107  if ( h1 && h2 ) {
108  ( h1->*pmf )( h2, scale );
109  return res;
110  }
111  return nullptr;
112  }
113  template <class R, class S, class T1, class T2>
114  static R* act( R* res, const S& b, Bool_t ( T1::*pmf )( const T2*, Double_t ), Double_t scale )
115  {
116  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
117  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
118  if ( h1 && h2 ) {
119  ( h1->*pmf )( h2, scale );
120  return res;
121  }
122  return nullptr;
123  }
124  template <class R, class S, class T1, class T2>
125  static R* act( R* res, const S& b, void ( T1::*pmf )( const T2* ) )
126  {
127  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
128  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
129  if ( h1 && h2 ) {
130  ( h1->*pmf )( h2 );
131  return res;
132  }
133  return nullptr;
134  }
135  template <class R, class S, class T1, class T2>
136  static R* act( R* res, const S& b, Bool_t ( T1::*pmf )( const T2* ) )
137  {
138  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
139  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
140  if ( h1 && h2 ) {
141  ( h1->*pmf )( h2 );
142  return res;
143  }
144  return nullptr;
145  }
146  };
147 
148 public:
151 
156  HistogramSvc( const std::string& name, ISvcLocator* svc );
157 
159  ~HistogramSvc() override;
160 
166  std::pair<std::string, std::string> i_splitPath( const std::string& full );
167 
171  StatusCode connectInput( const std::string& ident );
172 
173  template <class T>
174  inline T* i_book( DataObject* pPar, const std::string& rel, const std::string& title,
175  const std::pair<DataObject*, T*>& o )
176  {
177  if ( o.first && registerObject( pPar, rel, (Base*)o.second ).isSuccess() ) return o.second;
178  delete o.first;
179  throw GaudiException( "Cannot book " + System::typeinfoName( typeid( T ) ) + " " + title, "HistogramSvc",
181  }
182 
184  AIDA::IHistogram2D* i_project( const std::string& nameAndTitle, const AIDA::IHistogram3D& h, const std::string& dir );
185 
186 public:
188  StatusCode initialize() override;
190  StatusCode reinitialize() override;
192  StatusCode finalize() override;
193 
195  AIDA::IHistogramFactory* histogramFactory() override { return this; }
196 
197  // ==========================================================================
198  // Book 1D histogram with fix binning
199  // ==========================================================================
216  AIDA::IHistogram1D* book( const std::string& par, const std::string& rel, const std::string& title, int nx,
217  double lowx, double upx ) override;
218 
219  AIDA::IHistogram1D* book( const std::string& par, int hID, const std::string& title, int nx, double lowx,
220  double upx ) override;
221 
222  AIDA::IHistogram1D* book( DataObject* pPar, int hID, const std::string& title, int nx, double lowx,
223  double upx ) override;
224 
225  AIDA::IHistogram1D* book( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
226  double upx ) override;
227 
228  virtual AIDA::IHistogram1D* book( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
229  double lowx, double upx );
230 
231  AIDA::IHistogram1D* book( const std::string& full, const std::string& title, int nx, double lowx,
232  double upx ) override;
233 
234  // ==========================================================================
235  // Book 1D Profile histogram with fix binning
236  // ==========================================================================
253  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title, int nx,
254  double lowx, double upx, const std::string& opt ) override;
255 
256  AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title, int nx, double lowx,
257  double upx, const std::string& opt ) override;
258 
259  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
260  const std::string& opt ) override;
261 
262  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
263  double lowx, double upx, const std::string& opt );
264 
265  AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title, int nx, double lowx, double upx,
266  const std::string& opt ) override;
267 
268  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
269  double upx, const std::string& opt ) override;
270 
271  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title, int nx,
272  double lowx, double upx, double upper, double lower, const std::string& opt ) override;
273 
274  AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title, int nx, double lowx,
275  double upx, double upper, double lower, const std::string& opt ) override;
276 
277  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
278  double upper, double lower, const std::string& opt ) override;
279 
280  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
281  double lowx, double upx, double upper, double lower, const std::string& opt );
282 
283  AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title, int nx, double lowx, double upx,
284  double upper, double lower, const std::string& opt ) override;
285 
286  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
287  double upx, double upper, double lower, const std::string& opt ) override;
288 
289  // ==========================================================================
290  // Book 1D histogram with variable binning
291  // ==========================================================================
306  AIDA::IHistogram1D* book( const std::string& par, int hID, const std::string& title, Edges e ) override;
307 
308  AIDA::IHistogram1D* book( DataObject* pPar, int hID, const std::string& title, Edges e ) override;
309 
310  AIDA::IHistogram1D* book( const std::string& par, const std::string& rel, const std::string& title,
311  Edges e ) override;
312 
313  virtual AIDA::IHistogram1D* book( const std::pair<std::string, std::string>& loc, const std::string& title, Edges e );
314 
315  AIDA::IHistogram1D* book( const std::string& full, const std::string& title, Edges e ) override;
316 
317  AIDA::IHistogram1D* book( DataObject* pPar, const std::string& rel, const std::string& title, Edges e ) override;
318 
319  // ==========================================================================
320  // Book 1D profile histogram with variable binning
321  // ==========================================================================
336  AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title, Edges e ) override;
337 
338  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title,
339  Edges e ) override;
340 
341  AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title, Edges e ) override;
342 
343  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title, Edges e ) override;
344 
345  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title,
346  Edges e );
347 
348  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, Edges e ) override;
349 
350  virtual AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title, Edges e, double upper,
351  double lower );
352 
353  virtual AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title, Edges e,
354  double upper, double lower );
355 
356  virtual AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title, Edges e, double upper,
357  double lower );
358 
359  virtual AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title, Edges e, double upper,
360  double lower );
361 
362  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, Edges e,
363  double upper, double lower );
364 
365  virtual AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, Edges e,
366  double upper, double lower );
367 
368  // ==========================================================================
369  // Book 2D histogram with fixed binning
370  // ==========================================================================
390  AIDA::IHistogram2D* book( const std::string& full, const std::string& title, int nx, double lowx, double upx, int ny,
391  double lowy, double upy ) override;
392 
393  AIDA::IHistogram2D* book( const std::string& par, const std::string& rel, const std::string& title, int nx,
394  double lowx, double upx, int ny, double lowy, double upy ) override;
395 
396  AIDA::IHistogram2D* book( const std::string& par, int hID, const std::string& title, int nx, double lowx, double upx,
397  int ny, double lowy, double upy ) override;
398 
399  virtual AIDA::IHistogram2D* book( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
400  double lowx, double upx, int ny, double lowy, double upy );
401 
402  AIDA::IHistogram2D* book( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
403  int ny, double lowy, double upy ) override;
404 
405  AIDA::IHistogram2D* book( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
406  double upx, int ny, double lowy, double upy ) override;
407 
408  // ==========================================================================
409  // Book 2D profile histogram with fixed binning
410  // ==========================================================================
430  virtual AIDA::IProfile2D* bookProf( const std::string& full, const std::string& title, int nx, double lowx,
431  double upx, int ny, double lowy, double upy, double upper, double lower );
432 
433  virtual AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel, const std::string& title, int nx,
434  double lowx, double upx, int ny, double lowy, double upy, double upper,
435  double lower );
436 
437  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
438  double lowx, double upx, int ny, double lowy, double upy, double upper,
439  double lower );
440 
441  virtual AIDA::IProfile2D* bookProf( const std::string& par, int hID, const std::string& title, int nx, double lowx,
442  double upx, int ny, double lowy, double upy, double upper, double lower );
443 
444  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title, int nx, double lowx,
445  double upx, int ny, double lowy, double upy, double upper, double lower );
446 
447  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, int nx,
448  double lowx, double upx, int ny, double lowy, double upy, double upper,
449  double lower );
450 
451  AIDA::IProfile2D* bookProf( const std::string& full, const std::string& title, int nx, double lowx, double upx,
452  int ny, double lowy, double upy ) override;
453 
454  AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel, const std::string& title, int nx,
455  double lowx, double upx, int ny, double lowy, double upy ) override;
456 
457  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
458  double lowx, double upx, int ny, double lowy, double upy );
459 
460  AIDA::IProfile2D* bookProf( const std::string& par, int hID, const std::string& title, int nx, double lowx,
461  double upx, int ny, double lowy, double upy ) override;
462 
463  AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
464  int ny, double lowy, double upy ) override;
465 
466  AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
467  double upx, int ny, double lowy, double upy ) override;
468 
469  // ==========================================================================
470  // Book 2D histogram with variable binning
471  // ==========================================================================
486  AIDA::IHistogram2D* book( const std::string& full, const std::string& title, Edges x, Edges y ) override;
487 
488  AIDA::IHistogram2D* book( const std::string& par, const std::string& rel, const std::string& title, Edges x,
489  Edges y ) override;
490 
491  AIDA::IHistogram2D* book( const std::string& par, int hID, const std::string& title, Edges x, Edges y ) override;
492 
493  virtual AIDA::IHistogram2D* book( const std::pair<std::string, std::string>& loc, const std::string& title, Edges x,
494  Edges y );
495 
496  AIDA::IHistogram2D* book( DataObject* pPar, int hID, const std::string& title, Edges x, Edges y ) override;
497 
498  AIDA::IHistogram2D* book( DataObject* pPar, const std::string& rel, const std::string& title, Edges x,
499  Edges y ) override;
500 
501  // ==========================================================================
502  // Book 2D profile histogram with variable binning
503  // ==========================================================================
518  AIDA::IProfile2D* bookProf( const std::string& full, const std::string& title, Edges x, Edges y ) override;
519 
520  AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel, const std::string& title, Edges x,
521  Edges y ) override;
522 
523  AIDA::IProfile2D* bookProf( const std::string& par, int hID, const std::string& title, Edges x, Edges y ) override;
524 
525  AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title, Edges x, Edges y ) override;
526 
527  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, Edges x,
528  Edges y );
529 
530  AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, Edges x,
531  Edges y ) override;
532 
533  virtual AIDA::IProfile2D* bookProf( const std::string& full, const std::string& title, Edges x, Edges y, double upper,
534  double lower );
535 
536  virtual AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel, const std::string& title, Edges x,
537  Edges y, double upper, double lower );
538 
539  virtual AIDA::IProfile2D* bookProf( const std::string& par, int hID, const std::string& title, Edges x, Edges y,
540  double upper, double lower );
541 
542  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title, Edges x, Edges y,
543  double upper, double lower );
544 
545  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc, const std::string& title, Edges x,
546  Edges y, double upper, double lower );
547 
548  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title, Edges x,
549  Edges y, double upper, double lower );
550 
551  // ==========================================================================
552  // Book 3D histogram with fixed binning
553  // ==========================================================================
570  AIDA::IHistogram3D* book( const std::string& full, const std::string& title, int nx, double lowx, double upx, int ny,
571  double lowy, double upy, int nz, double lowz, double upz ) override;
572 
573  AIDA::IHistogram3D* book( const std::string& par, const std::string& rel, const std::string& title, int nx,
574  double lowx, double upx, int ny, double lowy, double upy, int nz, double lowz,
575  double upz ) override;
576 
577  AIDA::IHistogram3D* book( const std::string& par, int hID, const std::string& title, int nx, double lowx, double upx,
578  int ny, double lowy, double upy, int nz, double lowz, double upz ) override;
579 
580  AIDA::IHistogram3D* book( DataObject* pPar, int hID, const std::string& title, int nx, double lowx, double upx,
581  int ny, double lowy, double upy, int nz, double lowz, double upz ) override;
582 
583  virtual AIDA::IHistogram3D* book( const std::pair<std::string, std::string>& loc, const std::string& title, int nx,
584  double lowx, double upx, int ny, double lowy, double upy, int nz, double lowz,
585  double upz );
586 
587  AIDA::IHistogram3D* book( DataObject* pPar, const std::string& rel, const std::string& title, int nx, double lowx,
588  double upx, int ny, double lowy, double upy, int nz, double lowz, double upz ) override;
589 
590  // ==========================================================================
591  // Book 3D histogram with variable binning
592  // ==========================================================================
609  AIDA::IHistogram3D* book( const std::string& full, const std::string& title, Edges x, Edges y, Edges z ) override;
610 
611  AIDA::IHistogram3D* book( const std::string& par, const std::string& rel, const std::string& title, Edges x, Edges y,
612  Edges z ) override;
613 
614  AIDA::IHistogram3D* book( const std::string& par, int hID, const std::string& title, Edges x, Edges y,
615  Edges z ) override;
616 
617  AIDA::IHistogram3D* book( DataObject* pPar, int hID, const std::string& title, Edges x, Edges y, Edges z ) override;
618 
619  virtual AIDA::IHistogram3D* book( const std::pair<std::string, std::string>& loc, const std::string& title, Edges x,
620  Edges y, Edges z );
621 
622  AIDA::IHistogram3D* book( DataObject* pPar, const std::string& rel, const std::string& title, Edges x, Edges y,
623  Edges z ) override;
624 
625  // ==========================================================================
626  // Register histogram with the data store
627  // ==========================================================================
629  StatusCode registerObject( const std::string& parent, const std::string& rel, Base* obj ) override;
630 
631  StatusCode registerObject( Base* pPar, const std::string& rel, Base* obj ) override;
632 
633  StatusCode registerObject( const std::string& full, Base* obj ) override;
634 
635  StatusCode registerObject( DataObject* pPar, const std::string& rel, Base* obj ) override;
636 
637  // ==========================================================================
638  // Unregister histogram from the data store
639  // ==========================================================================
640  StatusCode unregisterObject( Base* obj ) override;
641 
642  StatusCode unregisterObject( Base* obj, const std::string& objectPath ) override;
643 
644  StatusCode unregisterObject( Base* obj, int item ) override;
645 
646  // ==========================================================================
647  // Retrieve histogram from data store
648  // ==========================================================================
649  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram1D*& obj ) override;
650 
651  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IProfile1D*& obj ) override;
652 
653  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram2D*& obj ) override;
654 
655  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IProfile2D*& obj ) override;
656 
657  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram3D*& obj ) override;
658 
659  StatusCode retrieveObject( const std::string& full, AIDA::IProfile1D*& obj ) override;
660 
661  StatusCode retrieveObject( const std::string& full, AIDA::IProfile2D*& obj ) override;
662 
663  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram1D*& obj ) override;
664 
665  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram2D*& obj ) override;
666 
667  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram3D*& obj ) override;
668 
669  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IProfile1D*& obj ) override;
670 
671  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IProfile2D*& obj ) override;
672 
673  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram1D*& obj ) override;
674 
675  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram2D*& obj ) override;
676 
677  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram3D*& obj ) override;
678 
679  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IProfile1D*& obj ) override;
680 
681  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IProfile2D*& obj ) override;
682 
683  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram1D*& obj ) override;
684 
685  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram2D*& obj ) override;
686 
687  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram3D*& obj ) override;
688 
689  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
690 
691  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
692 
693  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
694 
695  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
696 
697  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
698 
699  StatusCode retrieveObject( DataObject* par, int item, AIDA::IProfile1D*& obj ) override;
700 
701  StatusCode retrieveObject( DataObject* par, int item, AIDA::IProfile2D*& obj ) override;
702 
703  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram1D*& obj ) override;
704 
705  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram2D*& obj ) override;
706 
707  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram3D*& obj ) override;
708 
709  StatusCode retrieveObject( Base* par, int item, AIDA::IProfile1D*& obj ) override;
710 
711  StatusCode retrieveObject( Base* par, int item, AIDA::IProfile2D*& obj ) override;
712 
713  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram1D*& obj ) override;
714 
715  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram2D*& obj ) override;
716 
717  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram3D*& obj ) override;
718 
719  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
720 
721  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
722 
723  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
724 
725  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
726 
727  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
728 
729  // ==========================================================================
730  // Find histogram identified by its full path in the data store
731  // ==========================================================================
732  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IProfile1D*& obj ) override;
733 
734  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IProfile2D*& obj ) override;
735 
736  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram1D*& obj ) override;
737 
738  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram2D*& obj ) override;
739 
740  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram3D*& obj ) override;
741 
742  StatusCode findObject( const std::string& full, AIDA::IProfile1D*& obj ) override;
743 
744  StatusCode findObject( const std::string& full, AIDA::IProfile2D*& obj ) override;
745 
746  StatusCode findObject( const std::string& full, AIDA::IHistogram1D*& obj ) override;
747 
748  StatusCode findObject( const std::string& full, AIDA::IHistogram2D*& obj ) override;
749 
750  StatusCode findObject( const std::string& full, AIDA::IHistogram3D*& obj ) override;
751 
752  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IProfile1D*& obj ) override;
753 
754  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IProfile2D*& obj ) override;
755 
756  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram1D*& obj ) override;
757 
758  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram2D*& obj ) override;
759 
760  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram3D*& obj ) override;
761 
762  StatusCode findObject( const std::string& par, int item, AIDA::IProfile1D*& obj ) override;
763 
764  StatusCode findObject( const std::string& par, int item, AIDA::IProfile2D*& obj ) override;
765 
766  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram1D*& obj ) override;
767 
768  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram2D*& obj ) override;
769 
770  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram3D*& obj ) override;
771 
772  StatusCode findObject( DataObject* par, int item, AIDA::IProfile1D*& obj ) override;
773 
774  StatusCode findObject( DataObject* par, int item, AIDA::IProfile2D*& obj ) override;
775 
776  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram1D*& obj ) override;
777 
778  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram2D*& obj ) override;
779 
780  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram3D*& obj ) override;
781 
782  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
783 
784  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
785 
786  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
787 
788  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
789 
790  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
791 
792  StatusCode findObject( Base* par, int item, AIDA::IProfile1D*& obj ) override;
793 
794  StatusCode findObject( Base* par, int item, AIDA::IProfile2D*& obj ) override;
795 
796  StatusCode findObject( Base* par, int item, AIDA::IHistogram1D*& obj ) override;
797 
798  StatusCode findObject( Base* par, int item, AIDA::IHistogram2D*& obj ) override;
799 
800  StatusCode findObject( Base* par, int item, AIDA::IHistogram3D*& obj ) override;
801 
802  StatusCode findObject( Base* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
803 
804  StatusCode findObject( Base* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
805 
806  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
807 
808  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
809 
810  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
811 
812  // ==========================================================================
813  // Projections and slices.
814  // ==========================================================================
815  AIDA::IHistogram1D* projectionX( const std::string& name, const AIDA::IHistogram2D& h ) override;
816 
817  AIDA::IHistogram1D* projectionY( const std::string& name, const AIDA::IHistogram2D& h ) override;
818 
819  AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h, int indexY ) override;
820 
821  AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h, int indexX ) override;
822 
823  AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h, int indexY1, int indexY2 ) override;
824 
825  AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h, int indexX1, int indexX2 ) override;
826 
827  bool destroy( IBaseHistogram* hist ) override;
828 
829  AIDA::IHistogram1D* add( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
830  const AIDA::IHistogram1D& b ) override;
831 
832  AIDA::IHistogram1D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
833  const AIDA::IHistogram1D& b ) override;
834 
835  AIDA::IHistogram1D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
836  const AIDA::IHistogram1D& b ) override;
837 
838  AIDA::IHistogram1D* divide( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
839  const AIDA::IHistogram1D& b ) override;
840 
841  AIDA::IHistogram2D* add( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
842  const AIDA::IHistogram2D& b ) override;
843 
844  AIDA::IHistogram2D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
845  const AIDA::IHistogram2D& b ) override;
846 
847  AIDA::IHistogram2D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
848  const AIDA::IHistogram2D& b ) override;
849 
850  AIDA::IHistogram2D* divide( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
851  const AIDA::IHistogram2D& b ) override;
852 
853  AIDA::IHistogram3D* add( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
854  const AIDA::IHistogram3D& b ) override;
855 
856  AIDA::IHistogram3D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
857  const AIDA::IHistogram3D& b ) override;
858 
859  AIDA::IHistogram3D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
860  const AIDA::IHistogram3D& b ) override;
861 
862  AIDA::IHistogram3D* divide( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
863  const AIDA::IHistogram3D& b ) override;
864 
865  AIDA::IHistogram2D* projectionXY( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
866 
867  AIDA::IHistogram2D* projectionXZ( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
868 
869  AIDA::IHistogram2D* projectionYZ( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
870 
871  AIDA::IHistogram2D* sliceXY( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
872  int /* high */ ) override
873  {
874  not_implemented();
875  return nullptr;
876  }
877 
878  AIDA::IHistogram2D* sliceXZ( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
879  int /* high */ ) override
880  {
881  not_implemented();
882  return nullptr;
883  }
884 
885  AIDA::IHistogram2D* sliceYZ( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
886  int /* high */ ) override
887  {
888  not_implemented();
889  return nullptr;
890  }
891 
892  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, int nx, double lowx,
893  double upx );
894 
895  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, int nx, double lowx,
896  double upx, const std::string& /*opt*/ ) override;
897 
898  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, const Edges& x,
899  const std::string& /*opt*/ ) override;
900 
901  AIDA::IHistogram1D* createHistogram1D( const std::string& nameAndTitle, int nx, double lowx, double upx ) override;
902 
903  AIDA::IHistogram1D* createCopy( const std::string& full, const AIDA::IHistogram1D& h ) override;
904 
905  AIDA::IHistogram1D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram1D& h );
906 
907  AIDA::IHistogram1D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram1D& h );
908 
909  AIDA::IHistogram1D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram1D& h );
910 
911  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, int nx, double lowx,
912  double upx, int ny, double lowy, double upy );
913 
914  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, int nx, double lowx,
915  double upx, int ny, double lowy, double upy,
916  const std::string& /*opt*/ ) override;
917 
918  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, const Edges& x,
919  const Edges& y, const std::string& /*opt*/ ) override;
920 
921  AIDA::IHistogram2D* createHistogram2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
922  double lowy, double upy ) override;
923 
924  AIDA::IHistogram2D* createCopy( const std::string& full, const AIDA::IHistogram2D& h ) override;
925 
926  AIDA::IHistogram2D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram2D& h );
927 
928  AIDA::IHistogram2D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram2D& h );
929 
930  AIDA::IHistogram2D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram2D& h );
931 
932  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, int nx, double lowx,
933  double upx, int ny, double lowy, double upy, int nz, double lowz, double upz );
934 
935  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, int nx, double lowx,
936  double upx, int ny, double lowy, double upy, int nz, double lowz, double upz,
937  const std::string& /*opt*/ ) override;
938 
939  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, const Edges& x,
940  const Edges& y, const Edges& z, const std::string& /*opt*/ ) override;
941 
942  AIDA::IHistogram3D* createHistogram3D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
943  double lowy, double upy, int nz, double lowz, double upz ) override;
944 
945  AIDA::IHistogram3D* createCopy( const std::string& full, const AIDA::IHistogram3D& h ) override;
946 
947  AIDA::IHistogram3D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram3D& h );
948 
949  AIDA::IHistogram3D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram3D& h );
950 
951  AIDA::IHistogram3D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram3D& h );
952 
953  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
954  const std::string& opt ) override;
955 
956  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
957  double upper, double lower, const std::string& opt ) override;
958 
959  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, const Edges& x,
960  const std::string& /* opt */ ) override;
961 
962  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, const Edges& x, double upper,
963  double lower, const std::string& /* opt */ ) override;
964 
965  AIDA::IProfile1D* createProfile1D( const std::string& nametit, int nx, double lowx, double upx ) override;
966 
967  AIDA::IProfile1D* createProfile1D( const std::string& nametit, int nx, double lowx, double upx, double upper,
968  double lower ) override;
969 
970  AIDA::IProfile1D* createCopy( const std::string& full, const AIDA::IProfile1D& h ) override;
971 
972  AIDA::IProfile1D* createCopy( const std::string& par, const std::string& rel, const AIDA::IProfile1D& h );
973 
974  AIDA::IProfile1D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IProfile1D& h );
975 
976  AIDA::IProfile1D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IProfile1D& h );
977 
978  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
979  int ny, double lowy, double upy );
980 
981  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
982  int ny, double lowy, double upy, const std::string& /*opt*/ ) override;
983 
984  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, const Edges& x, const Edges& y,
985  const std::string& /*opt*/ ) override;
986 
987  AIDA::IProfile2D* createProfile2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
988  double lowy, double upy ) override;
989 
990  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
991  int ny, double lowy, double upy, double upper, double lower );
992 
993  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nx, double lowx, double upx,
994  int ny, double lowy, double upy, double upper, double lower,
995  const std::string& /*opt*/ ) override;
996 
997  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, const Edges& x, const Edges& y,
998  double upper, double lower, const std::string& /*opt*/ ) override;
999 
1000  AIDA::IProfile2D* createProfile2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
1001  double lowy, double upy, double upper, double lower ) override;
1002 
1003  AIDA::IProfile2D* createCopy( const std::string& full, const AIDA::IProfile2D& h ) override;
1004 
1005  AIDA::IProfile2D* createCopy( const std::string& par, const std::string& rel, const AIDA::IProfile2D& h );
1006 
1007  AIDA::IProfile2D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IProfile2D& h );
1008 
1009  AIDA::IProfile2D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IProfile2D& h );
1010 
1011  AIDA::ICloud1D* createCloud1D( const std::string&, const std::string&, int, const std::string& ) override
1012  {
1013  not_implemented();
1014  return nullptr;
1015  }
1016 
1017  AIDA::ICloud1D* createCloud1D( const std::string& ) override
1018  {
1019  not_implemented();
1020  return nullptr;
1021  }
1022 
1023  AIDA::ICloud1D* createCopy( const std::string&, const AIDA::ICloud1D& ) override
1024  {
1025  not_implemented();
1026  return nullptr;
1027  }
1028 
1029  AIDA::ICloud2D* createCloud2D( const std::string&, const std::string&, int, const std::string& ) override
1030  {
1031  not_implemented();
1032  return nullptr;
1033  }
1034 
1035  AIDA::ICloud2D* createCloud2D( const std::string& ) override
1036  {
1037  not_implemented();
1038  return nullptr;
1039  }
1040 
1041  AIDA::ICloud2D* createCopy( const std::string&, const AIDA::ICloud2D& ) override
1042  {
1043  not_implemented();
1044  return nullptr;
1045  }
1046 
1047  AIDA::ICloud3D* createCloud3D( const std::string&, const std::string&, int, const std::string& ) override
1048  {
1049  not_implemented();
1050  return nullptr;
1051  }
1052 
1053  AIDA::ICloud3D* createCloud3D( const std::string& ) override
1054  {
1055  not_implemented();
1056  return nullptr;
1057  }
1058 
1059  AIDA::ICloud3D* createCopy( const std::string&, const AIDA::ICloud3D& ) override
1060  {
1061  not_implemented();
1062  return nullptr;
1063  }
1064 
1070 
1072  std::ostream& print( Base* h, std::ostream& s = std::cout ) const override;
1073 
1075  std::ostream& write( Base* h, std::ostream& s = std::cout ) const override;
1076 
1078  int write( Base* h, const char* file_name ) const override;
1079 
1081  DataObject* createPath( const std::string& newPath ) override;
1082 
1087  DataObject* createDirectory( const std::string& parentDir, const std::string& subDir ) override;
1088 
1090 
1091 private:
1093  void update1Ddefs();
1094 
1095  Gaudi::Property<DBaseEntries> m_input{this, "Input", {}, "input streams"};
1097  this, "Predefined1DHistos", {}, &HistogramSvc::update1Ddefs, "histograms with predefined parameters"};
1098 
1099  // modified histograms:
1101 };
1102 #endif // GAUDISVC_HISTOGRAMSVC_H
AIDA::ICloud3D * createCloud3D(const std::string &, const std::string &, int, const std::string &) override
constexpr static const auto FAILURE
Definition: StatusCode.h:88
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:95
std::map< std::string, Gaudi::Histo1DDef > Histo1DMap
Implementation of property with value of concrete type.
Definition: Property.h:383
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:332
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:60
StatusCode find(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:87
AIDA::ICloud1D * createCloud1D(const std::string &, const std::string &, int, const std::string &) override
StatusCode retrieve(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:79
AIDA::ICloud1D * createCloud1D(const std::string &) override
STL class.
StatusCode registerObject(boost::string_ref parentPath, boost::string_ref objPath, DataObject *pObject) override
Register object with the data store.
Definition: DataSvc.cpp:323
GaudiKernel.
Definition: Fill.h:10
HistogramSvc * m_svc
Definition: HistogramSvc.h:68
T * i_book(DataObject *pPar, const std::string &rel, const std::string &title, const std::pair< DataObject *, T * > &o)
Definition: HistogramSvc.h:174
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:51
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *))
Definition: HistogramSvc.h:125
AIDA::ICloud3D * createCloud3D(const std::string &) override
AIDA::IBaseHistogram Base
Definition: HistogramSvc.h:65
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:885
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:114
def bookProf(args, kwargs)
Definition: HistoUtils.py:252
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:195
AIDA::IHistogram2D * sliceXY(const std::string &, const AIDA::IHistogram3D &, int, int) override
Definition: HistogramSvc.h:871
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *))
Definition: HistogramSvc.h:136
string s
Definition: gaudirun.py:253
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *, Double_t), Double_t scale)
Definition: HistogramSvc.h:103
Helper(HistogramSvc *p)
Definition: HistogramSvc.h:69
StatusCode retrieve(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:71
AIDA::IProfile2D P2D
Definition: HistogramSvc.h:64
AIDA::IHistogram2D * sliceXZ(const std::string &, const AIDA::IHistogram3D &, int, int) override
Definition: HistogramSvc.h:878
AIDA::IHistogram3D H3D
Definition: HistogramSvc.h:63
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:209
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:95
HistogramSvc class definition.
Definition: HistogramSvc.h:56