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/System.h"
10 #include "GaudiKernel/DataSvc.h"
11 #include "GaudiKernel/IHistogramSvc.h"
12 #include "GaudiKernel/GaudiException.h"
13 #include "GaudiKernel/IRegistry.h"
14 #include "GaudiKernel/HistoProperty.h"
15 // ============================================================================
16 // AIDA
17 // ============================================================================
19 #include "AIDA_visibility_hack.h"
20 #include "AIDA/IHistogramFactory.h"
21 #include "AIDA/IAnnotation.h"
22 // ============================================================================
23 // local (+PI)
24 // ============================================================================
25 #include "Axis.h"
26 #include "GaudiPI.h"
27 #include "TH1.h"
28 #include "TH2.h"
29 #include "TH3.h"
30 // ============================================================================
31 namespace AIDA {
32  class ICloud1D;
33  class ICloud2D;
34  class ICloud3D;
35 }
36 // ============================================================================
37 // Forward declarations
38 #define DBINS(x) int n##x, double low##x, double up##x
39 #define BINS(x) n##x, low##x, up##x
40 #define NOT_IMPLEMENTED { not_implemented(); return 0; }
41 // ============================================================================
47 class HistogramSvc : virtual public extends1<DataSvc, IHistogramSvc>,
48  virtual public AIDA::IHistogramFactory
49 {
50 
51 private:
52  typedef const std::pair<std::string,std::string>& STRPAIR;
53  void not_implemented() const {
54  MsgStream log( msgSvc(), name() );
55  log << MSG::ERROR << "Sorry, not yet implemented..." << endmsg;
56  }
57 protected:
58  typedef const std::string& CSTR;
59  typedef std::vector<double> Edges;
60  typedef std::vector<std::string> DBaseEntries;
61  typedef AIDA::IHistogram1D H1D;
62  typedef AIDA::IHistogram2D H2D;
63  typedef AIDA::IHistogram3D H3D;
64  typedef AIDA::IProfile1D P1D;
65  typedef AIDA::IProfile2D P2D;
66  typedef AIDA::IBaseHistogram Base;
67  struct Helper {
69  Helper(HistogramSvc* p) : m_svc(p) {}
70  template <class A1, class A3> StatusCode retrieve(A1 a1, A3*& a3) {
71  DataObject* pObject = nullptr;
72  StatusCode sc = m_svc->DataSvc::retrieveObject(a1,pObject);
73  a3 = dynamic_cast<A3*>(pObject);
74  return sc;
75  }
76  template <class A1, class A2, class A3> StatusCode retrieve(A1 a1, A2 a2, A3*& a3) {
77  DataObject* pObject = nullptr;
78  StatusCode sc = m_svc->DataSvc::retrieveObject(a1,a2,pObject);
79  a3 = dynamic_cast<A3*>(pObject);
80  return sc;
81  }
82  template <class A1, class A3> StatusCode find(A1 a1, A3*& a3) {
83  DataObject* pObject = nullptr;
84  StatusCode sc = m_svc->DataSvc::findObject(a1,pObject);
85  a3 = dynamic_cast<A3*>(pObject);
86  return sc;
87  }
88  template <class A1, class A2, class A3> StatusCode find(A1 a1, A2 a2, A3*& a3) {
89  DataObject* pObject = nullptr;
90  StatusCode sc = m_svc->DataSvc::findObject(a1,a2,pObject);
91  a3 = dynamic_cast<A3*>(pObject);
92  return sc;
93  }
94  template <class R, class S, class T1, class T2>
95  static R* act(R* res,const S& b, void (T1::*pmf)(const T2*,Double_t), Double_t scale) {
96  T1 *h1 = Gaudi::getRepresentation<R,T1>(*res);
97  T1 *h2 = Gaudi::getRepresentation<R,T1>(b);
98  if ( h1 && h2 ) {
99  (h1->*pmf)(h2,scale);
100  return res;
101  }
102  return nullptr;
103  }
104  template <class R, class S, class T1, class T2>
105  static R* act(R* res,const S& b, Bool_t (T1::*pmf)(const T2*,Double_t), Double_t scale) {
106  T1 *h1 = Gaudi::getRepresentation<R,T1>(*res);
107  T1 *h2 = Gaudi::getRepresentation<R,T1>(b);
108  if ( h1 && h2 ) {
109  (h1->*pmf)(h2,scale);
110  return res;
111  }
112  return nullptr;
113  }
114  template <class R, class S, class T1, class T2>
115  static R* act(R* res,const S& b, void (T1::*pmf)(const T2*)) {
116  T1 *h1 = Gaudi::getRepresentation<R,T1>(*res);
117  T1 *h2 = Gaudi::getRepresentation<R,T1>(b);
118  if ( h1 && h2 ) {
119  (h1->*pmf)(h2);
120  return res;
121  }
122  return nullptr;
123  }
124  template <class R, class S, class T1, class T2>
125  static R* act(R* res,const S& b, Bool_t (T1::*pmf)(const T2*)) {
126  T1 *h1 = Gaudi::getRepresentation<R,T1>(*res);
127  T1 *h2 = Gaudi::getRepresentation<R,T1>(b);
128  if ( h1 && h2 ) {
129  (h1->*pmf)(h2);
130  return res;
131  }
132  return nullptr;
133  }
134  };
135 
136 
138  DBaseEntries m_input;
139 
140 public:
145  HistogramSvc(const std::string& name, ISvcLocator* svc );
146 
148  ~HistogramSvc() override;
149 
155  std::pair<std::string,std::string> i_splitPath(CSTR full);
156 
160  StatusCode connectInput(CSTR ident);
161 
162  template <class T> inline
163  T* i_book(DataObject* pPar,CSTR rel,CSTR title,const std::pair<DataObject*,T*>& o) {
164  if (o.first && registerObject(pPar, rel, (Base*)o.second).isSuccess())
165  return o.second;
166  delete o.first;
167  throw GaudiException("Cannot book "+System::typeinfoName(typeid(T))+" "+title,
168  "HistogramSvc",StatusCode::FAILURE);
169  }
170  template <class T> static DataObject* __cast(T* p) {
171  DataObject* q = dynamic_cast<DataObject*>(p);
172  if ( !q && p ) {
173  throw std::runtime_error("HistogramSvc: Unexpected object type.");
174  }
175  return q;
176  }
178  H2D* i_project(CSTR nameAndTitle,const H3D& h, CSTR dir);
179 
180 public:
182  StatusCode initialize () override;
184  StatusCode reinitialize () override;
186  StatusCode finalize () override;
187 
189  AIDA::IHistogramFactory* histogramFactory() override { return this; }
190 
191  // ==========================================================================
192  // Book 1D histogram with fix binning
193  // ==========================================================================
211  H1D* book(CSTR par, CSTR rel, CSTR title, DBINS(x)) override
212  { return book(createPath(par), rel, title, BINS(x)); }
213  H1D* book(CSTR par, int hID, CSTR title, DBINS(x)) override
214  { return book(par, std::to_string(hID), title, BINS(x)); }
215  H1D* book(DataObject* pPar, int hID, CSTR title, DBINS(x)) override
216  { return book(pPar, std::to_string(hID), title, BINS(x)); }
217  H1D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x)) override;
218  virtual H1D* book(STRPAIR loc,CSTR title, DBINS(x))
219  { return book(loc.first, loc.second, title, BINS(x)); }
220  H1D* book(CSTR full, CSTR title, DBINS(x)) override
221  { return book(i_splitPath(full), title, BINS(x)); }
222  // ==========================================================================
223  // Book 1D Profile histogram with fix binning
224  // ==========================================================================
242  P1D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x),CSTR opt) override
243  { return bookProf(createPath(par), rel, title, BINS(x),opt); }
244  P1D* bookProf(CSTR par, int hID, CSTR title, DBINS(x),CSTR opt ) override
245  { return bookProf(par, std::to_string(hID), title, BINS(x),opt); }
246  P1D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x),CSTR opt ) override
247  { return bookProf(pPar, std::to_string(hID), title, BINS(x),opt); }
248  virtual P1D* bookProf(STRPAIR loc,CSTR title, DBINS(x),CSTR opt)
249  { return bookProf(loc.first, loc.second, title, BINS(x),opt); }
250  P1D* bookProf(CSTR full, CSTR title, DBINS(x),CSTR opt) override
251  { return bookProf(i_splitPath(full), title, BINS(x),opt); }
252  P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x),CSTR opt) override
253  { return i_book(pPar,rel,title,Gaudi::createProf1D(title, BINS(x),0,0,opt)); }
254 
255  P1D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), double upper, double lower,CSTR opt) override
256  { return bookProf(createPath(par), rel, title, BINS(x), upper, lower , opt); }
257  P1D* bookProf(CSTR par, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
258  { return bookProf(par, std::to_string(hID), title, BINS(x), upper, lower, opt ); }
259  P1D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
260  { return bookProf(pPar, std::to_string(hID), title, BINS(x), upper, lower, opt); }
261  virtual P1D* bookProf(STRPAIR loc,CSTR title, DBINS(x), double upper, double lower, CSTR opt)
262  { return bookProf(loc.first, loc.second, title, BINS(x), upper, lower,opt); }
263  P1D* bookProf(CSTR full, CSTR title, DBINS(x), double upper, double lower, CSTR opt ) override
264  { return bookProf(i_splitPath(full), title, BINS(x), upper, lower , opt ); }
265  P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
266  { return i_book(pPar,rel,title,Gaudi::createProf1D(title, BINS(x), upper, lower, opt)); }
267  // ==========================================================================
268  // Book 1D histogram with variable binning
269  // ==========================================================================
284  H1D* book(CSTR par, int hID, CSTR title, Edges e) override
285  { return book(par, std::to_string(hID), title, e); }
286  H1D* book(DataObject* pPar, int hID, CSTR title, Edges e) override
287  { return book(pPar, std::to_string(hID), title, e); }
288  H1D* book(CSTR par, CSTR rel, CSTR title, Edges e ) override
289  { return book(createPath(par), rel, title, e); }
290  virtual H1D* book(STRPAIR loc,CSTR title, Edges e )
291  { return book(loc.first, loc.second, title, e); }
292  H1D* book(CSTR full, CSTR title, Edges e ) override
293  { return book(i_splitPath(full), title, e); }
294  H1D* book(DataObject* pPar, CSTR rel, CSTR title, Edges e ) override
295  { return i_book(pPar, rel, title, Gaudi::createH1D(title, e)); }
296 
297  // ==========================================================================
298  // Book 1D profile histogram with variable binning
299  // ==========================================================================
314  P1D* bookProf(CSTR full, CSTR title, Edges e ) override
315  { return bookProf(i_splitPath(full), title, e); }
316  P1D* bookProf(CSTR par, CSTR rel, CSTR title, Edges e ) override
317  { return bookProf(createPath(par), rel, title, e); }
318  P1D* bookProf(CSTR par, int hID, CSTR title, Edges e ) override
319  { return bookProf(par, std::to_string(hID), title, e); }
320  P1D* bookProf(DataObject* pPar, int hID, CSTR title, Edges e ) override
321  { return bookProf(pPar, std::to_string(hID), title, e); }
322  virtual P1D* bookProf(STRPAIR loc,CSTR title, Edges e)
323  { return bookProf(loc.first, loc.second, title, e); }
324  P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges e ) override
325  { return i_book(pPar,rel,title,Gaudi::createProf1D(title, e, 0, 0)); }
326 
327  virtual P1D* bookProf(CSTR full, CSTR title, Edges e, double upper, double lower)
328  { return bookProf(i_splitPath(full), title, e, upper, lower); }
329  virtual P1D* bookProf(CSTR par, CSTR rel, CSTR title, Edges e, double upper, double lower)
330  { return bookProf(createPath(par), rel, title, e, upper, lower); }
331  virtual P1D* bookProf(CSTR par, int hID, CSTR title, Edges e, double upper, double lower)
332  { return bookProf(par, std::to_string(hID), title, e, upper, lower); }
333  virtual P1D* bookProf(DataObject* pPar, int hID, CSTR title, Edges e, double upper, double lower)
334  { return bookProf(pPar, std::to_string(hID), title, e, upper, lower); }
335  virtual P1D* bookProf(STRPAIR loc,CSTR title, Edges e, double upper, double lower)
336  { return bookProf(loc.first, loc.second, title, e, upper, lower); }
337  virtual P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges e, double upper, double lower)
338  { return i_book(pPar,rel,title,Gaudi::createProf1D(title, e, upper, lower));}
339  // ==========================================================================
340  // Book 2D histogram with fixed binning
341  // ==========================================================================
359  H2D* book(CSTR full, CSTR title, DBINS(x), DBINS(y)) override
360  { return book(i_splitPath(full), title, BINS(x),BINS(y)); }
361  H2D* book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
362  { return book(createPath(par), rel, title, BINS(x),BINS(y)); }
363  H2D* book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y)) override
364  { return book(par,std::to_string(hID), title, BINS(x),BINS(y)); }
365  virtual H2D* book(STRPAIR loc,CSTR title, DBINS(x), DBINS(y))
366  { return book(loc.first, loc.second, title, BINS(x), BINS(y)); }
367  H2D* book(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y)) override
368  { return book(pPar,std::to_string(hID), title, BINS(x),BINS(y)); }
369  H2D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
370  { return i_book(pPar,rel,title,Gaudi::createH2D(title, BINS(x),BINS(y)));}
371  // ==========================================================================
372  // Book 2D profile histogram with fixed binning
373  // ==========================================================================
391  virtual P2D* bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
392  { return bookProf(i_splitPath(full), title, BINS(x),BINS(y), upper, lower); }
393  virtual P2D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
394  { return bookProf(createPath(par), rel, title, BINS(x),BINS(y), upper, lower); }
395  virtual P2D* bookProf(STRPAIR loc,CSTR title, DBINS(x), DBINS(y), double upper, double lower)
396  { return bookProf(loc.first, loc.second, title, BINS(x), BINS(y), upper, lower); }
397  virtual P2D* bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
398  { return bookProf(par, std::to_string(hID), title, BINS(x),BINS(y), upper, lower); }
399  virtual P2D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
400  { return bookProf(pPar,std::to_string(hID), title, BINS(x),BINS(y), upper, lower); }
401  virtual P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
402  { return i_book(pPar,rel,title,Gaudi::createProf2D(title, BINS(x),BINS(y), upper, lower)); }
403 
404  P2D* bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y)) override
405  { return bookProf(i_splitPath(full), title, BINS(x),BINS(y)); }
406  P2D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
407  { return bookProf(createPath(par), rel, title, BINS(x),BINS(y)); }
408  virtual P2D* bookProf(STRPAIR loc,CSTR title, DBINS(x), DBINS(y))
409  { return bookProf(loc.first, loc.second, title, BINS(x), BINS(y)); }
410  P2D* bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y)) override
411  { return bookProf(par, std::to_string(hID), title, BINS(x),BINS(y)); }
412  P2D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y)) override
413  { return bookProf(pPar,std::to_string(hID), title, BINS(x),BINS(y)); }
414  P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
415  { return i_book(pPar,rel,title,Gaudi::createProf2D(title, BINS(x),BINS(y),0,0));}
416  // ==========================================================================
417  // Book 2D histogram with variable binning
418  // ==========================================================================
433  H2D* book(CSTR full, CSTR title, Edges x, Edges y ) override
434  { return book(i_splitPath(full), title, x, y); }
435  H2D* book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y ) override
436  { return book(createPath(par), rel, title, x, y); }
437  H2D* book(CSTR par, int hID, CSTR title, Edges x, Edges y ) override
438  { return book(par, std::to_string(hID), title, x, y); }
439  virtual H2D* book(STRPAIR loc,CSTR title, Edges x, Edges y )
440  { return book(loc.first, loc.second, title, x, y); }
441  H2D* book(DataObject* pPar, int hID, CSTR title, Edges x, Edges y ) override
442  { return book(pPar, std::to_string(hID), title, x, y); }
443  H2D* book(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y ) override
444  { return i_book(pPar, rel, title, Gaudi::createH2D(title, x,y)); }
445  // ==========================================================================
446  // Book 2D profile histogram with variable binning
447  // ==========================================================================
462  P2D* bookProf(CSTR full, CSTR title, Edges x, Edges y ) override
463  { return bookProf(i_splitPath(full), title, x, y); }
464  P2D* bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y ) override
465  { return bookProf(createPath(par), rel, title, x, y); }
466  P2D* bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y ) override
467  { return bookProf(par, std::to_string(hID), title, x, y); }
468  P2D* bookProf(DataObject* pPar, int hID, CSTR title, Edges x, Edges y ) override
469  { return bookProf(pPar, std::to_string(hID), title, x, y); }
470  virtual P2D* bookProf(STRPAIR loc,CSTR title, Edges x, Edges y )
471  { return bookProf(loc.first, loc.second, title, x, y); }
472  P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y ) override
473  { return i_book(pPar, rel, title, Gaudi::createProf2D(title,x,y,0,0)); }
474 
475  virtual P2D* bookProf(CSTR full, CSTR title, Edges x, Edges y, double upper, double lower )
476  { return bookProf(i_splitPath(full), title, x, y, upper, lower); }
477  virtual P2D* bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower )
478  { return bookProf(createPath(par), rel, title, x, y, upper, lower); }
479  virtual P2D* bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y, double upper, double lower )
480  { return bookProf(par, std::to_string(hID), title, x, y, upper, lower); }
481  virtual P2D* bookProf(DataObject* pPar, int hID, CSTR title, Edges x, Edges y, double upper, double lower )
482  { return bookProf(pPar, std::to_string(hID), title, x, y, upper, lower); }
483  virtual P2D* bookProf(STRPAIR loc,CSTR title, Edges x, Edges y, double upper, double lower )
484  { return bookProf(loc.first, loc.second, title, x, y, upper, lower); }
485  virtual P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower )
486  { return i_book(pPar, rel, title, Gaudi::createProf2D(title,x,y, upper, lower)); }
487  // ==========================================================================
488  // Book 3D histogram with fixed binning
489  // ==========================================================================
507  H3D* book(CSTR full, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
508  { return book(i_splitPath(full),title,BINS(x),BINS(y),BINS(z)); }
509  H3D* book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
510  { return book(createPath(par),rel,title,BINS(x),BINS(y),BINS(z)); }
511  H3D* book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
512  { return book(par,std::to_string(hID),title,BINS(x),BINS(y),BINS(z)); }
513  H3D* book(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
514  { return book(pPar,std::to_string(hID), title, BINS(x),BINS(y),BINS(z)); }
515  virtual H3D* book(STRPAIR loc,CSTR title, DBINS(x), DBINS(y), DBINS(z))
516  { return book(loc.first, loc.second, title, BINS(x),BINS(y),BINS(z)); }
517  H3D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
518  { return i_book(pPar, rel, title, Gaudi::createH3D(title,BINS(x),BINS(y),BINS(z)));}
519  // ==========================================================================
520  // Book 3D histogram with variable binning
521  // ==========================================================================
538  H3D* book(CSTR full, CSTR title, Edges x, Edges y, Edges z) override
539  { return book(i_splitPath(full), title, x, y, z); }
540  H3D* book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, Edges z) override
541  { return book(createPath(par), rel, title, x, y, z); }
542  H3D* book(CSTR par, int hID, CSTR title, Edges x, Edges y, Edges z) override
543  { return book(par,std::to_string(hID), title, x, y, z); }
544  H3D* book(DataObject* pPar, int hID, CSTR title, Edges x, Edges y, Edges z) override
545  { return book(pPar,std::to_string(hID), title, x, y, z); }
546  virtual H3D* book(STRPAIR loc,CSTR title, Edges x, Edges y, Edges z)
547  { return book(loc.first, loc.second, title, x,y,z); }
548  H3D* book(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y, Edges z) override
549  { return i_book(pPar, rel, title, Gaudi::createH3D(title,x,y,z)); }
550 
551  // ==========================================================================
552  // Register histogram with the data store
553  // ==========================================================================
554 //------------------------------------------------------------------------------
555 // Register object with the data store
556 //------------------------------------------------------------------------------
557  StatusCode registerObject(CSTR parent, CSTR rel, Base* obj ) override
558  { return registerObject(createPath(parent), rel, obj); }
559  StatusCode registerObject(CSTR parent, int item, Base* obj ) override
560  { return registerObject(parent, std::to_string(item), obj); }
561  StatusCode registerObject(Base* pPar, CSTR rel, Base* obj ) override
562  { return registerObject(__cast(pPar), rel, obj); }
563  StatusCode registerObject(DataObject* pPar, int item, Base* obj ) override
564  { return registerObject(pPar, std::to_string(item), obj); }
565  StatusCode registerObject(Base* pPar, int item, Base* obj ) override
566  { return registerObject(__cast(pPar), item, obj); }
567  StatusCode registerObject(CSTR full, Base* obj ) override;
568  StatusCode registerObject(DataObject* pPar, CSTR rel, Base* obj ) override;
569  // ==========================================================================
570  // Unregister histogram from the data store
571  // ==========================================================================
572  StatusCode unregisterObject(Base* obj ) override
573  { return DataSvc::unregisterObject(__cast(obj)); }
574  StatusCode unregisterObject(Base* obj, CSTR objectPath) override
575  { return DataSvc::unregisterObject(__cast(obj),objectPath); }
576  StatusCode unregisterObject(Base* obj, int item ) override
577  { return DataSvc::unregisterObject(__cast(obj),item); }
578  // ==========================================================================
579  // Retrieve histogram from data store
580  // ==========================================================================
581  StatusCode retrieveObject(IRegistry* pReg, CSTR path, H1D*& obj) override
582  { return Helper(this).retrieve(pReg,path,obj); }
583  StatusCode retrieveObject(IRegistry* pReg, CSTR path, P1D*& obj) override
584  { return Helper(this).retrieve(pReg,path,obj); }
585  StatusCode retrieveObject(IRegistry* pReg, CSTR path, H2D*& obj) override
586  { return Helper(this).retrieve(pReg,path,obj); }
587  StatusCode retrieveObject(IRegistry* pReg, CSTR path, P2D*& obj) override
588  { return Helper(this).retrieve(pReg,path,obj); }
589  StatusCode retrieveObject(IRegistry* pReg, CSTR path, H3D*& obj) override
590  { return Helper(this).retrieve(pReg,path,obj); }
591  //------------------------------------------------------------------------------
592  StatusCode retrieveObject(CSTR full,P1D*& obj) override
593  { return Helper(this).retrieve(full,obj); }
594  StatusCode retrieveObject(CSTR full,P2D*& obj) override
595  { return Helper(this).retrieve(full,obj); }
596  StatusCode retrieveObject(CSTR full,H1D*& obj) override
597  { return Helper(this).retrieve(full,obj); }
598  StatusCode retrieveObject(CSTR full,H2D*& obj) override
599  { return Helper(this).retrieve(full,obj); }
600  StatusCode retrieveObject(CSTR full,H3D*& obj) override
601  { return Helper(this).retrieve(full,obj); }
602  //------------------------------------------------------------------------------
603  StatusCode retrieveObject(CSTR parent,CSTR rel,P1D*& obj) override
604  { return Helper(this).retrieve(parent,rel,obj); }
605  StatusCode retrieveObject(CSTR parent,CSTR rel,P2D*& obj) override
606  { return Helper(this).retrieve(parent,rel,obj); }
607  StatusCode retrieveObject(CSTR parent,CSTR rel,H1D*& obj) override
608  { return Helper(this).retrieve(parent,rel,obj); }
609  StatusCode retrieveObject(CSTR parent,CSTR rel,H2D*& obj) override
610  { return Helper(this).retrieve(parent,rel,obj); }
611  StatusCode retrieveObject(CSTR parent,CSTR rel,H3D*& obj) override
612  { return Helper(this).retrieve(parent,rel,obj); }
613  //------------------------------------------------------------------------------
614  StatusCode retrieveObject(CSTR parent,int item,P1D*& obj) override
615  { return Helper(this).retrieve(parent,item,obj); }
616  StatusCode retrieveObject(CSTR parent,int item,P2D*& obj) override
617  { return Helper(this).retrieve(parent,item,obj); }
618  StatusCode retrieveObject(CSTR parent,int item,H1D*& obj) override
619  { return Helper(this).retrieve(parent,item,obj); }
620  StatusCode retrieveObject(CSTR parent,int item,H2D*& obj) override
621  { return Helper(this).retrieve(parent,item,obj); }
622  StatusCode retrieveObject(CSTR parent,int item,H3D*& obj) override
623  { return Helper(this).retrieve(parent,item,obj); }
624  //------------------------------------------------------------------------------
625  StatusCode retrieveObject(DataObject* par,CSTR item,P1D*& obj) override
626  { return Helper(this).retrieve(par,item,obj); }
627  StatusCode retrieveObject(DataObject* par,CSTR item,P2D*& obj) override
628  { return Helper(this).retrieve(par,item,obj); }
629  StatusCode retrieveObject(DataObject* par,CSTR item,H1D*& obj) override
630  { return Helper(this).retrieve(par,item,obj); }
631  StatusCode retrieveObject(DataObject* par,CSTR item,H2D*& obj) override
632  { return Helper(this).retrieve(par,item,obj); }
633  StatusCode retrieveObject(DataObject* par,CSTR item,H3D*& obj) override
634  { return Helper(this).retrieve(par,item,obj); }
635  //------------------------------------------------------------------------------
636  StatusCode retrieveObject(DataObject* par,int item,P1D*& obj) override
637  { return Helper(this).retrieve(par,item,obj); }
638  StatusCode retrieveObject(DataObject* par,int item,P2D*& obj) override
639  { return Helper(this).retrieve(par,item,obj); }
640  StatusCode retrieveObject(DataObject* par,int item,H1D*& obj) override
641  { return Helper(this).retrieve(par,item,obj); }
642  StatusCode retrieveObject(DataObject* par,int item,H2D*& obj) override
643  { return Helper(this).retrieve(par,item,obj); }
644  StatusCode retrieveObject(DataObject* par,int item,H3D*& obj) override
645  { return Helper(this).retrieve(par,item,obj); }
646  //------------------------------------------------------------------------------
647  StatusCode retrieveObject(Base* par,int item,P1D*& obj) override
648  { return Helper(this).retrieve(__cast(par),item,obj); }
649  StatusCode retrieveObject(Base* par,int item,P2D*& obj) override
650  { return Helper(this).retrieve(__cast(par),item,obj); }
651  StatusCode retrieveObject(Base* par,int item,H1D*& obj) override
652  { return Helper(this).retrieve(__cast(par),item,obj); }
653  StatusCode retrieveObject(Base* par,int item,H2D*& obj) override
654  { return Helper(this).retrieve(__cast(par),item,obj); }
655  StatusCode retrieveObject(Base* par,int item,H3D*& obj) override
656  { return Helper(this).retrieve(__cast(par),item,obj); }
657  //------------------------------------------------------------------------------
658  StatusCode retrieveObject(Base* par,CSTR item,P1D*& obj) override
659  { return Helper(this).retrieve(__cast(par),item,obj); }
660  StatusCode retrieveObject(Base* par,CSTR item,P2D*& obj) override
661  { return Helper(this).retrieve(__cast(par),item,obj); }
662  StatusCode retrieveObject(Base* par,CSTR item,H1D*& obj) override
663  { return Helper(this).retrieve(__cast(par),item,obj); }
664  StatusCode retrieveObject(Base* par,CSTR item,H2D*& obj) override
665  { return Helper(this).retrieve(__cast(par),item,obj); }
666  StatusCode retrieveObject(Base* par,CSTR item,H3D*& obj) override
667  { return Helper(this).retrieve(__cast(par),item,obj); }
668 
669  // ==========================================================================
670  // Find histogram identified by its full path in the data store
671  // ==========================================================================
672 
673  //------------------------------------------------------------------------------
674  // Find object identified by its full path in the data store
675  //------------------------------------------------------------------------------
676  StatusCode findObject(IRegistry* pReg,CSTR path,P1D*& obj) override
677  { return Helper(this).find(pReg,path,obj); }
678  StatusCode findObject(IRegistry* pReg,CSTR path,P2D*& obj) override
679  { return Helper(this).find(pReg,path,obj); }
680  StatusCode findObject(IRegistry* pReg,CSTR path,H1D*& obj) override
681  { return Helper(this).find(pReg,path,obj); }
682  StatusCode findObject(IRegistry* pReg,CSTR path,H2D*& obj) override
683  { return Helper(this).find(pReg,path,obj); }
684  StatusCode findObject(IRegistry* pReg,CSTR path,H3D*& obj) override
685  { return Helper(this).find(pReg,path,obj); }
686  //------------------------------------------------------------------------------
687  StatusCode findObject(CSTR full,P1D*& obj) override
688  { return Helper(this).find(full,obj); }
689  StatusCode findObject(CSTR full,P2D*& obj) override
690  { return Helper(this).find(full,obj); }
691  StatusCode findObject(CSTR full,H1D*& obj) override
692  { return Helper(this).find(full,obj); }
693  StatusCode findObject(CSTR full,H2D*& obj) override
694  { return Helper(this).find(full,obj); }
695  StatusCode findObject(CSTR full,H3D*& obj) override
696  { return Helper(this).find(full,obj); }
697  //------------------------------------------------------------------------------
698  StatusCode findObject(CSTR par,CSTR rel,P1D*& obj) override
699  { return Helper(this).find(par,rel,obj); }
700  StatusCode findObject(CSTR par,CSTR rel,P2D*& obj) override
701  { return Helper(this).find(par,rel,obj); }
702  StatusCode findObject(CSTR par,CSTR rel,H1D*& obj) override
703  { return Helper(this).find(par,rel,obj); }
704  StatusCode findObject(CSTR par,CSTR rel,H2D*& obj) override
705  { return Helper(this).find(par,rel,obj); }
706  StatusCode findObject(CSTR par,CSTR rel,H3D*& obj) override
707  { return Helper(this).find(par,rel,obj); }
708  //------------------------------------------------------------------------------
709  StatusCode findObject(CSTR par,int item,P1D*& obj) override
710  { return Helper(this).find(par,item,obj); }
711  StatusCode findObject(CSTR par,int item,P2D*& obj) override
712  { return Helper(this).find(par,item,obj); }
713  StatusCode findObject(CSTR par,int item,H1D*& obj) override
714  { return Helper(this).find(par,item,obj); }
715  StatusCode findObject(CSTR par,int item,H2D*& obj) override
716  { return Helper(this).find(par,item,obj); }
717  StatusCode findObject(CSTR par,int item,H3D*& obj) override
718  { return Helper(this).find(par,item,obj); }
719  //------------------------------------------------------------------------------
720  StatusCode findObject(DataObject* par,int item,P1D*& obj) override
721  { return Helper(this).find(par,item,obj); }
722  StatusCode findObject(DataObject* par,int item,P2D*& obj) override
723  { return Helper(this).find(par,item,obj); }
724  StatusCode findObject(DataObject* par,int item,H1D*& obj) override
725  { return Helper(this).find(par,item,obj); }
726  StatusCode findObject(DataObject* par,int item,H2D*& obj) override
727  { return Helper(this).find(par,item,obj); }
728  StatusCode findObject(DataObject* par,int item,H3D*& obj) override
729  { return Helper(this).find(par,item,obj); }
730  //------------------------------------------------------------------------------
731  StatusCode findObject(DataObject* par,CSTR item,P1D*& obj) override
732  { return Helper(this).find(par,item,obj); }
733  StatusCode findObject(DataObject* par,CSTR item,P2D*& obj) override
734  { return Helper(this).find(par,item,obj); }
735  StatusCode findObject(DataObject* par,CSTR item,H1D*& obj) override
736  { return Helper(this).find(par,item,obj); }
737  StatusCode findObject(DataObject* par,CSTR item,H2D*& obj) override
738  { return Helper(this).find(par,item,obj); }
739  StatusCode findObject(DataObject* par,CSTR item,H3D*& obj) override
740  { return Helper(this).find(par,item,obj); }
741  //------------------------------------------------------------------------------
742  StatusCode findObject(Base* par,int item,P1D*& obj) override
743  { return Helper(this).find(__cast(par),item,obj); }
744  StatusCode findObject(Base* par,int item,P2D*& obj) override
745  { return Helper(this).find(__cast(par),item,obj); }
746  StatusCode findObject(Base* par,int item,H1D*& obj) override
747  { return Helper(this).find(__cast(par),item,obj); }
748  StatusCode findObject(Base* par,int item,H2D*& obj) override
749  { return Helper(this).find(__cast(par),item,obj); }
750  StatusCode findObject(Base* par,int item,H3D*& obj) override
751  { return Helper(this).find(__cast(par),item,obj); }
752  //------------------------------------------------------------------------------
753  StatusCode findObject(Base* par,CSTR item,P1D*& obj) override
754  { return Helper(this).find(__cast(par),item,obj); }
755  StatusCode findObject(Base* par,CSTR item,P2D*& obj) override
756  { return Helper(this).find(__cast(par),item,obj); }
757  StatusCode findObject(Base* par,CSTR item,H1D*& obj) override
758  { return Helper(this).find(__cast(par),item,obj); }
759  StatusCode findObject(Base* par,CSTR item,H2D*& obj) override
760  { return Helper(this).find(__cast(par),item,obj); }
761  StatusCode findObject(Base* par,CSTR item,H3D*& obj) override
762  { return Helper(this).find(__cast(par),item,obj); }
763 
764  // ==========================================================================
765  // Projections and slices.
766  // ==========================================================================
767  H1D* projectionX(CSTR name,const H2D& h) override
768  { return sliceX( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
769  H1D* projectionY(CSTR name,const H2D& h) override
770  { return sliceY( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
771  H1D* sliceX(CSTR name,const H2D& h,int indexY) override
772  { return sliceX( name, h, indexY, indexY ); }
773  H1D* sliceY(CSTR name,const H2D& h,int indexX) override
774  { return sliceY( name, h, indexX, indexX ); }
775  H1D* sliceX(CSTR name,const H2D& h,int indexY1,int indexY2) override;
776  H1D* sliceY(CSTR name,const H2D& h,int indexX1,int indexX2) override;
777  //------------------------------------------------------------------------------
778  bool destroy( IBaseHistogram* hist) override;
779 
780  H1D* add(CSTR nameAndTitle, const H1D& a, const H1D& b) override
781  { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Add, 1.); }
782  H1D* subtract(CSTR nameAndTitle, const H1D& a, const H1D& b) override
783  { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Add,-1.); }
784  H1D* multiply(CSTR nameAndTitle, const H1D& a, const H1D& b) override
785  { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Multiply); }
786  H1D* divide(CSTR nameAndTitle, const H1D& a, const H1D& b) override
787  { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Divide); }
788 
789  H2D* add(CSTR nameAndTitle, const H2D& a, const H2D& b) override
790  { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Add, 1.); }
791  H2D* subtract(CSTR nameAndTitle, const H2D& a, const H2D& b) override
792  { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Add,-1.); }
793  H2D* multiply(CSTR nameAndTitle, const H2D& a, const H2D& b) override
794  { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Multiply); }
795  H2D* divide(CSTR nameAndTitle, const H2D& a, const H2D& b) override
796  { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Divide); }
797 
798  H3D* add(CSTR nameAndTitle, const H3D& a, const H3D& b) override
799  { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Add, 1.); }
800  H3D* subtract(CSTR nameAndTitle, const H3D& a, const H3D& b) override
801  { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Add,-1.); }
802  H3D* multiply(CSTR nameAndTitle, const H3D& a, const H3D& b) override
803  { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Multiply); }
804  H3D* divide(CSTR nameAndTitle, const H3D& a, const H3D& b) override
805  { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Divide); }
806 
807  H2D* projectionXY(CSTR nameAndTitle,const H3D& h) override
808  { return i_project(nameAndTitle,h,"xy"); }
809  H2D* projectionXZ(CSTR nameAndTitle,const H3D& h) override
810  { return i_project(nameAndTitle,h,"xz"); }
811  H2D* projectionYZ(CSTR nameAndTitle,const H3D& h) override
812  { return i_project(nameAndTitle,h,"yz"); }
813  H2D* sliceXY(CSTR /* nameAndTitle */,const H3D& /* h */,int /* low */,int /* high */ ) override NOT_IMPLEMENTED
814  H2D* sliceXZ(CSTR /* nameAndTitle */,const H3D& /* h */,int /* low */,int /* high */ ) override NOT_IMPLEMENTED
815  H2D* sliceYZ(CSTR /* nameAndTitle */,const H3D& /* h */,int /* low */,int /* high */ ) override NOT_IMPLEMENTED
816 
817  //------------------------------------------------------------------------------
818  H1D* createHistogram1D(CSTR name,CSTR tit,DBINS(x))
819  { return book( name, tit, BINS(x)); }
820  H1D* createHistogram1D(CSTR name,CSTR tit,DBINS(x),CSTR /*opt*/) override
821  { return book( name, tit, BINS(x)); }
822  H1D* createHistogram1D(CSTR name,CSTR title,const Edges& x,CSTR /*opt*/) override
823  { return book(name, title, x); }
824  H1D* createHistogram1D(CSTR nameAndTitle, DBINS(x)) override
825  { return book(nameAndTitle, nameAndTitle, BINS(x)); }
826  H1D* createCopy(CSTR full, const H1D& h) override
827  { return createCopy(i_splitPath(full), h); }
828  H1D* createCopy(CSTR par, CSTR rel, const H1D& h)
829  { return createCopy(createPath(par), rel, h); }
830  H1D* createCopy(STRPAIR loc, const H1D& h)
831  { return createCopy(loc.first, loc.second, h); }
832  H1D* createCopy(DataObject* pPar, CSTR rel, const H1D& h)
833  { return i_book(pPar, rel, h.title(), Gaudi::createH1D(h)); }
834  //------------------------------------------------------------------------------
835  H2D* createHistogram2D(CSTR name,CSTR tit,DBINS(x),DBINS(y))
836  { return book( name, tit, BINS(x), BINS(y)); }
837  H2D* createHistogram2D(CSTR name,CSTR tit,DBINS(x),DBINS(y),CSTR /*opt*/) override
838  { return book( name, tit, BINS(x), BINS(y)); }
839  H2D* createHistogram2D(CSTR name,CSTR title,const Edges& x,const Edges& y, CSTR /*opt*/) override
840  { return book(name, title, x, y); }
841  H2D* createHistogram2D(CSTR nameAndTitle, DBINS(x), DBINS(y)) override
842  { return book(nameAndTitle, nameAndTitle, BINS(x), BINS(y)); }
843  H2D* createCopy(CSTR full, const H2D& h) override
844  { return createCopy(i_splitPath(full), h); }
845  H2D* createCopy(CSTR par, CSTR rel, const H2D& h)
846  { return createCopy(createPath(par), rel, h); }
847  H2D* createCopy(STRPAIR loc, const H2D& h)
848  { return createCopy(loc.first, loc.second, h); }
849  H2D* createCopy(DataObject* pPar, CSTR rel, const H2D& h)
850  { return i_book(pPar, rel, h.title(), Gaudi::createH2D(h)); }
851  //------------------------------------------------------------------------------
852  H3D* createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z))
853  { return book( name, tit, BINS(x), BINS(y), BINS(z)); }
854  H3D* createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z), CSTR /*opt*/) override
855  { return book( name, tit, BINS(x), BINS(y), BINS(z)); }
856  H3D* createHistogram3D(CSTR name, CSTR title,const Edges& x,const Edges& y,const Edges& z,CSTR /*opt*/) override
857  { return book(name, title, x, y, z); }
858  H3D* createHistogram3D(CSTR nameAndTitle, DBINS(x), DBINS(y), DBINS(z)) override
859  { return book(nameAndTitle, nameAndTitle, BINS(x), BINS(y), BINS(z)); }
860  H3D* createCopy(CSTR full, const H3D& h) override
861  { return createCopy(i_splitPath(full), h); }
862  H3D* createCopy(CSTR par, CSTR rel, const H3D& h)
863  { return createCopy(createPath(par), rel, h); }
864  H3D* createCopy(STRPAIR loc, const H3D& h)
865  { return createCopy(loc.first, loc.second, h); }
866  H3D* createCopy(DataObject* pPar, CSTR rel, const H3D& h)
867  { return i_book(pPar, rel, h.title(), Gaudi::createH3D(h)); }
868  //------------------------------------------------------------------------------
869 
870 
871  P1D* createProfile1D(CSTR name,CSTR tit,DBINS(x),CSTR opt ) override
872  { return bookProf( name, tit, BINS(x) , opt ); }
873  P1D* createProfile1D(CSTR name,CSTR tit,DBINS(x),double upper, double lower , CSTR opt ) override
874  { return bookProf( name, tit, BINS(x), upper, lower , opt ); }
875  P1D* createProfile1D(CSTR name,CSTR title,const Edges& x,CSTR /* opt */ ) override
876  { return bookProf(name, title, x ); }
877  P1D* createProfile1D(CSTR name,CSTR title,const Edges& x,double upper, double lower, CSTR /* opt */ ) override
878  { return bookProf(name, title, x, upper, lower ); }
879 
880  P1D* createProfile1D(CSTR nametit,DBINS(x)) override
881  { return bookProf( nametit, nametit, BINS(x) , "s"); }
882  P1D* createProfile1D(CSTR nametit,DBINS(x),double upper, double lower ) override
883  { return bookProf( nametit, nametit, BINS(x), upper, lower , "s"); }
884 
885 
886  P1D* createCopy(CSTR full, const P1D& h) override
887  { return createCopy(i_splitPath(full), h); }
888  P1D* createCopy(CSTR par, CSTR rel, const P1D& h)
889  { return createCopy(createPath(par), rel, h); }
890  P1D* createCopy(STRPAIR loc, const P1D& h)
891  { return createCopy(loc.first, loc.second, h); }
892  P1D* createCopy(DataObject* pPar, CSTR rel, const P1D& h)
893  { return i_book(pPar, rel, h.title(), Gaudi::createProf1D(h)); }
894  //------------------------------------------------------------------------------
895  P2D* createProfile2D(CSTR name,CSTR tit,DBINS(x),DBINS(y))
896  { return bookProf( name, tit, BINS(x), BINS(y)); }
897  P2D* createProfile2D(CSTR name,CSTR tit,DBINS(x),DBINS(y),CSTR /*opt*/) override
898  { return bookProf( name, tit, BINS(x), BINS(y)); }
899  P2D* createProfile2D(CSTR name,CSTR title,const Edges& x,const Edges& y, CSTR /*opt*/) override
900  { return bookProf(name, title, x, y); }
901  P2D* createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y)) override
902  { return bookProf(nameAndTitle, nameAndTitle, BINS(x), BINS(y)); }
903 
904  P2D* createProfile2D(CSTR name,CSTR tit,DBINS(x),DBINS(y),double upper, double lower)
905  { return bookProf( name, tit, BINS(x), BINS(y), upper, lower); }
906  P2D* createProfile2D(CSTR name,CSTR tit,DBINS(x),DBINS(y),double upper, double lower,CSTR /*opt*/) override
907  { return bookProf( name, tit, BINS(x), BINS(y), upper, lower); }
908  P2D* createProfile2D(CSTR name,CSTR title,const Edges& x,const Edges& y,double upper, double lower, CSTR /*opt*/) override
909  { return bookProf(name, title, x, y, upper, lower); }
910  P2D* createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y),double upper, double lower) override
911  { return bookProf(nameAndTitle, nameAndTitle, BINS(x), BINS(y), upper, lower);}
912 
913  P2D* createCopy(CSTR full, const P2D& h) override
914  { return createCopy(i_splitPath(full), h); }
915  P2D* createCopy(CSTR par, CSTR rel, const P2D& h)
916  { return createCopy(createPath(par), rel, h); }
917  P2D* createCopy(STRPAIR loc, const P2D& h)
918  { return createCopy(loc.first, loc.second, h); }
919  P2D* createCopy(DataObject* pPar, CSTR rel, const P2D& h)
920  { return i_book(pPar, rel, h.title(), Gaudi::createProf2D(h)); }
921  //------------------------------------------------------------------------------
922  AIDA::ICloud1D* createCloud1D(CSTR, CSTR, int, CSTR) override NOT_IMPLEMENTED
923  AIDA::ICloud1D* createCloud1D(CSTR) override NOT_IMPLEMENTED
924  AIDA::ICloud1D* createCopy(CSTR, const AIDA::ICloud1D&) override NOT_IMPLEMENTED
925  AIDA::ICloud2D* createCloud2D(CSTR, CSTR, int, CSTR) override NOT_IMPLEMENTED
926  AIDA::ICloud2D* createCloud2D(CSTR) override NOT_IMPLEMENTED
927  AIDA::ICloud2D* createCopy(CSTR, const AIDA::ICloud2D&) override NOT_IMPLEMENTED
928  AIDA::ICloud3D* createCloud3D(CSTR, CSTR, int, CSTR) override NOT_IMPLEMENTED
929  AIDA::ICloud3D* createCloud3D(CSTR) override NOT_IMPLEMENTED
930  AIDA::ICloud3D* createCopy(CSTR, const AIDA::ICloud3D&) override NOT_IMPLEMENTED
931 
937 
939  std::ostream& print(Base* h, std::ostream& s = std::cout) const override;
940 
942  std::ostream& write(Base* h, std::ostream& s = std::cout) const override;
943 
945  int write(Base* h, const char* file_name ) const override;
946 
948  DataObject* createPath(CSTR newPath ) override;
949 
954  DataObject* createDirectory(CSTR parentDir, CSTR subDir ) override;
955 
956 public:
957  // ==========================================================================
959  void update1Ddefs ( Property& ) ;
960  // ==========================================================================
961  typedef std::map<std::string,Gaudi::Histo1DDef> Histo1DMap ;
962  // ==========================================================================
963 private:
964  // ==========================================================================
965  // container with the definition of "the special" histograms
966  Histo1DMap m_defs1D ;
967  // ==========================================================================
968  // modified histograms:
969  std::set<std::string> m_mods1D ;
970  // ==========================================================================
971 };
972 // ===========================================================================
973 // The END
974 // ===========================================================================
975 #endif // GAUDISVC_HISTOGRAMSVC_H
976 // ===========================================================================
StatusCode unregisterObject(const std::string &fullPath) override
Unregister object from the data store.
Definition: DataSvc.cpp:471
StatusCode findObject(DataObject *par, int item, H1D *&obj) override
Definition: HistogramSvc.h:724
H2D * book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y) override
Definition: HistogramSvc.h:435
P2D * createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:901
virtual P2D * bookProf(STRPAIR loc, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:483
H1D * createCopy(CSTR par, CSTR rel, const H1D &h)
Definition: HistogramSvc.h:828
H1D * book(DataObject *pPar, int hID, CSTR title, Edges e) override
Definition: HistogramSvc.h:286
P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:414
H3D * book(DataObject *pPar, int hID, CSTR title, Edges x, Edges y, Edges z) override
Definition: HistogramSvc.h:544
P1D * bookProf(CSTR full, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
Definition: HistogramSvc.h:263
StatusCode retrieveObject(IRegistry *pReg, CSTR path, H1D *&obj) override
Definition: HistogramSvc.h:581
StatusCode retrieveObject(IRegistry *pReg, CSTR path, H2D *&obj) override
Definition: HistogramSvc.h:585
StatusCode findObject(CSTR par, int item, H2D *&obj) override
Definition: HistogramSvc.h:715
virtual P2D * bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:479
StatusCode findObject(IRegistry *pReg, CSTR path, H2D *&obj) override
Definition: HistogramSvc.h:682
StatusCode findObject(CSTR par, CSTR rel, H2D *&obj) override
Definition: HistogramSvc.h:704
virtual H1D * book(STRPAIR loc, CSTR title, Edges e)
Definition: HistogramSvc.h:290
StatusCode retrieveObject(Base *par, int item, H1D *&obj) override
Definition: HistogramSvc.h:651
P1D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
Definition: HistogramSvc.h:255
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
P1D * createCopy(CSTR full, const P1D &h) override
Definition: HistogramSvc.h:886
StatusCode retrieveObject(Base *par, int item, P2D *&obj) override
Definition: HistogramSvc.h:649
H2D * createCopy(DataObject *pPar, CSTR rel, const H2D &h)
Definition: HistogramSvc.h:849
string to_string(const T &value)
Definition: mergesort.cpp:40
P2D * bookProf(DataObject *pPar, int hID, CSTR title, Edges x, Edges y) override
Definition: HistogramSvc.h:468
H1D * createCopy(DataObject *pPar, CSTR rel, const H1D &h)
Definition: HistogramSvc.h:832
virtual P2D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:399
StatusCode retrieveObject(CSTR parent, int item, P2D *&obj) override
Definition: HistogramSvc.h:616
H2D const H3D int override NOT_IMPLEMENTED H2D CSTR DBINS(x))
Definition: HistogramSvc.h:818
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
const std::string & CSTR
Definition: HistogramSvc.h:58
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
std::set< std::string > m_mods1D
Definition: HistogramSvc.h:969
H2D * book(CSTR full, CSTR title, Edges x, Edges y) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:433
std::ostream & write(Base *h, std::ostream &s=std::cout) const override
Write (ASCII) the 1D histogram table into the output stream.
H3D * book(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
Definition: HistogramSvc.h:513
virtual P1D * bookProf(STRPAIR loc, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:335
StatusCode retrieveObject(DataObject *par, int item, P1D *&obj) override
Definition: HistogramSvc.h:636
H1D * book(CSTR par, CSTR rel, CSTR title, DBINS(x)) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:211
H1D * projectionX(CSTR name, const H2D &h) override
Definition: HistogramSvc.h:767
H2D * sliceXY(CSTR, const H3D &, int, int) override NOT_IMPLEMENTED H2D *sliceXZ(CSTR
StatusCode retrieveObject(CSTR parent, CSTR rel, P2D *&obj) override
Definition: HistogramSvc.h:605
H3D * book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
Definition: HistogramSvc.h:511
virtual H2D * book(STRPAIR loc, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:365
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:904
StatusCode findObject(CSTR par, int item, P2D *&obj) override
Definition: HistogramSvc.h:711
H3D * multiply(CSTR nameAndTitle, const H3D &a, const H3D &b) override
Definition: HistogramSvc.h:802
H3D * add(CSTR nameAndTitle, const H3D &a, const H3D &b) override
Definition: HistogramSvc.h:798
StatusCode retrieveObject(DataObject *par, CSTR item, P2D *&obj) override
Definition: HistogramSvc.h:627
virtual P2D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:393
StatusCode unregisterObject(Base *obj, CSTR objectPath) override
Definition: HistogramSvc.h:574
P2D * createProfile2D(CSTR name, CSTR title, const Edges &x, const Edges &y, CSTR) override
Definition: HistogramSvc.h:899
StatusCode findObject(CSTR par, CSTR rel, P2D *&obj) override
Definition: HistogramSvc.h:700
H2D * book(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:367
StatusCode retrieveObject(CSTR full, P1D *&obj) override
Definition: HistogramSvc.h:592
std::pair< DataObject *, AIDA::IHistogram1D * > createH1D(const AIDA::IHistogram1D &hist)
Copy constructor.
P1D * bookProf(DataObject *pPar, int hID, CSTR title, Edges e) override
Definition: HistogramSvc.h:320
H1D * divide(CSTR nameAndTitle, const H1D &a, const H1D &b) override
Definition: HistogramSvc.h:786
H2D * createHistogram2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), CSTR) override
Definition: HistogramSvc.h:837
P1D * bookProf(CSTR par, CSTR rel, CSTR title, Edges e) override
Definition: HistogramSvc.h:316
P1D * createCopy(STRPAIR loc, const P1D &h)
Definition: HistogramSvc.h:890
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
P1D * createProfile1D(CSTR name, CSTR title, const Edges &x, CSTR) override
Definition: HistogramSvc.h:875
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:297
StatusCode findObject(IRegistry *pReg, CSTR path, P1D *&obj) override
Definition: HistogramSvc.h:676
StatusCode findObject(DataObject *par, CSTR item, H1D *&obj) override
Definition: HistogramSvc.h:735
P2D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:412
H1D * book(CSTR par, CSTR rel, CSTR title, Edges e) override
Definition: HistogramSvc.h:288
P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y) override
Definition: HistogramSvc.h:472
StatusCode retrieveObject(CSTR parent, int item, P1D *&obj) override
Definition: HistogramSvc.h:614
const std::pair< std::string, std::string > & STRPAIR
Definition: HistogramSvc.h:52
list path
Definition: __init__.py:15
H1D * createHistogram1D(CSTR nameAndTitle, DBINS(x)) override
Definition: HistogramSvc.h:824
virtual H1D * book(STRPAIR loc, CSTR title, DBINS(x))
Definition: HistogramSvc.h:218
virtual P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:485
StatusCode findObject(Base *par, CSTR item, P1D *&obj) override
Definition: HistogramSvc.h:753
H3D * createHistogram3D(CSTR name, CSTR title, const Edges &x, const Edges &y, const Edges &z, CSTR) override
Definition: HistogramSvc.h:856
STL namespace.
H2D * book(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y) override
Definition: HistogramSvc.h:443
~HistogramSvc() override
Destructor.
virtual P2D * bookProf(CSTR full, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:475
virtual P1D * bookProf(CSTR par, int hID, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:331
T * i_book(DataObject *pPar, CSTR rel, CSTR title, const std::pair< DataObject *, T * > &o)
Definition: HistogramSvc.h:163
StatusCode retrieveObject(IRegistry *pReg, CSTR path, P1D *&obj) override
Definition: HistogramSvc.h:583
StatusCode findObject(CSTR full, P1D *&obj) override
Definition: HistogramSvc.h:687
void not_implemented() const
Definition: HistogramSvc.h:53
StatusCode find(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:82
P1D * bookProf(CSTR full, CSTR title, DBINS(x), CSTR opt) override
Definition: HistogramSvc.h:250
H1D * book(CSTR par, int hID, CSTR title, DBINS(x)) override
Definition: HistogramSvc.h:213
StatusCode findObject(Base *par, CSTR item, H3D *&obj) override
Definition: HistogramSvc.h:761
H1D * book(DataObject *pPar, CSTR rel, CSTR title, Edges e) override
Definition: HistogramSvc.h:294
StatusCode retrieve(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:76
H2D const H3D int override NOT_IMPLEMENTED H2D * sliceYZ(CSTR, const H3D &, int, int) override NOT_IMPLEMENTEDH1D *createHistogram1D(CSTR name
StatusCode unregisterObject(Base *obj) override
Definition: HistogramSvc.h:572
P1D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), CSTR opt) override
Definition: HistogramSvc.h:246
StatusCode findObject(CSTR full, H2D *&obj) override
Definition: HistogramSvc.h:693
virtual P2D * bookProf(STRPAIR loc, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:395
H2D * multiply(CSTR nameAndTitle, const H2D &a, const H2D &b) override
Definition: HistogramSvc.h:793
H3D * createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:852
StatusCode retrieveObject(CSTR parent, int item, H1D *&obj) override
Definition: HistogramSvc.h:618
virtual P1D * bookProf(CSTR full, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:327
Data provider interface definition.
virtual P1D * bookProf(DataObject *pPar, int hID, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:333
H2D * i_project(CSTR nameAndTitle, const H3D &h, CSTR dir)
Helper for 2D projections.
virtual P1D * bookProf(STRPAIR loc, CSTR title, Edges e)
Definition: HistogramSvc.h:322
H2D * createCopy(CSTR par, CSTR rel, const H2D &h)
Definition: HistogramSvc.h:845
H3D * book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
Definition: HistogramSvc.h:509
DBaseEntries m_input
Input streams.
Definition: HistogramSvc.h:138
P1D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), CSTR opt) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:242
virtual P2D * bookProf(STRPAIR loc, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:408
StatusCode initialize() override
Initialise the service.
StatusCode connectInput(CSTR ident)
Connect input histogram file to the service.
GaudiKernel.
Definition: Fill.h:8
Histo1DMap m_defs1D
Definition: HistogramSvc.h:966
H2D * book(CSTR par, int hID, CSTR title, Edges x, Edges y) override
Definition: HistogramSvc.h:437
StatusCode retrieveObject(Base *par, int item, H2D *&obj) override
Definition: HistogramSvc.h:653
StatusCode retrieveObject(DataObject *par, int item, H3D *&obj) override
Definition: HistogramSvc.h:644
StatusCode findObject(CSTR full, H3D *&obj) override
Definition: HistogramSvc.h:695
H3D * book(CSTR full, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:507
H1D * add(CSTR nameAndTitle, const H1D &a, const H1D &b) override
Definition: HistogramSvc.h:780
StatusCode retrieveObject(Base *par, CSTR item, P1D *&obj) override
Definition: HistogramSvc.h:658
HistogramSvc * m_svc
Definition: HistogramSvc.h:68
StatusCode retrieveObject(CSTR full, H3D *&obj) override
Definition: HistogramSvc.h:600
std::pair< DataObject *, AIDA::IProfile2D * > createProf2D(const AIDA::IProfile2D &hist)
Copy constructor.
P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
Definition: HistogramSvc.h:265
H1D * createHistogram1D(CSTR name, CSTR tit, DBINS(x), CSTR) override
Definition: HistogramSvc.h:820
P1D * createProfile1D(CSTR nametit, DBINS(x)) override
Definition: HistogramSvc.h:880
StatusCode finalize() override
finalize the service
StatusCode findObject(DataObject *par, int item, P2D *&obj) override
Definition: HistogramSvc.h:722
H2D * createHistogram2D(CSTR nameAndTitle, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:841
StatusCode retrieveObject(Base *par, int item, H3D *&obj) override
Definition: HistogramSvc.h:655
StatusCode findObject(CSTR par, int item, H1D *&obj) override
Definition: HistogramSvc.h:713
StatusCode retrieveObject(DataObject *par, CSTR item, H1D *&obj) override
Definition: HistogramSvc.h:629
H1D * subtract(CSTR nameAndTitle, const H1D &a, const H1D &b) override
Definition: HistogramSvc.h:782
StatusCode retrieveObject(CSTR full, P2D *&obj) override
Definition: HistogramSvc.h:594
StatusCode retrieveObject(Base *par, CSTR item, H2D *&obj) override
Definition: HistogramSvc.h:664
virtual P2D * bookProf(DataObject *pPar, int hID, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:481
H2D * projectionXZ(CSTR nameAndTitle, const H3D &h) override
Definition: HistogramSvc.h:809
tuple h2
Definition: Test.py:42
std::pair< std::string, std::string > i_splitPath(CSTR full)
Split full path into its components.
StatusCode findObject(CSTR par, CSTR rel, H1D *&obj) override
Definition: HistogramSvc.h:702
StatusCode retrieveObject(Base *par, int item, P1D *&obj) override
Definition: HistogramSvc.h:647
virtual P1D * bookProf(STRPAIR loc, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
Definition: HistogramSvc.h:261
H2D * book(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:369
#define BINS(x)
Definition: HistogramSvc.h:39
H3D * createHistogram3D(CSTR nameAndTitle, DBINS(x), DBINS(y), DBINS(z)) override
Definition: HistogramSvc.h:858
struct GAUDI_API map
Parametrisation class for map-like implementation.
P1D * createProfile1D(CSTR nametit, DBINS(x), double upper, double lower) override
Definition: HistogramSvc.h:882
StatusCode findObject(CSTR full, P2D *&obj) override
Definition: HistogramSvc.h:689
DataObject * createPath(CSTR newPath) override
Create all directories in a given full path.
H1D * createCopy(STRPAIR loc, const H1D &h)
Definition: HistogramSvc.h:830
StatusCode findObject(Base *par, int item, P2D *&obj) override
Definition: HistogramSvc.h:744
StatusCode findObject(Base *par, int item, H2D *&obj) override
Definition: HistogramSvc.h:748
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), double upper, double lower, CSTR) override
Definition: HistogramSvc.h:906
bool destroy(IBaseHistogram *hist) override
AIDA::IProfile1D P1D
Definition: HistogramSvc.h:64
H2D * subtract(CSTR nameAndTitle, const H2D &a, const H2D &b) override
Definition: HistogramSvc.h:791
StatusCode retrieveObject(DataObject *par, int item, P2D *&obj) override
Definition: HistogramSvc.h:638
StatusCode retrieveObject(DataObject *par, int item, H1D *&obj) override
Definition: HistogramSvc.h:640
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:115
AIDA::IHistogram2D H2D
Definition: HistogramSvc.h:62
P2D * createCopy(DataObject *pPar, CSTR rel, const P2D &h)
Definition: HistogramSvc.h:919
P2D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:410
H1D * sliceY(CSTR name, const H2D &h, int indexX) override
Definition: HistogramSvc.h:773
virtual P2D * bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:477
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:895
StatusCode findObject(DataObject *par, int item, H2D *&obj) override
Definition: HistogramSvc.h:726
StatusCode findObject(Base *par, CSTR item, H1D *&obj) override
Definition: HistogramSvc.h:757
AIDA::IBaseHistogram Base
Definition: HistogramSvc.h:66
P1D * createProfile1D(CSTR name, CSTR title, const Edges &x, double upper, double lower, CSTR) override
Definition: HistogramSvc.h:877
H1D * book(CSTR full, CSTR title, DBINS(x)) override
Definition: HistogramSvc.h:220
std::pair< DataObject *, AIDA::IHistogram2D * > createH2D(const AIDA::IHistogram2D &hist)
Copy constructor.
void update1Ddefs(Property &)
handler to be invoked for updating property m_defs1D
virtual P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:401
P1D * createCopy(CSTR par, CSTR rel, const P1D &h)
Definition: HistogramSvc.h:888
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
static DataObject * __cast(T *p)
Definition: HistogramSvc.h:170
P2D * createCopy(CSTR par, CSTR rel, const P2D &h)
Definition: HistogramSvc.h:915
std::ostream & print(Base *h, std::ostream &s=std::cout) const override
Print (ASCII) the 1D histogram into the output stream.
H2D * add(CSTR nameAndTitle, const H2D &a, const H2D &b) override
Definition: HistogramSvc.h:789
StatusCode findObject(Base *par, CSTR item, H2D *&obj) override
Definition: HistogramSvc.h:759
StatusCode findObject(DataObject *par, CSTR item, H3D *&obj) override
Definition: HistogramSvc.h:739
string opt
print 'Summary: %32s [s] d d steps'%(summary.protocol,summary.type,summary.nevt,len(summary.data),)
Definition: ana.py:116
#define private
Definition: Class_dict.cpp:4
StatusCode findObject(IRegistry *pReg, CSTR path, P2D *&obj) override
Definition: HistogramSvc.h:678
H3D * subtract(CSTR nameAndTitle, const H3D &a, const H3D &b) override
Definition: HistogramSvc.h:800
StatusCode findObject(Base *par, int item, H1D *&obj) override
Definition: HistogramSvc.h:746
virtual P2D * bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:391
H2D * projectionYZ(CSTR nameAndTitle, const H3D &h) override
Definition: HistogramSvc.h:811
P2D * createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y), double upper, double lower) override
Definition: HistogramSvc.h:910
StatusCode findObject(CSTR par, CSTR rel, H3D *&obj) override
Definition: HistogramSvc.h:706
StatusCode findObject(IRegistry *pReg, CSTR path, H1D *&obj) override
Definition: HistogramSvc.h:680
H2D * book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:363
StatusCode registerObject(CSTR parent, CSTR rel, Base *obj) override
Definition: HistogramSvc.h:557
StatusCode findObject(CSTR full, H1D *&obj) override
Definition: HistogramSvc.h:691
StatusCode retrieveObject(CSTR parent, CSTR rel, H2D *&obj) override
Definition: HistogramSvc.h:609
H3D * createCopy(CSTR full, const H3D &h) override
Definition: HistogramSvc.h:860
P1D * bookProf(CSTR full, CSTR title, Edges e) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:314
H2D * createCopy(STRPAIR loc, const H2D &h)
Definition: HistogramSvc.h:847
P2D * bookProf(CSTR full, CSTR title, Edges x, Edges y) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:462
P1D * createCopy(DataObject *pPar, CSTR rel, const P1D &h)
Definition: HistogramSvc.h:892
H3D * createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z), CSTR) override
Definition: HistogramSvc.h:854
H2D const H3D int override NOT_IMPLEMENTED H2D CSTR tit
Definition: HistogramSvc.h:818
StatusCode retrieveObject(CSTR parent, int item, H3D *&obj) override
Definition: HistogramSvc.h:622
StatusCode retrieveObject(CSTR full, H1D *&obj) override
Definition: HistogramSvc.h:596
StatusCode findObject(CSTR par, CSTR rel, P1D *&obj) override
Definition: HistogramSvc.h:698
H1D * book(DataObject *pPar, int hID, CSTR title, DBINS(x)) override
Definition: HistogramSvc.h:215
StatusCode findObject(DataObject *par, int item, H3D *&obj) override
Definition: HistogramSvc.h:728
H2D * createHistogram2D(CSTR name, CSTR tit, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:835
std::vector< std::string > DBaseEntries
Definition: HistogramSvc.h:60
P2D * bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:404
StatusCode registerObject(Base *pPar, int item, Base *obj) override
Definition: HistogramSvc.h:565
StatusCode retrieveObject(DataObject *par, CSTR item, P1D *&obj) override
Definition: HistogramSvc.h:625
std::vector< double > Edges
Definition: HistogramSvc.h:59
H3D * createCopy(STRPAIR loc, const H3D &h)
Definition: HistogramSvc.h:864
H3D * book(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y, Edges z) override
Definition: HistogramSvc.h:548
StatusCode retrieveObject(CSTR full, H2D *&obj) override
Definition: HistogramSvc.h:598
P2D * bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y) override
Definition: HistogramSvc.h:464
StatusCode registerObject(Base *pPar, CSTR rel, Base *obj) override
Definition: HistogramSvc.h:561
H3D * createCopy(DataObject *pPar, CSTR rel, const H3D &h)
Definition: HistogramSvc.h:866
Property base class allowing Property* collections to be "homogeneous".
Definition: Property.h:38
P2D * createProfile2D(CSTR name, CSTR title, const Edges &x, const Edges &y, double upper, double lower, CSTR) override
Definition: HistogramSvc.h:908
StatusCode findObject(CSTR par, int item, H3D *&obj) override
Definition: HistogramSvc.h:717
StatusCode retrieveObject(Base *par, CSTR item, P2D *&obj) override
Definition: HistogramSvc.h:660
StatusCode unregisterObject(Base *obj, int item) override
Definition: HistogramSvc.h:576
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *, Double_t), Double_t scale)
Definition: HistogramSvc.h:105
HistogramSvc(const std::string &name, ISvcLocator *svc)
Statndard Constructor.
virtual P2D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:397
virtual H2D * book(STRPAIR loc, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:439
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
std::pair< DataObject *, AIDA::IHistogram3D * > createH3D(const AIDA::IHistogram3D &hist)
Copy constructor.
AIDA::IHistogramFactory * histogramFactory() override
Retrieve the AIDA HistogramFactory interface.
Definition: HistogramSvc.h:189
H2D * createCopy(CSTR full, const H2D &h) override
Definition: HistogramSvc.h:843
virtual P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:337
P1D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
Definition: HistogramSvc.h:259
StatusCode registerObject(CSTR parent, int item, Base *obj) override
Definition: HistogramSvc.h:559
StatusCode findObject(CSTR par, int item, P1D *&obj) override
Definition: HistogramSvc.h:709
virtual P1D * bookProf(CSTR par, CSTR rel, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:329
StatusCode retrieveObject(CSTR parent, CSTR rel, H3D *&obj) override
Definition: HistogramSvc.h:611
H1D * projectionY(CSTR name, const H2D &h) override
Definition: HistogramSvc.h:769
H1D * book(CSTR full, CSTR title, Edges e) override
Definition: HistogramSvc.h:292
H3D * book(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
Definition: HistogramSvc.h:517
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *))
Definition: HistogramSvc.h:125
StatusCode findObject(Base *par, CSTR item, P2D *&obj) override
Definition: HistogramSvc.h:755
StatusCode retrieveObject(Base *par, CSTR item, H1D *&obj) override
Definition: HistogramSvc.h:662
H1D * sliceX(CSTR name, const H2D &h, int indexY) override
Definition: HistogramSvc.h:771
StatusCode findObject(DataObject *par, int item, P1D *&obj) override
Definition: HistogramSvc.h:720
StatusCode retrieveObject(CSTR parent, CSTR rel, H1D *&obj) override
Definition: HistogramSvc.h:607
string s
Definition: gaudirun.py:245
P2D * bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y) override
Definition: HistogramSvc.h:466
H3D * book(CSTR par, int hID, CSTR title, Edges x, Edges y, Edges z) override
Definition: HistogramSvc.h:542
tuple item
print s1,s2
Definition: ana.py:146
StatusCode retrieveObject(DataObject *par, CSTR item, H3D *&obj) override
Definition: HistogramSvc.h:633
virtual P2D * bookProf(STRPAIR loc, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:470
H1D * createCopy(CSTR full, const H1D &h) override
Definition: HistogramSvc.h:826
P1D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
Definition: HistogramSvc.h:257
#define NOT_IMPLEMENTED
Definition: HistogramSvc.h:40
P2D * createCopy(CSTR full, const P2D &h) override
Definition: HistogramSvc.h:913
H1D * createHistogram1D(CSTR name, CSTR title, const Edges &x, CSTR) override
Definition: HistogramSvc.h:822
H3D * book(CSTR full, CSTR title, Edges x, Edges y, Edges z) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:538
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *, Double_t), Double_t scale)
Definition: HistogramSvc.h:95
P2D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:406
StatusCode retrieveObject(IRegistry *pReg, CSTR path, P2D *&obj) override
Definition: HistogramSvc.h:587
StatusCode retrieveObject(DataObject *par, int item, H2D *&obj) override
Definition: HistogramSvc.h:642
H2D * projectionXY(CSTR nameAndTitle, const H3D &h) override
Definition: HistogramSvc.h:807
H3D * createCopy(CSTR par, CSTR rel, const H3D &h)
Definition: HistogramSvc.h:862
std::pair< DataObject *, AIDA::IProfile1D * > createProf1D(const AIDA::IProfile1D &hist)
Copy constructor.
StatusCode retrieveObject(CSTR parent, int item, H2D *&obj) override
Definition: HistogramSvc.h:620
Helper(HistogramSvc *p)
Definition: HistogramSvc.h:69
H2D * book(DataObject *pPar, int hID, CSTR title, Edges x, Edges y) override
Definition: HistogramSvc.h:441
P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), CSTR opt) override
Definition: HistogramSvc.h:252
H3D * divide(CSTR nameAndTitle, const H3D &a, const H3D &b) override
Definition: HistogramSvc.h:804
P1D * createProfile1D(CSTR name, CSTR tit, DBINS(x), double upper, double lower, CSTR opt) override
Definition: HistogramSvc.h:873
StatusCode retrieveObject(DataObject *par, CSTR item, H2D *&obj) override
Definition: HistogramSvc.h:631
StatusCode findObject(DataObject *par, CSTR item, P2D *&obj) override
Definition: HistogramSvc.h:733
P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges e) override
Definition: HistogramSvc.h:324
StatusCode retrieveObject(CSTR parent, CSTR rel, P1D *&obj) override
Definition: HistogramSvc.h:603
H2D * divide(CSTR nameAndTitle, const H2D &a, const H2D &b) override
Definition: HistogramSvc.h:795
StatusCode findObject(Base *par, int item, P1D *&obj) override
Definition: HistogramSvc.h:742
DataObject * createDirectory(CSTR parentDir, CSTR subDir) override
Create a sub-directory in a directory.
StatusCode retrieve(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:70
StatusCode findObject(DataObject *par, CSTR item, H2D *&obj) override
Definition: HistogramSvc.h:737
H2D * book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
Definition: HistogramSvc.h:361
AIDA::IProfile2D P2D
Definition: HistogramSvc.h:65
AIDA::IHistogram1D H1D
Definition: HistogramSvc.h:61
StatusCode reinitialize() override
Initialise the service.
StatusCode retrieveObject(Base *par, CSTR item, H3D *&obj) override
Definition: HistogramSvc.h:666
virtual H3D * book(STRPAIR loc, CSTR title, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:515
H1D * multiply(CSTR nameAndTitle, const H1D &a, const H1D &b) override
Definition: HistogramSvc.h:784
AIDA::IHistogram3D H3D
Definition: HistogramSvc.h:63
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
P1D * createProfile1D(CSTR name, CSTR tit, DBINS(x), CSTR opt) override
Definition: HistogramSvc.h:871
virtual H3D * book(STRPAIR loc, CSTR title, Edges x, Edges y, Edges z)
Definition: HistogramSvc.h:546
H1D * book(CSTR par, int hID, CSTR title, Edges e) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:284
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), CSTR) override
Definition: HistogramSvc.h:897
StatusCode registerObject(DataObject *pPar, int item, Base *obj) override
Definition: HistogramSvc.h:563
StatusCode findObject(DataObject *par, CSTR item, P1D *&obj) override
Definition: HistogramSvc.h:731
H2D * book(CSTR full, CSTR title, DBINS(x), DBINS(y)) override
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:359
Helper functions to set/get the application return code.
Definition: __init__.py:1
virtual P1D * bookProf(STRPAIR loc, CSTR title, DBINS(x), CSTR opt)
Definition: HistogramSvc.h:248
H3D * book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, Edges z) override
Definition: HistogramSvc.h:540
P1D * bookProf(CSTR par, int hID, CSTR title, Edges e) override
Definition: HistogramSvc.h:318
StatusCode findObject(IRegistry *pReg, CSTR path, H3D *&obj) override
Definition: HistogramSvc.h:684
std::map< std::string, Gaudi::Histo1DDef > Histo1DMap
Definition: HistogramSvc.h:961
P2D * createCopy(STRPAIR loc, const P2D &h)
Definition: HistogramSvc.h:917
StatusCode findObject(Base *par, int item, H3D *&obj) override
Definition: HistogramSvc.h:750
H2D * createHistogram2D(CSTR name, CSTR title, const Edges &x, const Edges &y, CSTR) override
Definition: HistogramSvc.h:839
P1D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), CSTR opt) override
Definition: HistogramSvc.h:244
StatusCode find(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:88
StatusCode retrieveObject(IRegistry *pReg, CSTR path, H3D *&obj) override
Definition: HistogramSvc.h:589
HistogramSvc class definition.
Definition: HistogramSvc.h:47