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  virtual StatusCode initialize ();
184  virtual StatusCode reinitialize ();
186  virtual StatusCode finalize ();
187 
189  virtual AIDA::IHistogramFactory* histogramFactory() { return this; }
190 
191  // ==========================================================================
192  // Book 1D histogram with fix binning
193  // ==========================================================================
211  virtual H1D* book(CSTR par, CSTR rel, CSTR title, DBINS(x))
212  { return book(createPath(par), rel, title, BINS(x)); }
213  virtual H1D* book(CSTR par, int hID, CSTR title, DBINS(x))
214  { return book(par, std::to_string(hID), title, BINS(x)); }
215  virtual H1D* book(DataObject* pPar, int hID, CSTR title, DBINS(x))
216  { return book(pPar, std::to_string(hID), title, BINS(x)); }
217  virtual H1D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x)) ;
218  virtual H1D* book(STRPAIR loc,CSTR title, DBINS(x))
219  { return book(loc.first, loc.second, title, BINS(x)); }
220  virtual H1D* book(CSTR full, CSTR title, DBINS(x))
221  { return book(i_splitPath(full), title, BINS(x)); }
222  // ==========================================================================
223  // Book 1D Profile histogram with fix binning
224  // ==========================================================================
242  virtual P1D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x),CSTR opt)
243  { return bookProf(createPath(par), rel, title, BINS(x),opt); }
244  virtual P1D* bookProf(CSTR par, int hID, CSTR title, DBINS(x),CSTR opt )
245  { return bookProf(par, std::to_string(hID), title, BINS(x),opt); }
246  virtual P1D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x),CSTR opt )
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  virtual P1D* bookProf(CSTR full, CSTR title, DBINS(x),CSTR opt)
251  { return bookProf(i_splitPath(full), title, BINS(x),opt); }
252  virtual P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x),CSTR opt)
253  { return i_book(pPar,rel,title,Gaudi::createProf1D(title, BINS(x),0,0,opt)); }
254 
255  virtual P1D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), double upper, double lower,CSTR opt)
256  { return bookProf(createPath(par), rel, title, BINS(x), upper, lower , opt); }
257  virtual P1D* bookProf(CSTR par, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
258  { return bookProf(par, std::to_string(hID), title, BINS(x), upper, lower, opt ); }
259  virtual P1D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
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  virtual P1D* bookProf(CSTR full, CSTR title, DBINS(x), double upper, double lower, CSTR opt )
264  { return bookProf(i_splitPath(full), title, BINS(x), upper, lower , opt ); }
265  virtual P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
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  virtual H1D* book(CSTR par, int hID, CSTR title, Edges e)
285  { return book(par, std::to_string(hID), title, e); }
286  virtual H1D* book(DataObject* pPar, int hID, CSTR title, Edges e)
287  { return book(pPar, std::to_string(hID), title, e); }
288  virtual H1D* book(CSTR par, CSTR rel, CSTR title, Edges e )
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  virtual H1D* book(CSTR full, CSTR title, Edges e )
293  { return book(i_splitPath(full), title, e); }
294  virtual H1D* book(DataObject* pPar, CSTR rel, CSTR title, Edges e )
295  { return i_book(pPar, rel, title, Gaudi::createH1D(title, e)); }
296 
297  // ==========================================================================
298  // Book 1D profile histogram with variable binning
299  // ==========================================================================
314  virtual P1D* bookProf(CSTR full, CSTR title, Edges e )
315  { return bookProf(i_splitPath(full), title, e); }
316  virtual P1D* bookProf(CSTR par, CSTR rel, CSTR title, Edges e )
317  { return bookProf(createPath(par), rel, title, e); }
318  virtual P1D* bookProf(CSTR par, int hID, CSTR title, Edges e )
319  { return bookProf(par, std::to_string(hID), title, e); }
320  virtual P1D* bookProf(DataObject* pPar, int hID, CSTR title, Edges e )
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  virtual P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges e )
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  virtual H2D* book(CSTR full, CSTR title, DBINS(x), DBINS(y))
360  { return book(i_splitPath(full), title, BINS(x),BINS(y)); }
361  virtual H2D* book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y))
362  { return book(createPath(par), rel, title, BINS(x),BINS(y)); }
363  virtual H2D* book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y))
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  virtual H2D* book(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y))
368  { return book(pPar,std::to_string(hID), title, BINS(x),BINS(y)); }
369  virtual H2D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y))
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  virtual P2D* bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y))
405  { return bookProf(i_splitPath(full), title, BINS(x),BINS(y)); }
406  virtual P2D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y))
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  virtual P2D* bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y))
411  { return bookProf(par, std::to_string(hID), title, BINS(x),BINS(y)); }
412  virtual P2D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y))
413  { return bookProf(pPar,std::to_string(hID), title, BINS(x),BINS(y)); }
414  virtual P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y))
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  virtual H2D* book(CSTR full, CSTR title, Edges x, Edges y )
434  { return book(i_splitPath(full), title, x, y); }
435  virtual H2D* book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y )
436  { return book(createPath(par), rel, title, x, y); }
437  virtual H2D* book(CSTR par, int hID, CSTR title, Edges x, Edges y )
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  virtual H2D* book(DataObject* pPar, int hID, CSTR title, Edges x, Edges y )
442  { return book(pPar, std::to_string(hID), title, x, y); }
443  virtual H2D* book(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y )
444  { return i_book(pPar, rel, title, Gaudi::createH2D(title, x,y)); }
445  // ==========================================================================
446  // Book 2D profile histogram with variable binning
447  // ==========================================================================
462  virtual P2D* bookProf(CSTR full, CSTR title, Edges x, Edges y )
463  { return bookProf(i_splitPath(full), title, x, y); }
464  virtual P2D* bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y )
465  { return bookProf(createPath(par), rel, title, x, y); }
466  virtual P2D* bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y )
467  { return bookProf(par, std::to_string(hID), title, x, y); }
468  virtual P2D* bookProf(DataObject* pPar, int hID, CSTR title, Edges x, Edges y )
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  virtual P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y )
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  virtual H3D* book(CSTR full, CSTR title, DBINS(x), DBINS(y), DBINS(z))
508  { return book(i_splitPath(full),title,BINS(x),BINS(y),BINS(z)); }
509  virtual H3D* book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z))
510  { return book(createPath(par),rel,title,BINS(x),BINS(y),BINS(z)); }
511  virtual H3D* book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z))
512  { return book(par,std::to_string(hID),title,BINS(x),BINS(y),BINS(z)); }
513  virtual H3D* book(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z))
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  virtual H3D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z))
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  virtual H3D* book(CSTR full, CSTR title, Edges x, Edges y, Edges z)
539  { return book(i_splitPath(full), title, x, y, z); }
540  virtual H3D* book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, Edges z)
541  { return book(createPath(par), rel, title, x, y, z); }
542  virtual H3D* book(CSTR par, int hID, CSTR title, Edges x, Edges y, Edges z)
543  { return book(par,std::to_string(hID), title, x, y, z); }
544  virtual H3D* book(DataObject* pPar, int hID, CSTR title, Edges x, Edges y, Edges z)
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  virtual H3D* book(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y, Edges z)
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  virtual StatusCode registerObject(CSTR parent, CSTR rel, Base* obj )
558  { return registerObject(createPath(parent), rel, obj); }
559  virtual StatusCode registerObject(CSTR parent, int item, Base* obj )
560  { return registerObject(parent, std::to_string(item), obj); }
561  virtual StatusCode registerObject(Base* pPar, CSTR rel, Base* obj )
562  { return registerObject(__cast(pPar), rel, obj); }
563  virtual StatusCode registerObject(DataObject* pPar, int item, Base* obj )
564  { return registerObject(pPar, std::to_string(item), obj); }
565  virtual StatusCode registerObject(Base* pPar, int item, Base* obj )
566  { return registerObject(__cast(pPar), item, obj); }
567  virtual StatusCode registerObject(CSTR full, Base* obj );
568  virtual StatusCode registerObject(DataObject* pPar, CSTR rel, Base* obj );
569  // ==========================================================================
570  // Unregister histogram from the data store
571  // ==========================================================================
572  virtual StatusCode unregisterObject(Base* obj )
573  { return DataSvc::unregisterObject(__cast(obj)); }
574  virtual StatusCode unregisterObject(Base* obj, CSTR objectPath)
575  { return DataSvc::unregisterObject(__cast(obj),objectPath); }
576  virtual StatusCode unregisterObject(Base* obj, int item )
577  { return DataSvc::unregisterObject(__cast(obj),item); }
578  // ==========================================================================
579  // Retrieve histogram from data store
580  // ==========================================================================
581  virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, H1D*& obj)
582  { return Helper(this).retrieve(pReg,path,obj); }
583  virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, P1D*& obj)
584  { return Helper(this).retrieve(pReg,path,obj); }
585  virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, H2D*& obj)
586  { return Helper(this).retrieve(pReg,path,obj); }
587  virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, P2D*& obj)
588  { return Helper(this).retrieve(pReg,path,obj); }
589  virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, H3D*& obj)
590  { return Helper(this).retrieve(pReg,path,obj); }
591  //------------------------------------------------------------------------------
592  virtual StatusCode retrieveObject(CSTR full,P1D*& obj)
593  { return Helper(this).retrieve(full,obj); }
594  virtual StatusCode retrieveObject(CSTR full,P2D*& obj)
595  { return Helper(this).retrieve(full,obj); }
596  virtual StatusCode retrieveObject(CSTR full,H1D*& obj)
597  { return Helper(this).retrieve(full,obj); }
598  virtual StatusCode retrieveObject(CSTR full,H2D*& obj)
599  { return Helper(this).retrieve(full,obj); }
600  virtual StatusCode retrieveObject(CSTR full,H3D*& obj)
601  { return Helper(this).retrieve(full,obj); }
602  //------------------------------------------------------------------------------
603  virtual StatusCode retrieveObject(CSTR parent,CSTR rel,P1D*& obj)
604  { return Helper(this).retrieve(parent,rel,obj); }
605  virtual StatusCode retrieveObject(CSTR parent,CSTR rel,P2D*& obj)
606  { return Helper(this).retrieve(parent,rel,obj); }
607  virtual StatusCode retrieveObject(CSTR parent,CSTR rel,H1D*& obj)
608  { return Helper(this).retrieve(parent,rel,obj); }
609  virtual StatusCode retrieveObject(CSTR parent,CSTR rel,H2D*& obj)
610  { return Helper(this).retrieve(parent,rel,obj); }
611  virtual StatusCode retrieveObject(CSTR parent,CSTR rel,H3D*& obj)
612  { return Helper(this).retrieve(parent,rel,obj); }
613  //------------------------------------------------------------------------------
614  virtual StatusCode retrieveObject(CSTR parent,int item,P1D*& obj)
615  { return Helper(this).retrieve(parent,item,obj); }
616  virtual StatusCode retrieveObject(CSTR parent,int item,P2D*& obj)
617  { return Helper(this).retrieve(parent,item,obj); }
618  virtual StatusCode retrieveObject(CSTR parent,int item,H1D*& obj)
619  { return Helper(this).retrieve(parent,item,obj); }
620  virtual StatusCode retrieveObject(CSTR parent,int item,H2D*& obj)
621  { return Helper(this).retrieve(parent,item,obj); }
622  virtual StatusCode retrieveObject(CSTR parent,int item,H3D*& obj)
623  { return Helper(this).retrieve(parent,item,obj); }
624  //------------------------------------------------------------------------------
625  virtual StatusCode retrieveObject(DataObject* par,CSTR item,P1D*& obj)
626  { return Helper(this).retrieve(par,item,obj); }
627  virtual StatusCode retrieveObject(DataObject* par,CSTR item,P2D*& obj)
628  { return Helper(this).retrieve(par,item,obj); }
629  virtual StatusCode retrieveObject(DataObject* par,CSTR item,H1D*& obj)
630  { return Helper(this).retrieve(par,item,obj); }
631  virtual StatusCode retrieveObject(DataObject* par,CSTR item,H2D*& obj)
632  { return Helper(this).retrieve(par,item,obj); }
633  virtual StatusCode retrieveObject(DataObject* par,CSTR item,H3D*& obj)
634  { return Helper(this).retrieve(par,item,obj); }
635  //------------------------------------------------------------------------------
636  virtual StatusCode retrieveObject(DataObject* par,int item,P1D*& obj)
637  { return Helper(this).retrieve(par,item,obj); }
638  virtual StatusCode retrieveObject(DataObject* par,int item,P2D*& obj)
639  { return Helper(this).retrieve(par,item,obj); }
640  virtual StatusCode retrieveObject(DataObject* par,int item,H1D*& obj)
641  { return Helper(this).retrieve(par,item,obj); }
642  virtual StatusCode retrieveObject(DataObject* par,int item,H2D*& obj)
643  { return Helper(this).retrieve(par,item,obj); }
644  virtual StatusCode retrieveObject(DataObject* par,int item,H3D*& obj)
645  { return Helper(this).retrieve(par,item,obj); }
646  //------------------------------------------------------------------------------
647  virtual StatusCode retrieveObject(Base* par,int item,P1D*& obj)
648  { return Helper(this).retrieve(__cast(par),item,obj); }
649  virtual StatusCode retrieveObject(Base* par,int item,P2D*& obj)
650  { return Helper(this).retrieve(__cast(par),item,obj); }
651  virtual StatusCode retrieveObject(Base* par,int item,H1D*& obj)
652  { return Helper(this).retrieve(__cast(par),item,obj); }
653  virtual StatusCode retrieveObject(Base* par,int item,H2D*& obj)
654  { return Helper(this).retrieve(__cast(par),item,obj); }
655  virtual StatusCode retrieveObject(Base* par,int item,H3D*& obj)
656  { return Helper(this).retrieve(__cast(par),item,obj); }
657  //------------------------------------------------------------------------------
658  virtual StatusCode retrieveObject(Base* par,CSTR item,P1D*& obj)
659  { return Helper(this).retrieve(__cast(par),item,obj); }
660  virtual StatusCode retrieveObject(Base* par,CSTR item,P2D*& obj)
661  { return Helper(this).retrieve(__cast(par),item,obj); }
662  virtual StatusCode retrieveObject(Base* par,CSTR item,H1D*& obj)
663  { return Helper(this).retrieve(__cast(par),item,obj); }
664  virtual StatusCode retrieveObject(Base* par,CSTR item,H2D*& obj)
665  { return Helper(this).retrieve(__cast(par),item,obj); }
666  virtual StatusCode retrieveObject(Base* par,CSTR item,H3D*& obj)
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  virtual StatusCode findObject(IRegistry* pReg,CSTR path,P1D*& obj)
677  { return Helper(this).find(pReg,path,obj); }
678  virtual StatusCode findObject(IRegistry* pReg,CSTR path,P2D*& obj)
679  { return Helper(this).find(pReg,path,obj); }
680  virtual StatusCode findObject(IRegistry* pReg,CSTR path,H1D*& obj)
681  { return Helper(this).find(pReg,path,obj); }
682  virtual StatusCode findObject(IRegistry* pReg,CSTR path,H2D*& obj)
683  { return Helper(this).find(pReg,path,obj); }
684  virtual StatusCode findObject(IRegistry* pReg,CSTR path,H3D*& obj)
685  { return Helper(this).find(pReg,path,obj); }
686  //------------------------------------------------------------------------------
687  virtual StatusCode findObject(CSTR full,P1D*& obj)
688  { return Helper(this).find(full,obj); }
689  virtual StatusCode findObject(CSTR full,P2D*& obj)
690  { return Helper(this).find(full,obj); }
691  virtual StatusCode findObject(CSTR full,H1D*& obj)
692  { return Helper(this).find(full,obj); }
693  virtual StatusCode findObject(CSTR full,H2D*& obj)
694  { return Helper(this).find(full,obj); }
695  virtual StatusCode findObject(CSTR full,H3D*& obj)
696  { return Helper(this).find(full,obj); }
697  //------------------------------------------------------------------------------
698  virtual StatusCode findObject(CSTR par,CSTR rel,P1D*& obj)
699  { return Helper(this).find(par,rel,obj); }
700  virtual StatusCode findObject(CSTR par,CSTR rel,P2D*& obj)
701  { return Helper(this).find(par,rel,obj); }
702  virtual StatusCode findObject(CSTR par,CSTR rel,H1D*& obj)
703  { return Helper(this).find(par,rel,obj); }
704  virtual StatusCode findObject(CSTR par,CSTR rel,H2D*& obj)
705  { return Helper(this).find(par,rel,obj); }
706  virtual StatusCode findObject(CSTR par,CSTR rel,H3D*& obj)
707  { return Helper(this).find(par,rel,obj); }
708  //------------------------------------------------------------------------------
709  virtual StatusCode findObject(CSTR par,int item,P1D*& obj)
710  { return Helper(this).find(par,item,obj); }
711  virtual StatusCode findObject(CSTR par,int item,P2D*& obj)
712  { return Helper(this).find(par,item,obj); }
713  virtual StatusCode findObject(CSTR par,int item,H1D*& obj)
714  { return Helper(this).find(par,item,obj); }
715  virtual StatusCode findObject(CSTR par,int item,H2D*& obj)
716  { return Helper(this).find(par,item,obj); }
717  virtual StatusCode findObject(CSTR par,int item,H3D*& obj)
718  { return Helper(this).find(par,item,obj); }
719  //------------------------------------------------------------------------------
720  virtual StatusCode findObject(DataObject* par,int item,P1D*& obj)
721  { return Helper(this).find(par,item,obj); }
722  virtual StatusCode findObject(DataObject* par,int item,P2D*& obj)
723  { return Helper(this).find(par,item,obj); }
724  virtual StatusCode findObject(DataObject* par,int item,H1D*& obj)
725  { return Helper(this).find(par,item,obj); }
726  virtual StatusCode findObject(DataObject* par,int item,H2D*& obj)
727  { return Helper(this).find(par,item,obj); }
728  virtual StatusCode findObject(DataObject* par,int item,H3D*& obj)
729  { return Helper(this).find(par,item,obj); }
730  //------------------------------------------------------------------------------
731  virtual StatusCode findObject(DataObject* par,CSTR item,P1D*& obj)
732  { return Helper(this).find(par,item,obj); }
733  virtual StatusCode findObject(DataObject* par,CSTR item,P2D*& obj)
734  { return Helper(this).find(par,item,obj); }
735  virtual StatusCode findObject(DataObject* par,CSTR item,H1D*& obj)
736  { return Helper(this).find(par,item,obj); }
737  virtual StatusCode findObject(DataObject* par,CSTR item,H2D*& obj)
738  { return Helper(this).find(par,item,obj); }
739  virtual StatusCode findObject(DataObject* par,CSTR item,H3D*& obj)
740  { return Helper(this).find(par,item,obj); }
741  //------------------------------------------------------------------------------
742  virtual StatusCode findObject(Base* par,int item,P1D*& obj)
743  { return Helper(this).find(__cast(par),item,obj); }
744  virtual StatusCode findObject(Base* par,int item,P2D*& obj)
745  { return Helper(this).find(__cast(par),item,obj); }
746  virtual StatusCode findObject(Base* par,int item,H1D*& obj)
747  { return Helper(this).find(__cast(par),item,obj); }
748  virtual StatusCode findObject(Base* par,int item,H2D*& obj)
749  { return Helper(this).find(__cast(par),item,obj); }
750  virtual StatusCode findObject(Base* par,int item,H3D*& obj)
751  { return Helper(this).find(__cast(par),item,obj); }
752  //------------------------------------------------------------------------------
753  virtual StatusCode findObject(Base* par,CSTR item,P1D*& obj)
754  { return Helper(this).find(__cast(par),item,obj); }
755  virtual StatusCode findObject(Base* par,CSTR item,P2D*& obj)
756  { return Helper(this).find(__cast(par),item,obj); }
757  virtual StatusCode findObject(Base* par,CSTR item,H1D*& obj)
758  { return Helper(this).find(__cast(par),item,obj); }
759  virtual StatusCode findObject(Base* par,CSTR item,H2D*& obj)
760  { return Helper(this).find(__cast(par),item,obj); }
761  virtual StatusCode findObject(Base* par,CSTR item,H3D*& obj)
762  { return Helper(this).find(__cast(par),item,obj); }
763 
764  // ==========================================================================
765  // Projections and slices.
766  // ==========================================================================
767  virtual H1D* projectionX(CSTR name,const H2D& h)
768  { return sliceX( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
769  virtual H1D* projectionY(CSTR name,const H2D& h)
770  { return sliceY( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
771  virtual H1D* sliceX(CSTR name,const H2D& h,int indexY)
772  { return sliceX( name, h, indexY, indexY ); }
773  virtual H1D* sliceY(CSTR name,const H2D& h,int indexX)
774  { return sliceY( name, h, indexX, indexX ); }
775  virtual H1D* sliceX(CSTR name,const H2D& h,int indexY1,int indexY2);
776  virtual H1D* sliceY(CSTR name,const H2D& h,int indexX1,int indexX2);
777  //------------------------------------------------------------------------------
778  bool destroy( IBaseHistogram* hist);
779 
780  H1D* add(CSTR nameAndTitle, const H1D& a, const H1D& b)
781  { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Add, 1.); }
782  H1D* subtract(CSTR nameAndTitle, const H1D& a, const H1D& b)
783  { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Add,-1.); }
784  H1D* multiply(CSTR nameAndTitle, const H1D& a, const H1D& b)
785  { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Multiply); }
786  H1D* divide(CSTR nameAndTitle, const H1D& a, const H1D& b)
787  { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Divide); }
788 
789  H2D* add(CSTR nameAndTitle, const H2D& a, const H2D& b)
790  { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Add, 1.); }
791  H2D* subtract(CSTR nameAndTitle, const H2D& a, const H2D& b)
792  { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Add,-1.); }
793  H2D* multiply(CSTR nameAndTitle, const H2D& a, const H2D& b)
794  { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Multiply); }
795  H2D* divide(CSTR nameAndTitle, const H2D& a, const H2D& b)
796  { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Divide); }
797 
798  H3D* add(CSTR nameAndTitle, const H3D& a, const H3D& b)
799  { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Add, 1.); }
800  H3D* subtract(CSTR nameAndTitle, const H3D& a, const H3D& b)
801  { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Add,-1.); }
802  H3D* multiply(CSTR nameAndTitle, const H3D& a, const H3D& b)
803  { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Multiply); }
804  H3D* divide(CSTR nameAndTitle, const H3D& a, const H3D& b)
805  { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Divide); }
806 
807  H2D* projectionXY(CSTR nameAndTitle,const H3D& h)
808  { return i_project(nameAndTitle,h,"xy"); }
809  H2D* projectionXZ(CSTR nameAndTitle,const H3D& h)
810  { return i_project(nameAndTitle,h,"xz"); }
811  H2D* projectionYZ(CSTR nameAndTitle,const H3D& h)
812  { return i_project(nameAndTitle,h,"yz"); }
813  H2D* sliceXY(CSTR /* nameAndTitle */,const H3D& /* h */,int /* low */,int /* high */ ) NOT_IMPLEMENTED
814  H2D* sliceXZ(CSTR /* nameAndTitle */,const H3D& /* h */,int /* low */,int /* high */ ) NOT_IMPLEMENTED
815  H2D* sliceYZ(CSTR /* nameAndTitle */,const H3D& /* h */,int /* low */,int /* high */ ) 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*/)
821  { return book( name, tit, BINS(x)); }
822  H1D* createHistogram1D(CSTR name,CSTR title,const Edges& x,CSTR /*opt*/)
823  { return book(name, title, x); }
824  H1D* createHistogram1D(CSTR nameAndTitle, DBINS(x))
825  { return book(nameAndTitle, nameAndTitle, BINS(x)); }
826  H1D* createCopy(CSTR full, const H1D& h)
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*/)
838  { return book( name, tit, BINS(x), BINS(y)); }
839  H2D* createHistogram2D(CSTR name,CSTR title,const Edges& x,const Edges& y, CSTR /*opt*/)
840  { return book(name, title, x, y); }
841  H2D* createHistogram2D(CSTR nameAndTitle, DBINS(x), DBINS(y))
842  { return book(nameAndTitle, nameAndTitle, BINS(x), BINS(y)); }
843  H2D* createCopy(CSTR full, const H2D& h)
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*/)
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*/)
857  { return book(name, title, x, y, z); }
858  H3D* createHistogram3D(CSTR nameAndTitle, DBINS(x), DBINS(y), DBINS(z))
859  { return book(nameAndTitle, nameAndTitle, BINS(x), BINS(y), BINS(z)); }
860  H3D* createCopy(CSTR full, const H3D& h)
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 )
872  { return bookProf( name, tit, BINS(x) , opt ); }
873  P1D* createProfile1D(CSTR name,CSTR tit,DBINS(x),double upper, double lower , CSTR opt )
874  { return bookProf( name, tit, BINS(x), upper, lower , opt ); }
875  P1D* createProfile1D(CSTR name,CSTR title,const Edges& x,CSTR /* opt */ )
876  { return bookProf(name, title, x ); }
877  P1D* createProfile1D(CSTR name,CSTR title,const Edges& x,double upper, double lower, CSTR /* opt */ )
878  { return bookProf(name, title, x, upper, lower ); }
879 
880  P1D* createProfile1D(CSTR nametit,DBINS(x))
881  { return bookProf( nametit, nametit, BINS(x) , "s"); }
882  P1D* createProfile1D(CSTR nametit,DBINS(x),double upper, double lower )
883  { return bookProf( nametit, nametit, BINS(x), upper, lower , "s"); }
884 
885 
886  P1D* createCopy(CSTR full, const P1D& h)
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*/)
898  { return bookProf( name, tit, BINS(x), BINS(y)); }
899  P2D* createProfile2D(CSTR name,CSTR title,const Edges& x,const Edges& y, CSTR /*opt*/)
900  { return bookProf(name, title, x, y); }
901  P2D* createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y))
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*/)
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*/)
909  { return bookProf(name, title, x, y, upper, lower); }
910  P2D* createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y),double upper, double lower)
911  { return bookProf(nameAndTitle, nameAndTitle, BINS(x), BINS(y), upper, lower);}
912 
913  P2D* createCopy(CSTR full, const P2D& h)
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) NOT_IMPLEMENTED
923  AIDA::ICloud1D* createCloud1D(CSTR) NOT_IMPLEMENTED
924  AIDA::ICloud1D* createCopy(CSTR, const AIDA::ICloud1D&) NOT_IMPLEMENTED
925  AIDA::ICloud2D* createCloud2D(CSTR, CSTR, int, CSTR) NOT_IMPLEMENTED
926  AIDA::ICloud2D* createCloud2D(CSTR) NOT_IMPLEMENTED
927  AIDA::ICloud2D* createCopy(CSTR, const AIDA::ICloud2D&) NOT_IMPLEMENTED
928  AIDA::ICloud3D* createCloud3D(CSTR, CSTR, int, CSTR) NOT_IMPLEMENTED
929  AIDA::ICloud3D* createCloud3D(CSTR) NOT_IMPLEMENTED
930  AIDA::ICloud3D* createCopy(CSTR, const AIDA::ICloud3D&) NOT_IMPLEMENTED
931 
937 
939  virtual std::ostream& print(Base* h, std::ostream& s = std::cout) const;
940 
942  virtual std::ostream& write(Base* h, std::ostream& s = std::cout) const;
943 
945  virtual int write(Base* h, const char* file_name ) const;
946 
948  virtual DataObject* createPath(CSTR newPath );
949 
954  virtual DataObject* createDirectory (CSTR parentDir, CSTR subDir );
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:473
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
H2D * add(CSTR nameAndTitle, const H2D &a, const H2D &b)
Definition: HistogramSvc.h:789
H2D * subtract(CSTR nameAndTitle, const H2D &a, const H2D &b)
Definition: HistogramSvc.h:791
virtual P2D * bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:479
virtual StatusCode retrieveObject(CSTR parent, int item, P2D *&obj)
Definition: HistogramSvc.h:616
virtual H1D * book(STRPAIR loc, CSTR title, Edges e)
Definition: HistogramSvc.h:290
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
H2D * createCopy(DataObject *pPar, CSTR rel, const H2D &h)
Definition: HistogramSvc.h:849
H1D * createCopy(DataObject *pPar, CSTR rel, const H1D &h)
Definition: HistogramSvc.h:832
virtual StatusCode findObject(DataObject *par, CSTR item, P1D *&obj)
Definition: HistogramSvc.h:731
virtual P2D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:399
P2D * createProfile2D(CSTR name, CSTR title, const Edges &x, const Edges &y, double upper, double lower, CSTR)
Definition: HistogramSvc.h:908
virtual H2D * book(CSTR par, int hID, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:437
Define general base for Gaudi exception.
virtual StatusCode findObject(CSTR par, int item, H1D *&obj)
Definition: HistogramSvc.h:713
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
virtual H1D * book(CSTR par, CSTR rel, CSTR title, Edges e)
Definition: HistogramSvc.h:288
std::set< std::string > m_mods1D
Definition: HistogramSvc.h:969
virtual StatusCode retrieveObject(CSTR parent, CSTR rel, P1D *&obj)
Definition: HistogramSvc.h:603
bool destroy(IBaseHistogram *hist)
virtual StatusCode findObject(DataObject *par, CSTR item, H3D *&obj)
Definition: HistogramSvc.h:739
virtual P1D * bookProf(STRPAIR loc, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:335
virtual StatusCode findObject(Base *par, CSTR item, H2D *&obj)
Definition: HistogramSvc.h:759
virtual StatusCode findObject(CSTR par, int item, P1D *&obj)
Definition: HistogramSvc.h:709
virtual StatusCode retrieveObject(Base *par, int item, H1D *&obj)
Definition: HistogramSvc.h:651
virtual P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:472
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
virtual StatusCode retrieveObject(CSTR parent, int item, H3D *&obj)
Definition: HistogramSvc.h:622
virtual P2D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:393
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
virtual P1D * bookProf(CSTR full, CSTR title, Edges e)
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:314
H2D const H3D int NOT_IMPLEMENTED H2D CSTR tit
Definition: HistogramSvc.h:818
std::pair< DataObject *, AIDA::IHistogram1D * > createH1D(const AIDA::IHistogram1D &hist)
Copy constructor.
H1D * subtract(CSTR nameAndTitle, const H1D &a, const H1D &b)
Definition: HistogramSvc.h:782
virtual StatusCode retrieveObject(DataObject *par, int item, H2D *&obj)
Definition: HistogramSvc.h:642
P1D * createCopy(STRPAIR loc, const P1D &h)
Definition: HistogramSvc.h:890
virtual StatusCode registerObject(Base *pPar, CSTR rel, Base *obj)
Definition: HistogramSvc.h:561
virtual StatusCode retrieveObject(IRegistry *pReg, CSTR path, H1D *&obj)
Definition: HistogramSvc.h:581
virtual StatusCode findObject(Base *par, int item, H3D *&obj)
Definition: HistogramSvc.h:750
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
virtual P1D * bookProf(CSTR par, int hID, CSTR title, Edges e)
Definition: HistogramSvc.h:318
P1D * createProfile1D(CSTR nametit, DBINS(x), double upper, double lower)
Definition: HistogramSvc.h:882
virtual P1D * bookProf(CSTR full, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
Definition: HistogramSvc.h:263
virtual H1D * projectionY(CSTR name, const H2D &h)
Definition: HistogramSvc.h:769
const std::pair< std::string, std::string > & STRPAIR
Definition: HistogramSvc.h:52
list path
Definition: __init__.py:15
virtual P1D * bookProf(DataObject *pPar, int hID, CSTR title, Edges e)
Definition: HistogramSvc.h:320
virtual H1D * book(STRPAIR loc, CSTR title, DBINS(x))
Definition: HistogramSvc.h:218
virtual StatusCode findObject(DataObject *par, int item, P1D *&obj)
Definition: HistogramSvc.h:720
P1D * createCopy(CSTR full, const P1D &h)
Definition: HistogramSvc.h:886
virtual P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:485
virtual H1D * book(DataObject *pPar, int hID, CSTR title, DBINS(x))
Definition: HistogramSvc.h:215
virtual AIDA::IHistogramFactory * histogramFactory()
Retrieve the AIDA HistogramFactory interface.
Definition: HistogramSvc.h:189
virtual StatusCode findObject(CSTR full, H3D *&obj)
Definition: HistogramSvc.h:695
H2D * createHistogram2D(CSTR nameAndTitle, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:841
virtual H2D * book(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:369
STL namespace.
~HistogramSvc() override
Destructor.
virtual P2D * bookProf(CSTR full, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:475
virtual std::ostream & write(Base *h, std::ostream &s=std::cout) const
Write (ASCII) the 1D histogram table into the output stream.
H2D * multiply(CSTR nameAndTitle, const H2D &a, const H2D &b)
Definition: HistogramSvc.h:793
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
void not_implemented() const
Definition: HistogramSvc.h:53
StatusCode find(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:82
StatusCode retrieve(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:76
virtual StatusCode retrieveObject(Base *par, CSTR item, P1D *&obj)
Definition: HistogramSvc.h:658
virtual P2D * bookProf(STRPAIR loc, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:395
P1D * createProfile1D(CSTR name, CSTR title, const Edges &x, CSTR)
Definition: HistogramSvc.h:875
virtual StatusCode initialize()
Initialise the service.
virtual H1D * book(CSTR par, CSTR rel, CSTR title, DBINS(x))
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:211
virtual StatusCode retrieveObject(IRegistry *pReg, CSTR path, H3D *&obj)
Definition: HistogramSvc.h:589
virtual StatusCode retrieveObject(CSTR full, H2D *&obj)
Definition: HistogramSvc.h:598
virtual H1D * sliceY(CSTR name, const H2D &h, int indexX)
Definition: HistogramSvc.h:773
virtual StatusCode findObject(Base *par, int item, P2D *&obj)
Definition: HistogramSvc.h:744
H3D * createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:852
virtual P2D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:410
virtual P1D * bookProf(CSTR full, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:327
virtual StatusCode findObject(Base *par, CSTR item, H3D *&obj)
Definition: HistogramSvc.h:761
virtual P2D * bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:404
Data provider interface definition.
virtual StatusCode unregisterObject(Base *obj, int item)
Definition: HistogramSvc.h:576
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
virtual StatusCode retrieveObject(Base *par, CSTR item, H3D *&obj)
Definition: HistogramSvc.h:666
virtual StatusCode registerObject(Base *pPar, int item, Base *obj)
Definition: HistogramSvc.h:565
DBaseEntries m_input
Input streams.
Definition: HistogramSvc.h:138
virtual StatusCode retrieveObject(IRegistry *pReg, CSTR path, P1D *&obj)
Definition: HistogramSvc.h:583
virtual P2D * bookProf(STRPAIR loc, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:408
StatusCode connectInput(CSTR ident)
Connect input histogram file to the service.
virtual H3D * book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:509
GaudiKernel.
Definition: Fill.h:8
Histo1DMap m_defs1D
Definition: HistogramSvc.h:966
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), double upper, double lower, CSTR)
Definition: HistogramSvc.h:906
H1D * multiply(CSTR nameAndTitle, const H1D &a, const H1D &b)
Definition: HistogramSvc.h:784
virtual StatusCode retrieveObject(DataObject *par, int item, P2D *&obj)
Definition: HistogramSvc.h:638
virtual StatusCode retrieveObject(DataObject *par, CSTR item, P1D *&obj)
Definition: HistogramSvc.h:625
virtual StatusCode findObject(Base *par, int item, H1D *&obj)
Definition: HistogramSvc.h:746
virtual StatusCode retrieveObject(CSTR parent, int item, P1D *&obj)
Definition: HistogramSvc.h:614
HistogramSvc * m_svc
Definition: HistogramSvc.h:68
virtual StatusCode finalize()
finalize the service
std::pair< DataObject *, AIDA::IProfile2D * > createProf2D(const AIDA::IProfile2D &hist)
Copy constructor.
virtual StatusCode retrieveObject(Base *par, CSTR item, P2D *&obj)
Definition: HistogramSvc.h:660
H2D * projectionXY(CSTR nameAndTitle, const H3D &h)
Definition: HistogramSvc.h:807
virtual H1D * book(CSTR par, int hID, CSTR title, DBINS(x))
Definition: HistogramSvc.h:213
virtual H1D * book(CSTR full, CSTR title, Edges e)
Definition: HistogramSvc.h:292
virtual StatusCode retrieveObject(IRegistry *pReg, CSTR path, H2D *&obj)
Definition: HistogramSvc.h:585
virtual H3D * book(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:513
virtual P2D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:406
virtual StatusCode retrieveObject(DataObject *par, int item, P1D *&obj)
Definition: HistogramSvc.h:636
virtual H1D * book(DataObject *pPar, int hID, CSTR title, Edges e)
Definition: HistogramSvc.h:286
virtual StatusCode findObject(Base *par, int item, H2D *&obj)
Definition: HistogramSvc.h:748
virtual std::ostream & print(Base *h, std::ostream &s=std::cout) const
Print (ASCII) the 1D histogram into the output stream.
virtual P2D * bookProf(DataObject *pPar, int hID, CSTR title, Edges x, Edges y, double upper, double lower)
Definition: HistogramSvc.h:481
virtual StatusCode findObject(DataObject *par, CSTR item, H1D *&obj)
Definition: HistogramSvc.h:735
tuple h2
Definition: Test.py:42
virtual StatusCode findObject(CSTR full, P2D *&obj)
Definition: HistogramSvc.h:689
std::pair< std::string, std::string > i_splitPath(CSTR full)
Split full path into its components.
virtual P1D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), CSTR opt)
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:242
virtual P1D * bookProf(STRPAIR loc, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
Definition: HistogramSvc.h:261
H3D * add(CSTR nameAndTitle, const H3D &a, const H3D &b)
Definition: HistogramSvc.h:798
#define BINS(x)
Definition: HistogramSvc.h:39
virtual StatusCode findObject(Base *par, CSTR item, H1D *&obj)
Definition: HistogramSvc.h:757
struct GAUDI_API map
Parametrisation class for map-like implementation.
H1D * createCopy(STRPAIR loc, const H1D &h)
Definition: HistogramSvc.h:830
virtual StatusCode findObject(CSTR full, P1D *&obj)
Definition: HistogramSvc.h:687
P2D * createCopy(CSTR full, const P2D &h)
Definition: HistogramSvc.h:913
virtual H2D * book(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:443
virtual P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
Definition: HistogramSvc.h:265
virtual StatusCode findObject(DataObject *par, int item, H1D *&obj)
Definition: HistogramSvc.h:724
virtual H1D * book(CSTR par, int hID, CSTR title, Edges e)
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:284
AIDA::IProfile1D P1D
Definition: HistogramSvc.h:64
H2D * sliceXY(CSTR, const H3D &, int, int) NOT_IMPLEMENTED H2D *sliceXZ(CSTR
P1D * createProfile1D(CSTR name, CSTR tit, DBINS(x), CSTR opt)
Definition: HistogramSvc.h:871
virtual StatusCode retrieveObject(Base *par, int item, H3D *&obj)
Definition: HistogramSvc.h:655
virtual StatusCode findObject(CSTR full, H1D *&obj)
Definition: HistogramSvc.h:691
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
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
virtual DataObject * createPath(CSTR newPath)
Create all directories in a given full path.
virtual P2D * bookProf(DataObject *pPar, int hID, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:468
virtual P1D * bookProf(CSTR full, CSTR title, DBINS(x), CSTR opt)
Definition: HistogramSvc.h:250
virtual StatusCode retrieveObject(DataObject *par, CSTR item, P2D *&obj)
Definition: HistogramSvc.h:627
AIDA::IBaseHistogram Base
Definition: HistogramSvc.h:66
H2D * divide(CSTR nameAndTitle, const H2D &a, const H2D &b)
Definition: HistogramSvc.h:795
H2D const H3D int NOT_IMPLEMENTED H2D * sliceYZ(CSTR, const H3D &, int, int) NOT_IMPLEMENTEDH1D *createHistogram1D(CSTR name
virtual P2D * bookProf(CSTR full, CSTR title, Edges x, Edges y)
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:462
virtual StatusCode retrieveObject(DataObject *par, CSTR item, H3D *&obj)
Definition: HistogramSvc.h:633
virtual StatusCode retrieveObject(CSTR full, P1D *&obj)
Definition: HistogramSvc.h:592
virtual StatusCode findObject(IRegistry *pReg, CSTR path, P2D *&obj)
Definition: HistogramSvc.h:678
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
H2D * createHistogram2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), CSTR)
Definition: HistogramSvc.h:837
virtual StatusCode findObject(DataObject *par, int item, P2D *&obj)
Definition: HistogramSvc.h:722
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
virtual H2D * book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:435
virtual P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges e)
Definition: HistogramSvc.h:324
virtual StatusCode findObject(Base *par, CSTR item, P2D *&obj)
Definition: HistogramSvc.h:755
P2D * createCopy(CSTR par, CSTR rel, const P2D &h)
Definition: HistogramSvc.h:915
H1D * createHistogram1D(CSTR nameAndTitle, DBINS(x))
Definition: HistogramSvc.h:824
virtual P1D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), CSTR opt)
Definition: HistogramSvc.h:246
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
virtual StatusCode retrieveObject(DataObject *par, CSTR item, H1D *&obj)
Definition: HistogramSvc.h:629
virtual StatusCode retrieveObject(CSTR parent, CSTR rel, P2D *&obj)
Definition: HistogramSvc.h:605
virtual H1D * sliceX(CSTR name, const H2D &h, int indexY)
Definition: HistogramSvc.h:771
virtual StatusCode retrieveObject(DataObject *par, int item, H3D *&obj)
Definition: HistogramSvc.h:644
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
virtual StatusCode findObject(DataObject *par, CSTR item, P2D *&obj)
Definition: HistogramSvc.h:733
virtual StatusCode retrieveObject(CSTR full, H1D *&obj)
Definition: HistogramSvc.h:596
virtual P2D * bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:466
virtual P1D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
Definition: HistogramSvc.h:259
H2D * createCopy(STRPAIR loc, const H2D &h)
Definition: HistogramSvc.h:847
virtual H3D * book(DataObject *pPar, int hID, CSTR title, Edges x, Edges y, Edges z)
Definition: HistogramSvc.h:544
virtual StatusCode registerObject(CSTR parent, CSTR rel, Base *obj)
Definition: HistogramSvc.h:557
P1D * createCopy(DataObject *pPar, CSTR rel, const P1D &h)
Definition: HistogramSvc.h:892
virtual StatusCode retrieveObject(Base *par, int item, P2D *&obj)
Definition: HistogramSvc.h:649
P2D * createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:901
virtual H3D * book(CSTR full, CSTR title, DBINS(x), DBINS(y), DBINS(z))
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:507
virtual StatusCode retrieveObject(CSTR parent, CSTR rel, H1D *&obj)
Definition: HistogramSvc.h:607
virtual DataObject * createDirectory(CSTR parentDir, CSTR subDir)
Create a sub-directory in a directory.
virtual H1D * book(DataObject *pPar, CSTR rel, CSTR title, Edges e)
Definition: HistogramSvc.h:294
virtual StatusCode registerObject(DataObject *pPar, int item, Base *obj)
Definition: HistogramSvc.h:563
H2D * createHistogram2D(CSTR name, CSTR tit, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:835
H1D * add(CSTR nameAndTitle, const H1D &a, const H1D &b)
Definition: HistogramSvc.h:780
std::vector< std::string > DBaseEntries
Definition: HistogramSvc.h:60
virtual StatusCode findObject(CSTR par, CSTR rel, P1D *&obj)
Definition: HistogramSvc.h:698
virtual StatusCode retrieveObject(CSTR parent, CSTR rel, H2D *&obj)
Definition: HistogramSvc.h:609
virtual StatusCode retrieveObject(CSTR parent, int item, H1D *&obj)
Definition: HistogramSvc.h:618
std::vector< double > Edges
Definition: HistogramSvc.h:59
P1D * createProfile1D(CSTR name, CSTR title, const Edges &x, double upper, double lower, CSTR)
Definition: HistogramSvc.h:877
H3D * createCopy(STRPAIR loc, const H3D &h)
Definition: HistogramSvc.h:864
virtual StatusCode retrieveObject(DataObject *par, int item, H1D *&obj)
Definition: HistogramSvc.h:640
virtual H2D * book(CSTR full, CSTR title, Edges x, Edges y)
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:433
virtual StatusCode findObject(DataObject *par, int item, H2D *&obj)
Definition: HistogramSvc.h:726
virtual H3D * book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:511
virtual StatusCode findObject(IRegistry *pReg, CSTR path, P1D *&obj)
Definition: HistogramSvc.h:676
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
virtual StatusCode findObject(IRegistry *pReg, CSTR path, H1D *&obj)
Definition: HistogramSvc.h:680
virtual H3D * book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, Edges z)
Definition: HistogramSvc.h:540
virtual H2D * book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:361
virtual StatusCode retrieveObject(DataObject *par, CSTR item, H2D *&obj)
Definition: HistogramSvc.h:631
virtual P1D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), CSTR opt)
Definition: HistogramSvc.h:244
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(DataObject *pPar, int hID, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:441
H2D * projectionXZ(CSTR nameAndTitle, const H3D &h)
Definition: HistogramSvc.h:809
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
H1D * createCopy(CSTR full, const H1D &h)
Definition: HistogramSvc.h:826
std::pair< DataObject *, AIDA::IHistogram3D * > createH3D(const AIDA::IHistogram3D &hist)
Copy constructor.
virtual H3D * book(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:517
virtual H1D * book(CSTR full, CSTR title, DBINS(x))
Definition: HistogramSvc.h:220
virtual P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:337
H1D * createHistogram1D(CSTR name, CSTR title, const Edges &x, CSTR)
Definition: HistogramSvc.h:822
virtual StatusCode retrieveObject(Base *par, int item, H2D *&obj)
Definition: HistogramSvc.h:653
virtual H2D * book(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:367
virtual P2D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:412
virtual H3D * book(CSTR par, int hID, CSTR title, Edges x, Edges y, Edges z)
Definition: HistogramSvc.h:542
virtual P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), CSTR opt)
Definition: HistogramSvc.h:252
P2D * createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y), double upper, double lower)
Definition: HistogramSvc.h:910
virtual P1D * bookProf(CSTR par, CSTR rel, CSTR title, Edges e, double upper, double lower)
Definition: HistogramSvc.h:329
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *))
Definition: HistogramSvc.h:125
H2D const H3D int NOT_IMPLEMENTED H2D CSTR DBINS(x))
Definition: HistogramSvc.h:818
string s
Definition: gaudirun.py:246
virtual P2D * bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:464
tuple item
print s1,s2
Definition: ana.py:146
virtual P2D * bookProf(STRPAIR loc, CSTR title, Edges x, Edges y)
Definition: HistogramSvc.h:470
#define NOT_IMPLEMENTED
Definition: HistogramSvc.h:40
virtual H3D * book(CSTR full, CSTR title, Edges x, Edges y, Edges z)
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
virtual StatusCode findObject(IRegistry *pReg, CSTR path, H2D *&obj)
Definition: HistogramSvc.h:682
virtual StatusCode findObject(CSTR par, int item, H3D *&obj)
Definition: HistogramSvc.h:717
H3D * createCopy(CSTR par, CSTR rel, const H3D &h)
Definition: HistogramSvc.h:862
virtual H3D * book(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y, Edges z)
Definition: HistogramSvc.h:548
std::pair< DataObject *, AIDA::IProfile1D * > createProf1D(const AIDA::IProfile1D &hist)
Copy constructor.
H1D * divide(CSTR nameAndTitle, const H1D &a, const H1D &b)
Definition: HistogramSvc.h:786
Helper(HistogramSvc *p)
Definition: HistogramSvc.h:69
virtual StatusCode retrieveObject(CSTR full, H3D *&obj)
Definition: HistogramSvc.h:600
virtual StatusCode findObject(Base *par, CSTR item, P1D *&obj)
Definition: HistogramSvc.h:753
H3D * subtract(CSTR nameAndTitle, const H3D &a, const H3D &b)
Definition: HistogramSvc.h:800
virtual StatusCode retrieveObject(Base *par, CSTR item, H1D *&obj)
Definition: HistogramSvc.h:662
StatusCode retrieve(A1 a1, A3 *&a3)
Definition: HistogramSvc.h:70
virtual P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:414
virtual StatusCode retrieveObject(CSTR parent, CSTR rel, H3D *&obj)
Definition: HistogramSvc.h:611
virtual StatusCode unregisterObject(Base *obj)
Definition: HistogramSvc.h:572
AIDA::IProfile2D P2D
Definition: HistogramSvc.h:65
virtual StatusCode retrieveObject(CSTR parent, int item, H2D *&obj)
Definition: HistogramSvc.h:620
AIDA::IHistogram1D H1D
Definition: HistogramSvc.h:61
virtual H2D * book(CSTR full, CSTR title, DBINS(x), DBINS(y))
Book histogram and register it with the histogram data store.
Definition: HistogramSvc.h:359
virtual H3D * book(STRPAIR loc, CSTR title, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:515
virtual P1D * bookProf(CSTR par, CSTR rel, CSTR title, Edges e)
Definition: HistogramSvc.h:316
virtual StatusCode findObject(DataObject *par, int item, H3D *&obj)
Definition: HistogramSvc.h:728
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
H3D * createHistogram3D(CSTR name, CSTR title, const Edges &x, const Edges &y, const Edges &z, CSTR)
Definition: HistogramSvc.h:856
virtual StatusCode retrieveObject(CSTR full, P2D *&obj)
Definition: HistogramSvc.h:594
virtual H3D * book(STRPAIR loc, CSTR title, Edges x, Edges y, Edges z)
Definition: HistogramSvc.h:546
virtual StatusCode retrieveObject(Base *par, CSTR item, H2D *&obj)
Definition: HistogramSvc.h:664
virtual StatusCode findObject(IRegistry *pReg, CSTR path, H3D *&obj)
Definition: HistogramSvc.h:684
virtual StatusCode findObject(CSTR full, H2D *&obj)
Definition: HistogramSvc.h:693
H3D * createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z), CSTR)
Definition: HistogramSvc.h:854
virtual H2D * book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y))
Definition: HistogramSvc.h:363
virtual StatusCode findObject(Base *par, int item, P1D *&obj)
Definition: HistogramSvc.h:742
P2D * createProfile2D(CSTR name, CSTR title, const Edges &x, const Edges &y, CSTR)
Definition: HistogramSvc.h:899
virtual StatusCode findObject(CSTR par, int item, P2D *&obj)
Definition: HistogramSvc.h:711
H3D * createHistogram3D(CSTR nameAndTitle, DBINS(x), DBINS(y), DBINS(z))
Definition: HistogramSvc.h:858
virtual StatusCode retrieveObject(Base *par, int item, P1D *&obj)
Definition: HistogramSvc.h:647
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
H2D * createCopy(CSTR full, const H2D &h)
Definition: HistogramSvc.h:843
virtual StatusCode findObject(CSTR par, CSTR rel, H1D *&obj)
Definition: HistogramSvc.h:702
virtual StatusCode registerObject(CSTR parent, int item, Base *obj)
Definition: HistogramSvc.h:559
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), CSTR)
Definition: HistogramSvc.h:897
virtual StatusCode findObject(CSTR par, CSTR rel, H3D *&obj)
Definition: HistogramSvc.h:706
P1D * createProfile1D(CSTR name, CSTR tit, DBINS(x), double upper, double lower, CSTR opt)
Definition: HistogramSvc.h:873
H3D * multiply(CSTR nameAndTitle, const H3D &a, const H3D &b)
Definition: HistogramSvc.h:802
virtual StatusCode unregisterObject(Base *obj, CSTR objectPath)
Definition: HistogramSvc.h:574
virtual P1D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
Definition: HistogramSvc.h:257
P1D * createProfile1D(CSTR nametit, DBINS(x))
Definition: HistogramSvc.h:880
virtual StatusCode reinitialize()
Initialise the service.
virtual StatusCode findObject(DataObject *par, CSTR item, H2D *&obj)
Definition: HistogramSvc.h:737
std::map< std::string, Gaudi::Histo1DDef > Histo1DMap
Definition: HistogramSvc.h:961
virtual StatusCode retrieveObject(IRegistry *pReg, CSTR path, P2D *&obj)
Definition: HistogramSvc.h:587
P2D * createCopy(STRPAIR loc, const P2D &h)
Definition: HistogramSvc.h:917
virtual StatusCode findObject(CSTR par, CSTR rel, P2D *&obj)
Definition: HistogramSvc.h:700
H1D * createHistogram1D(CSTR name, CSTR tit, DBINS(x), CSTR)
Definition: HistogramSvc.h:820
H3D * createCopy(CSTR full, const H3D &h)
Definition: HistogramSvc.h:860
H2D * projectionYZ(CSTR nameAndTitle, const H3D &h)
Definition: HistogramSvc.h:811
H2D * createHistogram2D(CSTR name, CSTR title, const Edges &x, const Edges &y, CSTR)
Definition: HistogramSvc.h:839
virtual H1D * projectionX(CSTR name, const H2D &h)
Definition: HistogramSvc.h:767
virtual P1D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
Definition: HistogramSvc.h:255
H3D * divide(CSTR nameAndTitle, const H3D &a, const H3D &b)
Definition: HistogramSvc.h:804
virtual StatusCode findObject(CSTR par, CSTR rel, H2D *&obj)
Definition: HistogramSvc.h:704
virtual StatusCode findObject(CSTR par, int item, H2D *&obj)
Definition: HistogramSvc.h:715
StatusCode find(A1 a1, A2 a2, A3 *&a3)
Definition: HistogramSvc.h:88
HistogramSvc class definition.
Definition: HistogramSvc.h:47