The Gaudi Framework  v30r3 (a5ef0a68)
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->DataSvc::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->DataSvc::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->DataSvc::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->DataSvc::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  // ==========================================================================
628  StatusCode registerObject( const std::string& parent, const std::string& rel, Base* obj ) override;
629 
630  StatusCode registerObject( const std::string& parent, int item, Base* obj ) override;
631 
632  StatusCode registerObject( Base* pPar, const std::string& rel, Base* obj ) override;
633 
634  StatusCode registerObject( DataObject* pPar, int item, Base* obj ) override;
635 
636  StatusCode registerObject( Base* pPar, int item, Base* obj ) override;
637 
638  StatusCode registerObject( const std::string& full, Base* obj ) override;
639 
640  StatusCode registerObject( DataObject* pPar, const std::string& rel, Base* obj ) override;
641 
642  // ==========================================================================
643  // Unregister histogram from the data store
644  // ==========================================================================
645  StatusCode unregisterObject( Base* obj ) override;
646 
647  StatusCode unregisterObject( Base* obj, const std::string& objectPath ) override;
648 
649  StatusCode unregisterObject( Base* obj, int item ) override;
650 
651  // ==========================================================================
652  // Retrieve histogram from data store
653  // ==========================================================================
654  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram1D*& obj ) override;
655 
656  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IProfile1D*& obj ) override;
657 
658  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram2D*& obj ) override;
659 
660  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IProfile2D*& obj ) override;
661 
662  StatusCode retrieveObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram3D*& obj ) override;
663 
664  StatusCode retrieveObject( const std::string& full, AIDA::IProfile1D*& obj ) override;
665 
666  StatusCode retrieveObject( const std::string& full, AIDA::IProfile2D*& obj ) override;
667 
668  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram1D*& obj ) override;
669 
670  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram2D*& obj ) override;
671 
672  StatusCode retrieveObject( const std::string& full, AIDA::IHistogram3D*& obj ) override;
673 
674  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IProfile1D*& obj ) override;
675 
676  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IProfile2D*& obj ) override;
677 
678  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram1D*& obj ) override;
679 
680  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram2D*& obj ) override;
681 
682  StatusCode retrieveObject( const std::string& parent, const std::string& rel, AIDA::IHistogram3D*& obj ) override;
683 
684  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IProfile1D*& obj ) override;
685 
686  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IProfile2D*& obj ) override;
687 
688  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram1D*& obj ) override;
689 
690  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram2D*& obj ) override;
691 
692  StatusCode retrieveObject( const std::string& parent, int item, AIDA::IHistogram3D*& obj ) override;
693 
694  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
695 
696  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
697 
698  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
699 
700  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
701 
702  StatusCode retrieveObject( DataObject* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
703 
704  StatusCode retrieveObject( DataObject* par, int item, AIDA::IProfile1D*& obj ) override;
705 
706  StatusCode retrieveObject( DataObject* par, int item, AIDA::IProfile2D*& obj ) override;
707 
708  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram1D*& obj ) override;
709 
710  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram2D*& obj ) override;
711 
712  StatusCode retrieveObject( DataObject* par, int item, AIDA::IHistogram3D*& obj ) override;
713 
714  StatusCode retrieveObject( Base* par, int item, AIDA::IProfile1D*& obj ) override;
715 
716  StatusCode retrieveObject( Base* par, int item, AIDA::IProfile2D*& obj ) override;
717 
718  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram1D*& obj ) override;
719 
720  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram2D*& obj ) override;
721 
722  StatusCode retrieveObject( Base* par, int item, AIDA::IHistogram3D*& obj ) override;
723 
724  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
725 
726  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
727 
728  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
729 
730  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
731 
732  StatusCode retrieveObject( Base* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
733 
734  // ==========================================================================
735  // Find histogram identified by its full path in the data store
736  // ==========================================================================
737  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IProfile1D*& obj ) override;
738 
739  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IProfile2D*& obj ) override;
740 
741  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram1D*& obj ) override;
742 
743  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram2D*& obj ) override;
744 
745  StatusCode findObject( IRegistry* pReg, const std::string& path, AIDA::IHistogram3D*& obj ) override;
746 
747  StatusCode findObject( const std::string& full, AIDA::IProfile1D*& obj ) override;
748 
749  StatusCode findObject( const std::string& full, AIDA::IProfile2D*& obj ) override;
750 
751  StatusCode findObject( const std::string& full, AIDA::IHistogram1D*& obj ) override;
752 
753  StatusCode findObject( const std::string& full, AIDA::IHistogram2D*& obj ) override;
754 
755  StatusCode findObject( const std::string& full, AIDA::IHistogram3D*& obj ) override;
756 
757  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IProfile1D*& obj ) override;
758 
759  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IProfile2D*& obj ) override;
760 
761  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram1D*& obj ) override;
762 
763  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram2D*& obj ) override;
764 
765  StatusCode findObject( const std::string& par, const std::string& rel, AIDA::IHistogram3D*& obj ) override;
766 
767  StatusCode findObject( const std::string& par, int item, AIDA::IProfile1D*& obj ) override;
768 
769  StatusCode findObject( const std::string& par, int item, AIDA::IProfile2D*& obj ) override;
770 
771  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram1D*& obj ) override;
772 
773  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram2D*& obj ) override;
774 
775  StatusCode findObject( const std::string& par, int item, AIDA::IHistogram3D*& obj ) override;
776 
777  StatusCode findObject( DataObject* par, int item, AIDA::IProfile1D*& obj ) override;
778 
779  StatusCode findObject( DataObject* par, int item, AIDA::IProfile2D*& obj ) override;
780 
781  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram1D*& obj ) override;
782 
783  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram2D*& obj ) override;
784 
785  StatusCode findObject( DataObject* par, int item, AIDA::IHistogram3D*& obj ) override;
786 
787  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
788 
789  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
790 
791  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
792 
793  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
794 
795  StatusCode findObject( DataObject* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
796 
797  StatusCode findObject( Base* par, int item, AIDA::IProfile1D*& obj ) override;
798 
799  StatusCode findObject( Base* par, int item, AIDA::IProfile2D*& obj ) override;
800 
801  StatusCode findObject( Base* par, int item, AIDA::IHistogram1D*& obj ) override;
802 
803  StatusCode findObject( Base* par, int item, AIDA::IHistogram2D*& obj ) override;
804 
805  StatusCode findObject( Base* par, int item, AIDA::IHistogram3D*& obj ) override;
806 
807  StatusCode findObject( Base* par, const std::string& item, AIDA::IProfile1D*& obj ) override;
808 
809  StatusCode findObject( Base* par, const std::string& item, AIDA::IProfile2D*& obj ) override;
810 
811  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram1D*& obj ) override;
812 
813  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram2D*& obj ) override;
814 
815  StatusCode findObject( Base* par, const std::string& item, AIDA::IHistogram3D*& obj ) override;
816 
817  // ==========================================================================
818  // Projections and slices.
819  // ==========================================================================
820  AIDA::IHistogram1D* projectionX( const std::string& name, const AIDA::IHistogram2D& h ) override;
821 
822  AIDA::IHistogram1D* projectionY( const std::string& name, const AIDA::IHistogram2D& h ) override;
823 
824  AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h, int indexY ) override;
825 
826  AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h, int indexX ) override;
827 
828  AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h, int indexY1, int indexY2 ) override;
829 
830  AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h, int indexX1, int indexX2 ) override;
831 
832  bool destroy( IBaseHistogram* hist ) override;
833 
834  AIDA::IHistogram1D* add( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
835  const AIDA::IHistogram1D& b ) override;
836 
837  AIDA::IHistogram1D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
838  const AIDA::IHistogram1D& b ) override;
839 
840  AIDA::IHistogram1D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
841  const AIDA::IHistogram1D& b ) override;
842 
843  AIDA::IHistogram1D* divide( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
844  const AIDA::IHistogram1D& b ) override;
845 
846  AIDA::IHistogram2D* add( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
847  const AIDA::IHistogram2D& b ) override;
848 
849  AIDA::IHistogram2D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
850  const AIDA::IHistogram2D& b ) override;
851 
852  AIDA::IHistogram2D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
853  const AIDA::IHistogram2D& b ) override;
854 
855  AIDA::IHistogram2D* divide( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
856  const AIDA::IHistogram2D& b ) override;
857 
858  AIDA::IHistogram3D* add( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
859  const AIDA::IHistogram3D& b ) override;
860 
861  AIDA::IHistogram3D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
862  const AIDA::IHistogram3D& b ) override;
863 
864  AIDA::IHistogram3D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
865  const AIDA::IHistogram3D& b ) override;
866 
867  AIDA::IHistogram3D* divide( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
868  const AIDA::IHistogram3D& b ) override;
869 
870  AIDA::IHistogram2D* projectionXY( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
871 
872  AIDA::IHistogram2D* projectionXZ( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
873 
874  AIDA::IHistogram2D* projectionYZ( const std::string& nameAndTitle, const AIDA::IHistogram3D& h ) override;
875 
876  AIDA::IHistogram2D* sliceXY( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
877  int /* high */ ) override
878  {
879  not_implemented();
880  return nullptr;
881  }
882 
883  AIDA::IHistogram2D* sliceXZ( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
884  int /* high */ ) override
885  {
886  not_implemented();
887  return nullptr;
888  }
889 
890  AIDA::IHistogram2D* sliceYZ( const std::string& /* nameAndTitle */, const AIDA::IHistogram3D& /* h */, int /* low */,
891  int /* high */ ) override
892  {
893  not_implemented();
894  return nullptr;
895  }
896 
897  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& tit, int nx, double lowx,
898  double upx );
899 
900  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& tit, int nx, double lowx,
901  double upx, const std::string& /*opt*/ ) override;
902 
903  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, const Edges& x,
904  const std::string& /*opt*/ ) override;
905 
906  AIDA::IHistogram1D* createHistogram1D( const std::string& nameAndTitle, int nx, double lowx, double upx ) override;
907 
908  AIDA::IHistogram1D* createCopy( const std::string& full, const AIDA::IHistogram1D& h ) override;
909 
910  AIDA::IHistogram1D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram1D& h );
911 
912  AIDA::IHistogram1D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram1D& h );
913 
914  AIDA::IHistogram1D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram1D& h );
915 
916  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& tit, int nx, double lowx,
917  double upx, int ny, double lowy, double upy );
918 
919  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& tit, int nx, double lowx,
920  double upx, int ny, double lowy, double upy,
921  const std::string& /*opt*/ ) override;
922 
923  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, const Edges& x,
924  const Edges& y, const std::string& /*opt*/ ) override;
925 
926  AIDA::IHistogram2D* createHistogram2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
927  double lowy, double upy ) override;
928 
929  AIDA::IHistogram2D* createCopy( const std::string& full, const AIDA::IHistogram2D& h ) override;
930 
931  AIDA::IHistogram2D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram2D& h );
932 
933  AIDA::IHistogram2D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram2D& h );
934 
935  AIDA::IHistogram2D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram2D& h );
936 
937  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& tit, int nx, double lowx,
938  double upx, int ny, double lowy, double upy, int nz, double lowz, double upz );
939 
940  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& tit, int nx, double lowx,
941  double upx, int ny, double lowy, double upy, int nz, double lowz, double upz,
942  const std::string& /*opt*/ ) override;
943 
944  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, const Edges& x,
945  const Edges& y, const Edges& z, const std::string& /*opt*/ ) override;
946 
947  AIDA::IHistogram3D* createHistogram3D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
948  double lowy, double upy, int nz, double lowz, double upz ) override;
949 
950  AIDA::IHistogram3D* createCopy( const std::string& full, const AIDA::IHistogram3D& h ) override;
951 
952  AIDA::IHistogram3D* createCopy( const std::string& par, const std::string& rel, const AIDA::IHistogram3D& h );
953 
954  AIDA::IHistogram3D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IHistogram3D& h );
955 
956  AIDA::IHistogram3D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IHistogram3D& h );
957 
958  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& tit, int nx, double lowx, double upx,
959  const std::string& opt ) override;
960 
961  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& tit, int nx, double lowx, double upx,
962  double upper, double lower, const std::string& opt ) override;
963 
964  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, const Edges& x,
965  const std::string& /* opt */ ) override;
966 
967  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, const Edges& x, double upper,
968  double lower, const std::string& /* opt */ ) override;
969 
970  AIDA::IProfile1D* createProfile1D( const std::string& nametit, int nx, double lowx, double upx ) override;
971 
972  AIDA::IProfile1D* createProfile1D( const std::string& nametit, int nx, double lowx, double upx, double upper,
973  double lower ) override;
974 
975  AIDA::IProfile1D* createCopy( const std::string& full, const AIDA::IProfile1D& h ) override;
976 
977  AIDA::IProfile1D* createCopy( const std::string& par, const std::string& rel, const AIDA::IProfile1D& h );
978 
979  AIDA::IProfile1D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IProfile1D& h );
980 
981  AIDA::IProfile1D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IProfile1D& h );
982 
983  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& tit, int nx, double lowx, double upx,
984  int ny, double lowy, double upy );
985 
986  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& tit, int nx, double lowx, double upx,
987  int ny, double lowy, double upy, const std::string& /*opt*/ ) override;
988 
989  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, const Edges& x, const Edges& y,
990  const std::string& /*opt*/ ) override;
991 
992  AIDA::IProfile2D* createProfile2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
993  double lowy, double upy ) override;
994 
995  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& tit, int nx, double lowx, double upx,
996  int ny, double lowy, double upy, double upper, double lower );
997 
998  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& tit, int nx, double lowx, double upx,
999  int ny, double lowy, double upy, double upper, double lower,
1000  const std::string& /*opt*/ ) override;
1001 
1002  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, const Edges& x, const Edges& y,
1003  double upper, double lower, const std::string& /*opt*/ ) override;
1004 
1005  AIDA::IProfile2D* createProfile2D( const std::string& nameAndTitle, int nx, double lowx, double upx, int ny,
1006  double lowy, double upy, double upper, double lower ) override;
1007 
1008  AIDA::IProfile2D* createCopy( const std::string& full, const AIDA::IProfile2D& h ) override;
1009 
1010  AIDA::IProfile2D* createCopy( const std::string& par, const std::string& rel, const AIDA::IProfile2D& h );
1011 
1012  AIDA::IProfile2D* createCopy( const std::pair<std::string, std::string>& loc, const AIDA::IProfile2D& h );
1013 
1014  AIDA::IProfile2D* createCopy( DataObject* pPar, const std::string& rel, const AIDA::IProfile2D& h );
1015 
1016  AIDA::ICloud1D* createCloud1D( const std::string&, const std::string&, int, const std::string& ) override
1017  {
1018  not_implemented();
1019  return nullptr;
1020  }
1021 
1022  AIDA::ICloud1D* createCloud1D( const std::string& ) override
1023  {
1024  not_implemented();
1025  return nullptr;
1026  }
1027 
1028  AIDA::ICloud1D* createCopy( const std::string&, const AIDA::ICloud1D& ) override
1029  {
1030  not_implemented();
1031  return nullptr;
1032  }
1033 
1034  AIDA::ICloud2D* createCloud2D( const std::string&, const std::string&, int, const std::string& ) override
1035  {
1036  not_implemented();
1037  return nullptr;
1038  }
1039 
1040  AIDA::ICloud2D* createCloud2D( const std::string& ) override
1041  {
1042  not_implemented();
1043  return nullptr;
1044  }
1045 
1046  AIDA::ICloud2D* createCopy( const std::string&, const AIDA::ICloud2D& ) override
1047  {
1048  not_implemented();
1049  return nullptr;
1050  }
1051 
1052  AIDA::ICloud3D* createCloud3D( const std::string&, const std::string&, int, const std::string& ) override
1053  {
1054  not_implemented();
1055  return nullptr;
1056  }
1057 
1058  AIDA::ICloud3D* createCloud3D( const std::string& ) override
1059  {
1060  not_implemented();
1061  return nullptr;
1062  }
1063 
1064  AIDA::ICloud3D* createCopy( const std::string&, const AIDA::ICloud3D& ) override
1065  {
1066  not_implemented();
1067  return nullptr;
1068  }
1069 
1075 
1077  std::ostream& print( Base* h, std::ostream& s = std::cout ) const override;
1078 
1080  std::ostream& write( Base* h, std::ostream& s = std::cout ) const override;
1081 
1083  int write( Base* h, const char* file_name ) const override;
1084 
1086  DataObject* createPath( const std::string& newPath ) override;
1087 
1092  DataObject* createDirectory( const std::string& parentDir, const std::string& subDir ) override;
1093 
1095  void update1Ddefs( Gaudi::Details::PropertyBase& );
1096 
1098 
1099 private:
1100  Gaudi::Property<DBaseEntries> m_input{this, "Input", {}, "input streams"};
1101  Gaudi::Property<Histo1DMap> m_defs1D{this, "Predefined1DHistos", {}, "histograms with predefined parameters"};
1102 
1103  // modified histograms:
1105 };
1106 #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:381
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.
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.
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
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
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:890
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
virtual StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject)=0
Register object with the data store.
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:876
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:883
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
StatusCode find(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:95
HistogramSvc class definition.
Definition: HistogramSvc.h:56