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 "HistogramUtility.h"
25 #include "Axis.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  template <class T>
39  static DataObject* cast(T* p)
40  {
41  DataObject* q = dynamic_cast<DataObject*>( p );
42  if ( !q && p ) {
43  throw std::runtime_error( "HistogramSvc: Unexpected object type." );
44  }
45  return q;
46  }
47 }
48 
49 // ============================================================================
55 class HistogramSvc : public extends<DataSvc, IHistogramSvc>, virtual public AIDA::IHistogramFactory
56 {
57 
58 private:
59 
60  void not_implemented() const
61  {
62  error() << "Sorry, not yet implemented..." << endmsg;
63  }
64 
65 protected:
66 
67  typedef AIDA::IHistogram3D H3D;
68  typedef AIDA::IProfile2D P2D;
69  typedef AIDA::IBaseHistogram Base;
70 
71  struct Helper {
73  Helper( HistogramSvc* p ) : m_svc( p ) {}
74  template <class A1, class A3>
75  StatusCode retrieve( A1 a1, A3*& a3 )
76  {
77  DataObject* pObject = nullptr;
78  StatusCode sc = m_svc->DataSvc::retrieveObject( a1, pObject );
79  a3 = dynamic_cast<A3*>( pObject );
80  return sc;
81  }
82  template <class A1, class A2, class A3>
83  StatusCode retrieve( A1 a1, A2 a2, A3*& a3 )
84  {
85  DataObject* pObject = nullptr;
86  StatusCode sc = m_svc->DataSvc::retrieveObject( a1, a2, pObject );
87  a3 = dynamic_cast<A3*>( pObject );
88  return sc;
89  }
90  template <class A1, class A3>
91  StatusCode find( A1 a1, A3*& a3 )
92  {
93  DataObject* pObject = nullptr;
94  StatusCode sc = m_svc->DataSvc::findObject( a1, pObject );
95  a3 = dynamic_cast<A3*>( pObject );
96  return sc;
97  }
98  template <class A1, class A2, class A3>
99  StatusCode find( A1 a1, A2 a2, A3*& a3 )
100  {
101  DataObject* pObject = nullptr;
102  StatusCode sc = m_svc->DataSvc::findObject( a1, a2, pObject );
103  a3 = dynamic_cast<A3*>( pObject );
104  return sc;
105  }
106  template <class R, class S, class T1, class T2>
107  static R* act( R* res, const S& b, void ( T1::*pmf )( const T2*, Double_t ), Double_t scale )
108  {
109  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
110  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
111  if ( h1 && h2 ) {
112  ( h1->*pmf )( h2, scale );
113  return res;
114  }
115  return nullptr;
116  }
117  template <class R, class S, class T1, class T2>
118  static R* act( R* res, const S& b, Bool_t ( T1::*pmf )( const T2*, Double_t ), Double_t scale )
119  {
120  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
121  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
122  if ( h1 && h2 ) {
123  ( h1->*pmf )( h2, scale );
124  return res;
125  }
126  return nullptr;
127  }
128  template <class R, class S, class T1, class T2>
129  static R* act( R* res, const S& b, void ( T1::*pmf )( const T2* ) )
130  {
131  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
132  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
133  if ( h1 && h2 ) {
134  ( h1->*pmf )( h2 );
135  return res;
136  }
137  return nullptr;
138  }
139  template <class R, class S, class T1, class T2>
140  static R* act( R* res, const S& b, Bool_t ( T1::*pmf )( const T2* ) )
141  {
142  auto h1 = Gaudi::getRepresentation<R, T1>( *res );
143  const auto h2 = Gaudi::getRepresentation<R, T2>( b );
144  if ( h1 && h2 ) {
145  ( h1->*pmf )( h2 );
146  return res;
147  }
148  return nullptr;
149  }
150  };
151 
152 public:
153 
156 
161  HistogramSvc( const std::string& name, ISvcLocator* svc );
162 
164  ~HistogramSvc() override;
165 
171  std::pair<std::string, std::string> i_splitPath( const std::string& full );
172 
176  StatusCode connectInput( const std::string& ident );
177 
178  template <class T>
179  inline T* i_book( DataObject* pPar, const std::string& rel, const std::string& title, const std::pair<DataObject*, T*>& o )
180  {
181  if ( o.first && registerObject( pPar, rel, (Base*)o.second ).isSuccess() ) return o.second;
182  delete o.first;
183  throw GaudiException( "Cannot book " + System::typeinfoName( typeid( T ) ) + " " + title, "HistogramSvc",
185  }
186 
188  AIDA::IHistogram2D* i_project( const std::string& nameAndTitle, const AIDA::IHistogram3D& h, const std::string& dir );
189 
190 public:
191 
193  StatusCode initialize() override;
195  StatusCode reinitialize() override;
197  StatusCode finalize() override;
198 
200  AIDA::IHistogramFactory* histogramFactory() override { return this; }
201 
202  // ==========================================================================
203  // Book 1D histogram with fix binning
204  // ==========================================================================
221  AIDA::IHistogram1D* book( const std::string& par, const std::string& rel, const std::string& title,
222  int nx, double lowx, double upx ) override;
223 
224  AIDA::IHistogram1D* book( const std::string& par, int hID, const std::string& title,
225  int nx, double lowx, double upx ) override;
226 
227  AIDA::IHistogram1D* book( DataObject* pPar, int hID, const std::string& title,
228  int nx, double lowx, double upx ) override;
229 
230  AIDA::IHistogram1D* book( DataObject* pPar, const std::string& rel, const std::string& title,
231  int nx, double lowx, double upx ) override;
232 
233  virtual AIDA::IHistogram1D* book( const std::pair<std::string, std::string>& loc, const std::string& title,
234  int nx, double lowx, double upx );
235 
236  AIDA::IHistogram1D* book( const std::string& full, const std::string& title,
237  int nx, double lowx, double upx ) override;
238 
239  // ==========================================================================
240  // Book 1D Profile histogram with fix binning
241  // ==========================================================================
258  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title,
259  int nx, double lowx, double upx, const std::string& opt ) override;
260 
261  AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title,
262  int nx, double lowx, double upx, const std::string& opt ) override;
263 
264  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title,
265  int nx, double lowx, double upx, const std::string& opt ) override;
266 
267  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc,
268  const std::string& title,
269  int nx, double lowx, double upx, const std::string& opt );
270 
271  AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title,
272  int nx, double lowx, double upx, const std::string& opt ) override;
273 
274  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title,
275  int nx, double lowx, double upx, const std::string& opt ) override;
276 
277  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel, const std::string& title,
278  int nx, double lowx, double upx,
279  double upper, double lower, const std::string& opt ) override;
280 
281  AIDA::IProfile1D* bookProf( const std::string& par, int hID, const std::string& title,
282  int nx, double lowx, double upx,
283  double upper, double lower, const std::string& opt ) override;
284 
285  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID, const std::string& title,
286  int nx, double lowx, double upx,
287  double upper, double lower, const std::string& opt ) override;
288 
289  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc,
290  const std::string& title,
291  int nx, double lowx, double upx,
292  double upper, double lower, const std::string& opt );
293 
294  AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title,
295  int nx, double lowx, double upx,
296  double upper, double lower, const std::string& opt ) override;
297 
298  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel, const std::string& title,
299  int nx, double lowx, double upx,
300  double upper, double lower, const std::string& opt ) override;
301 
302  // ==========================================================================
303  // Book 1D histogram with variable binning
304  // ==========================================================================
319  AIDA::IHistogram1D* book( const std::string& par, int hID,
320  const std::string& title, Edges e ) override;
321 
322  AIDA::IHistogram1D* book( DataObject* pPar, int hID,
323  const std::string& title, Edges e ) override;
324 
325  AIDA::IHistogram1D* book( const std::string& par, const std::string& rel,
326  const std::string& title, Edges e ) override;
327 
328  virtual AIDA::IHistogram1D* book( const std::pair<std::string, std::string>& loc,
329  const std::string& title, Edges e );
330 
331  AIDA::IHistogram1D* book( const std::string& full,
332  const std::string& title, Edges e ) override;
333 
334  AIDA::IHistogram1D* book( DataObject* pPar, const std::string& rel,
335  const std::string& title, Edges e ) override;
336 
337  // ==========================================================================
338  // Book 1D profile histogram with variable binning
339  // ==========================================================================
354  AIDA::IProfile1D* bookProf( const std::string& full,
355  const std::string& title, Edges e ) override;
356 
357  AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel,
358  const std::string& title, Edges e ) override;
359 
360  AIDA::IProfile1D* bookProf( const std::string& par, int hID,
361  const std::string& title, Edges e ) override;
362 
363  AIDA::IProfile1D* bookProf( DataObject* pPar, int hID,
364  const std::string& title, Edges e ) override;
365 
366  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc,
367  const std::string& title, Edges e );
368 
369  AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel,
370  const std::string& title, Edges e ) override;
371 
372  virtual AIDA::IProfile1D* bookProf( const std::string& full, const std::string& title,
373  Edges e, double upper, double lower );
374 
375  virtual AIDA::IProfile1D* bookProf( const std::string& par, const std::string& rel,
376  const std::string& title, Edges e,
377  double upper, double lower );
378 
379  virtual AIDA::IProfile1D* bookProf( const std::string& par, int hID,
380  const std::string& title, Edges e,
381  double upper, double lower );
382 
383  virtual AIDA::IProfile1D* bookProf( DataObject* pPar, int hID,
384  const std::string& title, Edges e,
385  double upper, double lower );
386 
387  virtual AIDA::IProfile1D* bookProf( const std::pair<std::string, std::string>& loc,
388  const std::string& title, Edges e,
389  double upper, double lower );
390 
391  virtual AIDA::IProfile1D* bookProf( DataObject* pPar, const std::string& rel,
392  const std::string& title, Edges e,
393  double upper, double lower );
394 
395  // ==========================================================================
396  // Book 2D histogram with fixed binning
397  // ==========================================================================
417  AIDA::IHistogram2D* book( const std::string& full, const std::string& title,
418  int nx, double lowx, double upx,
419  int ny, double lowy, double upy ) override;
420 
421  AIDA::IHistogram2D* book( const std::string& par, const std::string& rel,
422  const std::string& title,
423  int nx, double lowx, double upx,
424  int ny, double lowy, double upy ) override;
425 
426  AIDA::IHistogram2D* book( const std::string& par, int hID, const std::string& title,
427  int nx, double lowx, double upx,
428  int ny, double lowy, double upy ) override;
429 
430  virtual AIDA::IHistogram2D* book( const std::pair<std::string, std::string>& loc,
431  const std::string& title,
432  int nx, double lowx, double upx,
433  int ny, double lowy, double upy );
434 
435  AIDA::IHistogram2D* book( DataObject* pPar, int hID, const std::string& title,
436  int nx, double lowx, double upx,
437  int ny, double lowy, double upy ) override;
438 
439  AIDA::IHistogram2D* book( DataObject* pPar, const std::string& rel,
440  const std::string& title,
441  int nx, double lowx, double upx,
442  int ny, double lowy, double upy ) override;
443 
444 
445  // ==========================================================================
446  // Book 2D profile histogram with fixed binning
447  // ==========================================================================
467  virtual AIDA::IProfile2D* bookProf( const std::string& full,
468  const std::string& title,
469  int nx, double lowx, double upx,
470  int ny, double lowy, double upy,
471  double upper, double lower );
472 
473  virtual AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel,
474  const std::string& title,
475  int nx, double lowx, double upx,
476  int ny, double lowy, double upy,
477  double upper, double lower );
478 
479  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc,
480  const std::string& title,
481  int nx, double lowx, double upx,
482  int ny, double lowy, double upy,
483  double upper, double lower );
484 
485  virtual AIDA::IProfile2D* bookProf( const std::string& par, int hID,
486  const std::string& title,
487  int nx, double lowx, double upx,
488  int ny, double lowy, double upy,
489  double upper, double lower );
490 
491  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, int hID, const std::string& title,
492  int nx, double lowx, double upx,
493  int ny, double lowy, double upy,
494  double upper, double lower );
495 
496  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel,
497  const std::string& title,
498  int nx, double lowx, double upx,
499  int ny, double lowy, double upy,
500  double upper, double lower );
501 
502  AIDA::IProfile2D* bookProf( const std::string& full,
503  const std::string& title,
504  int nx, double lowx, double upx,
505  int ny, double lowy, double upy ) override;
506 
507  AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel,
508  const std::string& title,
509  int nx, double lowx, double upx,
510  int ny, double lowy, double upy ) override;
511 
512  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc,
513  const std::string& title,
514  int nx, double lowx, double upx,
515  int ny, double lowy, double upy );
516 
517  AIDA::IProfile2D* bookProf( const std::string& par, int hID,
518  const std::string& title,
519  int nx, double lowx, double upx,
520  int ny, double lowy, double upy ) override;
521 
522  AIDA::IProfile2D* bookProf( DataObject* pPar, int hID,
523  const std::string& title,
524  int nx, double lowx, double upx,
525  int ny, double lowy, double upy ) override;
526 
527  AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel,
528  const std::string& title,
529  int nx, double lowx, double upx,
530  int ny, double lowy, double upy ) override;
531 
532  // ==========================================================================
533  // Book 2D histogram with variable binning
534  // ==========================================================================
549  AIDA::IHistogram2D* book( const std::string& full,
550  const std::string& title,
551  Edges x, Edges y ) override;
552 
553  AIDA::IHistogram2D* book( const std::string& par, const std::string& rel,
554  const std::string& title,
555  Edges x, Edges y ) override;
556 
557  AIDA::IHistogram2D* book( const std::string& par, int hID,
558  const std::string& title,
559  Edges x, Edges y ) override;
560 
561  virtual AIDA::IHistogram2D* book( const std::pair<std::string, std::string>& loc,
562  const std::string& title,
563  Edges x, Edges y );
564 
565  AIDA::IHistogram2D* book( DataObject* pPar, int hID,
566  const std::string& title,
567  Edges x, Edges y ) override;
568 
569  AIDA::IHistogram2D* book( DataObject* pPar, const std::string& rel,
570  const std::string& title,
571  Edges x, Edges y ) override;
572 
573  // ==========================================================================
574  // Book 2D profile histogram with variable binning
575  // ==========================================================================
590  AIDA::IProfile2D* bookProf( const std::string& full,
591  const std::string& title,
592  Edges x, Edges y ) override;
593 
594  AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel,
595  const std::string& title,
596  Edges x, Edges y ) override;
597 
598  AIDA::IProfile2D* bookProf( const std::string& par, int hID,
599  const std::string& title,
600  Edges x, Edges y ) override;
601 
602  AIDA::IProfile2D* bookProf( DataObject* pPar, int hID,
603  const std::string& title,
604  Edges x, Edges y ) override;
605 
606  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc,
607  const std::string& title,
608  Edges x, Edges y );
609 
610  AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel,
611  const std::string& title,
612  Edges x, Edges y ) override;
613 
614  virtual AIDA::IProfile2D* bookProf( const std::string& full,
615  const std::string& title,
616  Edges x, Edges y,
617  double upper, double lower );
618 
619  virtual AIDA::IProfile2D* bookProf( const std::string& par, const std::string& rel,
620  const std::string& title,
621  Edges x, Edges y,
622  double upper, double lower );
623 
624  virtual AIDA::IProfile2D* bookProf( const std::string& par, int hID,
625  const std::string& title,
626  Edges x, Edges y,
627  double upper, double lower );
628 
629  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, int hID,
630  const std::string& title,
631  Edges x, Edges y,
632  double upper, double lower );
633 
634  virtual AIDA::IProfile2D* bookProf( const std::pair<std::string, std::string>& loc,
635  const std::string& title,
636  Edges x, Edges y,
637  double upper, double lower );
638 
639  virtual AIDA::IProfile2D* bookProf( DataObject* pPar, const std::string& rel,
640  const std::string& title,
641  Edges x, Edges y,
642  double upper, double lower );
643 
644  // ==========================================================================
645  // Book 3D histogram with fixed binning
646  // ==========================================================================
663  AIDA::IHistogram3D* book( const std::string& full,
664  const std::string& title,
665  int nx, double lowx, double upx,
666  int ny, double lowy, double upy,
667  int nz, double lowz, double upz ) override;
668 
669  AIDA::IHistogram3D* book( const std::string& par, const std::string& rel,
670  const std::string& title,
671  int nx, double lowx, double upx,
672  int ny, double lowy, double upy,
673  int nz, double lowz, double upz ) override;
674 
675  AIDA::IHistogram3D* book( const std::string& par, int hID,
676  const std::string& title,
677  int nx, double lowx, double upx,
678  int ny, double lowy, double upy,
679  int nz, double lowz, double upz ) override;
680 
681  AIDA::IHistogram3D* book( DataObject* pPar, int hID,
682  const std::string& title,
683  int nx, double lowx, double upx,
684  int ny, double lowy, double upy,
685  int nz, double lowz, double upz ) override;
686 
687  virtual AIDA::IHistogram3D* book( const std::pair<std::string, std::string>& loc,
688  const std::string& title,
689  int nx, double lowx, double upx,
690  int ny, double lowy, double upy,
691  int nz, double lowz, double upz );
692 
693  AIDA::IHistogram3D* book( DataObject* pPar, const std::string& rel,
694  const std::string& title,
695  int nx, double lowx, double upx,
696  int ny, double lowy, double upy,
697  int nz, double lowz, double upz ) override;
698 
699  // ==========================================================================
700  // Book 3D histogram with variable binning
701  // ==========================================================================
718  AIDA::IHistogram3D* book( const std::string& full,
719  const std::string& title,
720  Edges x, Edges y, Edges z ) override;
721 
722  AIDA::IHistogram3D* book( const std::string& par, const std::string& rel,
723  const std::string& title,
724  Edges x, Edges y, Edges z ) override;
725 
726  AIDA::IHistogram3D* book( const std::string& par, int hID,
727  const std::string& title,
728  Edges x, Edges y, Edges z ) override;
729 
730  AIDA::IHistogram3D* book( DataObject* pPar, int hID,
731  const std::string& title,
732  Edges x, Edges y, Edges z ) override;
733 
734  virtual AIDA::IHistogram3D* book( const std::pair<std::string, std::string>& loc,
735  const std::string& title,
736  Edges x, Edges y, Edges z );
737 
738  AIDA::IHistogram3D* book( DataObject* pPar, const std::string& rel,
739  const std::string& title,
740  Edges x, Edges y, Edges z ) override;
741 
742  // ==========================================================================
743  // Register histogram with the data store
744  // ==========================================================================
745  StatusCode registerObject( const std::string& parent, const std::string& rel, Base* obj ) override;
746 
747  StatusCode registerObject( const std::string& parent, int item, Base* obj ) override;
748 
749  StatusCode registerObject( Base* pPar, const std::string& rel, Base* obj ) override;
750 
751  StatusCode registerObject( DataObject* pPar, int item, Base* obj ) override;
752 
753  StatusCode registerObject( Base* pPar, int item, Base* obj ) override;
754 
755  StatusCode registerObject( const std::string& full, Base* obj ) override;
756 
757  StatusCode registerObject( DataObject* pPar, const std::string& rel, Base* obj ) override;
758 
759  // ==========================================================================
760  // Unregister histogram from the data store
761  // ==========================================================================
762  StatusCode unregisterObject( Base* obj ) override;
763 
764  StatusCode unregisterObject( Base* obj, const std::string& objectPath ) override;
765 
766  StatusCode unregisterObject( Base* obj, int item ) override;
767 
768  // ==========================================================================
769  // Retrieve histogram from data store
770  // ==========================================================================
771  StatusCode retrieveObject( IRegistry* pReg, const std::string& path,
772  AIDA::IHistogram1D*& obj ) override;
773 
774  StatusCode retrieveObject( IRegistry* pReg, const std::string& path,
775  AIDA::IProfile1D*& obj ) override;
776 
777  StatusCode retrieveObject( IRegistry* pReg, const std::string& path,
778  AIDA::IHistogram2D*& obj ) override;
779 
780  StatusCode retrieveObject( IRegistry* pReg, const std::string& path,
781  AIDA::IProfile2D*& obj ) override;
782 
783  StatusCode retrieveObject( IRegistry* pReg, const std::string& path,
784  AIDA::IHistogram3D*& obj ) override;
785 
786  StatusCode retrieveObject( const std::string& full,
787  AIDA::IProfile1D*& obj ) override;
788 
789  StatusCode retrieveObject( const std::string& full,
790  AIDA::IProfile2D*& obj ) override;
791 
792  StatusCode retrieveObject( const std::string& full,
793  AIDA::IHistogram1D*& obj ) override;
794 
795  StatusCode retrieveObject( const std::string& full,
796  AIDA::IHistogram2D*& obj ) override;
797 
798  StatusCode retrieveObject( const std::string& full,
799  AIDA::IHistogram3D*& obj ) override;
800 
801  StatusCode retrieveObject( const std::string& parent, const std::string& rel,
802  AIDA::IProfile1D*& obj ) override;
803 
804  StatusCode retrieveObject( const std::string& parent, const std::string& rel,
805  AIDA::IProfile2D*& obj ) override;
806 
807  StatusCode retrieveObject( const std::string& parent, const std::string& rel,
808  AIDA::IHistogram1D*& obj ) override;
809 
810  StatusCode retrieveObject( const std::string& parent, const std::string& rel,
811  AIDA::IHistogram2D*& obj ) override;
812 
813  StatusCode retrieveObject( const std::string& parent, const std::string& rel,
814  AIDA::IHistogram3D*& obj ) override;
815 
816  StatusCode retrieveObject( const std::string& parent, int item,
817  AIDA::IProfile1D*& obj ) override;
818 
819  StatusCode retrieveObject( const std::string& parent, int item,
820  AIDA::IProfile2D*& obj ) override;
821 
822  StatusCode retrieveObject( const std::string& parent, int item,
823  AIDA::IHistogram1D*& obj ) override;
824 
825  StatusCode retrieveObject( const std::string& parent, int item,
826  AIDA::IHistogram2D*& obj ) override;
827 
828  StatusCode retrieveObject( const std::string& parent, int item,
829  AIDA::IHistogram3D*& obj ) override;
830 
831  StatusCode retrieveObject( DataObject* par, const std::string& item,
832  AIDA::IProfile1D*& obj ) override;
833 
834  StatusCode retrieveObject( DataObject* par, const std::string& item,
835  AIDA::IProfile2D*& obj ) override;
836 
837  StatusCode retrieveObject( DataObject* par, const std::string& item,
838  AIDA::IHistogram1D*& obj ) override;
839 
840  StatusCode retrieveObject( DataObject* par, const std::string& item,
841  AIDA::IHistogram2D*& obj ) override;
842 
843  StatusCode retrieveObject( DataObject* par, const std::string& item,
844  AIDA::IHistogram3D*& obj ) override;
845 
846  StatusCode retrieveObject( DataObject* par, int item,
847  AIDA::IProfile1D*& obj ) override;
848 
849  StatusCode retrieveObject( DataObject* par, int item,
850  AIDA::IProfile2D*& obj ) override;
851 
852  StatusCode retrieveObject( DataObject* par, int item,
853  AIDA::IHistogram1D*& obj ) override;
854 
855  StatusCode retrieveObject( DataObject* par, int item,
856  AIDA::IHistogram2D*& obj ) override;
857 
858  StatusCode retrieveObject( DataObject* par, int item,
859  AIDA::IHistogram3D*& obj ) override;
860 
861  StatusCode retrieveObject( Base* par, int item,
862  AIDA::IProfile1D*& obj ) override;
863 
864  StatusCode retrieveObject( Base* par, int item,
865  AIDA::IProfile2D*& obj ) override;
866 
867  StatusCode retrieveObject( Base* par, int item,
868  AIDA::IHistogram1D*& obj ) override;
869 
870  StatusCode retrieveObject( Base* par, int item,
871  AIDA::IHistogram2D*& obj ) override;
872 
873  StatusCode retrieveObject( Base* par, int item,
874  AIDA::IHistogram3D*& obj ) override;
875 
876  StatusCode retrieveObject( Base* par, const std::string& item,
877  AIDA::IProfile1D*& obj ) override;
878 
879  StatusCode retrieveObject( Base* par, const std::string& item,
880  AIDA::IProfile2D*& obj ) override;
881 
882  StatusCode retrieveObject( Base* par, const std::string& item,
883  AIDA::IHistogram1D*& obj ) override;
884 
885  StatusCode retrieveObject( Base* par, const std::string& item,
886  AIDA::IHistogram2D*& obj ) override;
887 
888  StatusCode retrieveObject( Base* par, const std::string& item,
889  AIDA::IHistogram3D*& obj ) override;
890 
891  // ==========================================================================
892  // Find histogram identified by its full path in the data store
893  // ==========================================================================
894  StatusCode findObject( IRegistry* pReg, const std::string& path,
895  AIDA::IProfile1D*& obj ) override;
896 
897  StatusCode findObject( IRegistry* pReg, const std::string& path,
898  AIDA::IProfile2D*& obj ) override;
899 
900  StatusCode findObject( IRegistry* pReg, const std::string& path,
901  AIDA::IHistogram1D*& obj ) override;
902 
903  StatusCode findObject( IRegistry* pReg, const std::string& path,
904  AIDA::IHistogram2D*& obj ) override;
905 
906  StatusCode findObject( IRegistry* pReg, const std::string& path,
907  AIDA::IHistogram3D*& obj ) override;
908 
909  StatusCode findObject( const std::string& full,
910  AIDA::IProfile1D*& obj ) override;
911 
912  StatusCode findObject( const std::string& full,
913  AIDA::IProfile2D*& obj ) override ;
914 
915  StatusCode findObject( const std::string& full,
916  AIDA::IHistogram1D*& obj ) override;
917 
918  StatusCode findObject( const std::string& full,
919  AIDA::IHistogram2D*& obj ) override;
920 
921  StatusCode findObject( const std::string& full,
922  AIDA::IHistogram3D*& obj ) override;
923 
924  StatusCode findObject( const std::string& par, const std::string& rel,
925  AIDA::IProfile1D*& obj ) override;
926 
927  StatusCode findObject( const std::string& par, const std::string& rel,
928  AIDA::IProfile2D*& obj ) override;
929 
930  StatusCode findObject( const std::string& par, const std::string& rel,
931  AIDA::IHistogram1D*& obj ) override;
932 
933  StatusCode findObject( const std::string& par, const std::string& rel,
934  AIDA::IHistogram2D*& obj ) override;
935 
936  StatusCode findObject( const std::string& par, const std::string& rel,
937  AIDA::IHistogram3D*& obj ) override;
938 
939  StatusCode findObject( const std::string& par, int item,
940  AIDA::IProfile1D*& obj ) override;
941 
942  StatusCode findObject( const std::string& par, int item,
943  AIDA::IProfile2D*& obj ) override;
944 
945  StatusCode findObject( const std::string& par, int item,
946  AIDA::IHistogram1D*& obj ) override;
947 
948  StatusCode findObject( const std::string& par, int item,
949  AIDA::IHistogram2D*& obj ) override;
950 
951  StatusCode findObject( const std::string& par, int item,
952  AIDA::IHistogram3D*& obj ) override;
953 
954  StatusCode findObject( DataObject* par, int item,
955  AIDA::IProfile1D*& obj ) override;
956 
957  StatusCode findObject( DataObject* par, int item,
958  AIDA::IProfile2D*& obj ) override;
959 
960  StatusCode findObject( DataObject* par, int item,
961  AIDA::IHistogram1D*& obj ) override;
962 
963  StatusCode findObject( DataObject* par, int item,
964  AIDA::IHistogram2D*& obj ) override;
965 
966  StatusCode findObject( DataObject* par, int item,
967  AIDA::IHistogram3D*& obj ) override;
968 
969  StatusCode findObject( DataObject* par, const std::string& item,
970  AIDA::IProfile1D*& obj ) override;
971 
972  StatusCode findObject( DataObject* par, const std::string& item,
973  AIDA::IProfile2D*& obj ) override;
974 
975  StatusCode findObject( DataObject* par, const std::string& item,
976  AIDA::IHistogram1D*& obj ) override;
977 
978  StatusCode findObject( DataObject* par, const std::string& item,
979  AIDA::IHistogram2D*& obj ) override;
980 
981  StatusCode findObject( DataObject* par, const std::string& item,
982  AIDA::IHistogram3D*& obj ) override;
983 
984  StatusCode findObject( Base* par, int item,
985  AIDA::IProfile1D*& obj ) override;
986 
987  StatusCode findObject( Base* par, int item,
988  AIDA::IProfile2D*& obj ) override;
989 
990  StatusCode findObject( Base* par, int item,
991  AIDA::IHistogram1D*& obj ) override;
992 
993  StatusCode findObject( Base* par, int item,
994  AIDA::IHistogram2D*& obj ) override;
995 
996  StatusCode findObject( Base* par, int item,
997  AIDA::IHistogram3D*& obj ) override;
998 
999  StatusCode findObject( Base* par, const std::string& item,
1000  AIDA::IProfile1D*& obj ) override;
1001 
1002  StatusCode findObject( Base* par, const std::string& item,
1003  AIDA::IProfile2D*& obj ) override;
1004 
1005  StatusCode findObject( Base* par, const std::string& item,
1006  AIDA::IHistogram1D*& obj ) override;
1007 
1008  StatusCode findObject( Base* par, const std::string& item,
1009  AIDA::IHistogram2D*& obj ) override;
1010 
1011  StatusCode findObject( Base* par, const std::string& item,
1012  AIDA::IHistogram3D*& obj ) override;
1013 
1014  // ==========================================================================
1015  // Projections and slices.
1016  // ==========================================================================
1017  AIDA::IHistogram1D* projectionX( const std::string& name,
1018  const AIDA::IHistogram2D& h ) override;
1019 
1020  AIDA::IHistogram1D* projectionY( const std::string& name,
1021  const AIDA::IHistogram2D& h ) override;
1022 
1023  AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h,
1024  int indexY ) override ;
1025 
1026  AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h,
1027  int indexX ) override ;
1028 
1029  AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h,
1030  int indexY1, int indexY2 ) override;
1031 
1032  AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h,
1033  int indexX1, int indexX2 ) override;
1034 
1035  bool destroy( IBaseHistogram* hist ) override;
1036 
1037  AIDA::IHistogram1D* add( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
1038  const AIDA::IHistogram1D& b ) override;
1039 
1040  AIDA::IHistogram1D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
1041  const AIDA::IHistogram1D& b ) override;
1042 
1043  AIDA::IHistogram1D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
1044  const AIDA::IHistogram1D& b ) override;
1045 
1046  AIDA::IHistogram1D* divide( const std::string& nameAndTitle, const AIDA::IHistogram1D& a,
1047  const AIDA::IHistogram1D& b ) override;
1048 
1049  AIDA::IHistogram2D* add( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
1050  const AIDA::IHistogram2D& b ) override;
1051 
1052  AIDA::IHistogram2D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
1053  const AIDA::IHistogram2D& b ) override;
1054 
1055  AIDA::IHistogram2D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
1056  const AIDA::IHistogram2D& b ) override;
1057 
1058  AIDA::IHistogram2D* divide( const std::string& nameAndTitle, const AIDA::IHistogram2D& a,
1059  const AIDA::IHistogram2D& b ) override;
1060 
1061  AIDA::IHistogram3D* add( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
1062  const AIDA::IHistogram3D& b ) override;
1063 
1064  AIDA::IHistogram3D* subtract( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
1065  const AIDA::IHistogram3D& b ) override;
1066 
1067  AIDA::IHistogram3D* multiply( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
1068  const AIDA::IHistogram3D& b ) override;
1069 
1070  AIDA::IHistogram3D* divide( const std::string& nameAndTitle, const AIDA::IHistogram3D& a,
1071  const AIDA::IHistogram3D& b ) override;
1072 
1073  AIDA::IHistogram2D* projectionXY( const std::string& nameAndTitle,
1074  const AIDA::IHistogram3D& h ) override ;
1075 
1076  AIDA::IHistogram2D* projectionXZ( const std::string& nameAndTitle,
1077  const AIDA::IHistogram3D& h ) override ;
1078 
1079  AIDA::IHistogram2D* projectionYZ( const std::string& nameAndTitle,
1080  const AIDA::IHistogram3D& h ) override ;
1081 
1082 
1083  AIDA::IHistogram2D* sliceXY( const std::string& /* nameAndTitle */,
1084  const AIDA::IHistogram3D& /* h */,
1085  int /* low */, int /* high */ ) override
1086  {
1087  not_implemented();
1088  return nullptr;
1089  }
1090 
1091  AIDA::IHistogram2D* sliceXZ( const std::string& /* nameAndTitle */,
1092  const AIDA::IHistogram3D& /* h */,
1093  int /* low */, int /* high */ ) override
1094  {
1095  not_implemented();
1096  return nullptr;
1097  }
1098 
1099  AIDA::IHistogram2D* sliceYZ( const std::string& /* nameAndTitle */,
1100  const AIDA::IHistogram3D& /* h */,
1101  int /* low */, int /* high */ ) override
1102  {
1103  not_implemented();
1104  return nullptr;
1105  }
1106 
1107  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& tit,
1108  int nx, double lowx, double upx );
1109 
1110  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& tit,
1111  int nx, double lowx, double upx,
1112  const std::string& /*opt*/ ) override;
1113 
1114  AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title,
1115  const Edges& x,
1116  const std::string& /*opt*/ ) override;
1117 
1118  AIDA::IHistogram1D* createHistogram1D( const std::string& nameAndTitle,
1119  int nx, double lowx, double upx ) override;
1120 
1121  AIDA::IHistogram1D* createCopy( const std::string& full,
1122  const AIDA::IHistogram1D& h ) override;
1123 
1124  AIDA::IHistogram1D* createCopy( const std::string& par, const std::string& rel,
1125  const AIDA::IHistogram1D& h );
1126 
1127  AIDA::IHistogram1D* createCopy( const std::pair<std::string, std::string>& loc,
1128  const AIDA::IHistogram1D& h );
1129 
1130  AIDA::IHistogram1D* createCopy( DataObject* pPar, const std::string& rel,
1131  const AIDA::IHistogram1D& h );
1132 
1133  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& tit,
1134  int nx, double lowx, double upx,
1135  int ny, double lowy, double upy );
1136 
1137  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& tit,
1138  int nx, double lowx, double upx,
1139  int ny, double lowy, double upy,
1140  const std::string& /*opt*/ ) override;
1141 
1142  AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title,
1143  const Edges& x, const Edges& y,
1144  const std::string& /*opt*/ ) override;
1145 
1146  AIDA::IHistogram2D* createHistogram2D( const std::string& nameAndTitle,
1147  int nx, double lowx, double upx,
1148  int ny, double lowy, double upy ) override;
1149 
1150  AIDA::IHistogram2D* createCopy( const std::string& full,
1151  const AIDA::IHistogram2D& h ) override;
1152 
1153  AIDA::IHistogram2D* createCopy( const std::string& par, const std::string& rel,
1154  const AIDA::IHistogram2D& h );
1155 
1156  AIDA::IHistogram2D* createCopy( const std::pair<std::string, std::string>& loc,
1157  const AIDA::IHistogram2D& h );
1158 
1159  AIDA::IHistogram2D* createCopy( DataObject* pPar, const std::string& rel,
1160  const AIDA::IHistogram2D& h );
1161 
1162  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& tit,
1163  int nx, double lowx, double upx,
1164  int ny, double lowy, double upy,
1165  int nz, double lowz, double upz );
1166 
1167  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& tit,
1168  int nx, double lowx, double upx,
1169  int ny, double lowy, double upy,
1170  int nz, double lowz, double upz,
1171  const std::string& /*opt*/ ) override;
1172 
1173  AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title,
1174  const Edges& x, const Edges& y, const Edges& z,
1175  const std::string& /*opt*/ ) override;
1176 
1177  AIDA::IHistogram3D* createHistogram3D( const std::string& nameAndTitle,
1178  int nx, double lowx, double upx,
1179  int ny, double lowy, double upy,
1180  int nz, double lowz, double upz ) override;
1181 
1182  AIDA::IHistogram3D* createCopy( const std::string& full,
1183  const AIDA::IHistogram3D& h ) override;
1184 
1185  AIDA::IHistogram3D* createCopy( const std::string& par, const std::string& rel,
1186  const AIDA::IHistogram3D& h );
1187 
1188  AIDA::IHistogram3D* createCopy( const std::pair<std::string, std::string>& loc,
1189  const AIDA::IHistogram3D& h );
1190 
1191  AIDA::IHistogram3D* createCopy( DataObject* pPar, const std::string& rel,
1192  const AIDA::IHistogram3D& h );
1193 
1194 
1195  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& tit,
1196  int nx, double lowx, double upx,
1197  const std::string& opt ) override;
1198 
1199  AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& tit,
1200  int nx, double lowx, double upx,
1201  double upper, double lower,
1202  const std::string& opt ) override;
1203 
1204  AIDA::IProfile1D* createProfile1D( const std::string& name,
1205  const std::string& title, const Edges& x,
1206  const std::string& /* opt */ ) override;
1207 
1208  AIDA::IProfile1D* createProfile1D( const std::string& name,
1209  const std::string& title, const Edges& x,
1210  double upper, double lower,
1211  const std::string& /* opt */ ) override;
1212 
1213  AIDA::IProfile1D* createProfile1D( const std::string& nametit,
1214  int nx, double lowx, double upx ) override;
1215 
1216  AIDA::IProfile1D* createProfile1D( const std::string& nametit,
1217  int nx, double lowx, double upx,
1218  double upper, double lower ) override;
1219 
1220  AIDA::IProfile1D* createCopy( const std::string& full,
1221  const AIDA::IProfile1D& h ) override;
1222 
1223  AIDA::IProfile1D* createCopy( const std::string& par, const std::string& rel,
1224  const AIDA::IProfile1D& h );
1225 
1226  AIDA::IProfile1D* createCopy( const std::pair<std::string, std::string>& loc,
1227  const AIDA::IProfile1D& h );
1228 
1229  AIDA::IProfile1D* createCopy( DataObject* pPar, const std::string& rel,
1230  const AIDA::IProfile1D& h );
1231 
1232  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& tit,
1233  int nx, double lowx, double upx,
1234  int ny, double lowy, double upy );
1235 
1236  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& tit,
1237  int nx, double lowx, double upx,
1238  int ny, double lowy, double upy,
1239  const std::string& /*opt*/ ) override;
1240 
1241  AIDA::IProfile2D* createProfile2D( const std::string& name,
1242  const std::string& title,
1243  const Edges& x, const Edges& y,
1244  const std::string& /*opt*/ ) override;
1245 
1246  AIDA::IProfile2D* createProfile2D( const std::string& nameAndTitle,
1247  int nx, double lowx, double upx,
1248  int ny, double lowy, double upy ) override;
1249 
1250  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& tit,
1251  int nx, double lowx, double upx,
1252  int ny, double lowy, double upy,
1253  double upper, double lower );
1254 
1255  AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& tit,
1256  int nx, double lowx, double upx,
1257  int ny, double lowy, double upy,
1258  double upper, double lower, const std::string& /*opt*/ ) override;
1259 
1260  AIDA::IProfile2D* createProfile2D( const std::string& name,
1261  const std::string& title,
1262  const Edges& x, const Edges& y,
1263  double upper, double lower,
1264  const std::string& /*opt*/ ) override;
1265 
1266  AIDA::IProfile2D* createProfile2D( const std::string& nameAndTitle,
1267  int nx, double lowx, double upx,
1268  int ny, double lowy, double upy,
1269  double upper, double lower ) override;
1270 
1271  AIDA::IProfile2D* createCopy( const std::string& full,
1272  const AIDA::IProfile2D& h ) override;
1273 
1274  AIDA::IProfile2D* createCopy( const std::string& par, const std::string& rel,
1275  const AIDA::IProfile2D& h );
1276 
1277  AIDA::IProfile2D* createCopy( const std::pair<std::string, std::string>& loc,
1278  const AIDA::IProfile2D& h );
1279 
1280  AIDA::IProfile2D* createCopy( DataObject* pPar, const std::string& rel,
1281  const AIDA::IProfile2D& h );
1282 
1283  AIDA::ICloud1D* createCloud1D( const std::string&, const std::string&,
1284  int, const std::string& ) override
1285  {
1286  not_implemented();
1287  return nullptr;
1288  }
1289 
1290  AIDA::ICloud1D* createCloud1D(const std::string&) override
1291  {
1292  not_implemented();
1293  return nullptr;
1294  }
1295 
1296  AIDA::ICloud1D* createCopy(const std::string&, const AIDA::ICloud1D&) override
1297  {
1298  not_implemented();
1299  return nullptr;
1300  }
1301 
1302  AIDA::ICloud2D* createCloud2D( const std::string&, const std::string&,
1303  int, const std::string& ) override
1304  {
1305  not_implemented();
1306  return nullptr;
1307  }
1308 
1309  AIDA::ICloud2D* createCloud2D(const std::string&) override
1310  {
1311  not_implemented();
1312  return nullptr;
1313  }
1314 
1315  AIDA::ICloud2D* createCopy(const std::string&, const AIDA::ICloud2D&) override
1316  {
1317  not_implemented();
1318  return nullptr;
1319  }
1320 
1321  AIDA::ICloud3D* createCloud3D(const std::string&, const std::string&, int, const std::string&) override
1322  {
1323  not_implemented();
1324  return nullptr;
1325  }
1326 
1327  AIDA::ICloud3D* createCloud3D( const std::string& ) override
1328  {
1329  not_implemented();
1330  return nullptr;
1331  }
1332 
1333  AIDA::ICloud3D* createCopy( const std::string&, const AIDA::ICloud3D& ) override
1334  {
1335  not_implemented();
1336  return nullptr;
1337  }
1338 
1344 
1346  std::ostream& print( Base* h, std::ostream& s = std::cout ) const override;
1347 
1349  std::ostream& write( Base* h, std::ostream& s = std::cout ) const override;
1350 
1352  int write( Base* h, const char* file_name ) const override;
1353 
1355  DataObject* createPath( const std::string& newPath ) override;
1356 
1361  DataObject* createDirectory( const std::string& parentDir, const std::string& subDir ) override;
1362 
1364  void update1Ddefs( Gaudi::Details::PropertyBase& );
1365 
1367 
1368 private:
1369 
1370  Gaudi::Property<DBaseEntries> m_input{this, "Input", {}, "input streams"};
1371  Gaudi::Property<Histo1DMap> m_defs1D{this, "Predefined1DHistos", {}, "histograms with predefined parameters"};
1372 
1373  // modified histograms:
1375 
1376 };
1377 #endif // GAUDISVC_HISTOGRAMSVC_H
AIDA::ICloud3D * createCloud3D(const std::string &, const std::string &, int, const std::string &) override
Define general base for Gaudi exception.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
std::set< std::string > m_mods1D
GAUDI_API AIDA::IHistogram1D * book(IHistogramSvc *svc, const std::string &path, const Gaudi::Histo1DDef &hist)
helper function to book 1D-histogram
Definition: HistoDef.cpp:124
std::map< std::string, Gaudi::Histo1DDef > Histo1DMap
Implementation of property with value of concrete type.
Definition: Property.h:314
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
void not_implemented() const
Definition: HistogramSvc.h:60
StatusCode find(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:91
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:83
AIDA::ICloud1D * createCloud1D(const std::string &) override
STL class.
GaudiKernel.
Definition: Fill.h:8
HistogramSvc * m_svc
Definition: HistogramSvc.h:72
T * i_book(DataObject *pPar, const std::string &rel, const std::string &title, const std::pair< DataObject *, T * > &o)
Definition: HistogramSvc.h:179
STL class.
TupleObj.h GaudiAlg/TupleObj.h namespace with few technical implementations.
virtual StatusCode findObject(IRegistry *pDirectory, const std::string &path, DataObject *&pObject)=0
Find object identified by its directory entry.
virtual StatusCode unregisterObject(const std::string &fullPath)=0
Unregister object from the data store.
AIDA::ICloud1D * createCopy(const std::string &, const AIDA::ICloud1D &) override
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *))
Definition: HistogramSvc.h:129
AIDA::ICloud3D * createCloud3D(const std::string &) override
AIDA::IBaseHistogram Base
Definition: HistogramSvc.h:69
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
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
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:118
def bookProf(args, kwargs)
The trivial function to book 1D&2D profile histograms:
Definition: HistoUtils.py:232
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:200
void print(string text)
Definition: mergesort.cpp:33
AIDA::IHistogram2D * sliceXY(const std::string &, const AIDA::IHistogram3D &, int, int) override
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *))
Definition: HistogramSvc.h:140
string s
Definition: gaudirun.py:245
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *, Double_t), Double_t scale)
Definition: HistogramSvc.h:107
Helper(HistogramSvc *p)
Definition: HistogramSvc.h:73
StatusCode retrieve(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:75
AIDA::IProfile2D P2D
Definition: HistogramSvc.h:68
virtual StatusCode registerObject(const std::string &fullPath, DataObject *pObject)=0
Register object with the data store.
AIDA::IHistogram2D * sliceXZ(const std::string &, const AIDA::IHistogram3D &, int, int) override
AIDA::IHistogram3D H3D
Definition: HistogramSvc.h:67
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:244
AIDA::ICloud2D * createCopy(const std::string &, const AIDA::ICloud2D &) override
virtual StatusCode retrieveObject(IRegistry *pDirectory, const std::string &path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode find(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:99
HistogramSvc class definition.
Definition: HistogramSvc.h:55