| The Gaudi Framework v32r1 (f65d50dc)

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