2 #ifndef GAUDISVC_HISTOGRAMSVC_H
3 #define GAUDISVC_HISTOGRAMSVC_H 1
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"
20 #include "AIDA/IHistogramFactory.h"
21 #include "AIDA/IAnnotation.h"
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; }
48 virtual public AIDA::IHistogramFactory
52 typedef const std::pair<std::string,std::string>&
STRPAIR;
58 typedef const std::string&
CSTR;
59 typedef std::vector<double>
Edges;
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;
72 StatusCode sc = m_svc->DataSvc::retrieveObject(a1,pObject);
73 a3 =
dynamic_cast<A3*
>(pObject);
78 StatusCode sc = m_svc->DataSvc::retrieveObject(a1,a2,pObject);
79 a3 =
dynamic_cast<A3*
>(pObject);
85 a3 =
dynamic_cast<A3*
>(pObject);
90 StatusCode sc = m_svc->DataSvc::findObject(a1,a2,pObject);
91 a3 =
dynamic_cast<A3*
>(pObject);
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);
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);
109 (h1->*pmf)(h2,scale);
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);
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);
155 std::pair<std::string,std::string>
i_splitPath(CSTR full);
162 template <
class T>
inline
173 throw std::runtime_error(
"HistogramSvc: Unexpected object type.");
178 H2D*
i_project(CSTR nameAndTitle,
const H3D&
h, CSTR dir);
213 H1D*
book(CSTR par,
int hID, CSTR title,
DBINS(x))
override
219 {
return book(loc.first, loc.second, title,
BINS(x)); }
249 {
return bookProf(loc.first, loc.second, title,
BINS(x),opt); }
255 P1D*
bookProf(CSTR par, CSTR rel, CSTR title,
DBINS(x),
double upper,
double lower,CSTR
opt)
override
257 P1D*
bookProf(CSTR par,
int hID, CSTR title,
DBINS(x),
double upper,
double lower, CSTR
opt)
override
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
284 H1D*
book(CSTR par,
int hID, CSTR title, Edges e)
override
288 H1D*
book(CSTR par, CSTR rel, CSTR title, Edges e )
override
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
314 P1D*
bookProf(CSTR full, CSTR title, Edges e )
override
316 P1D*
bookProf(CSTR par, CSTR rel, CSTR title, Edges e )
override
318 P1D*
bookProf(CSTR par,
int hID, CSTR title, Edges e )
override
322 virtual P1D*
bookProf(STRPAIR loc,CSTR title, Edges e)
323 {
return bookProf(loc.first, loc.second, title, e); }
327 virtual P1D*
bookProf(CSTR full, CSTR title, Edges e,
double upper,
double lower)
329 virtual P1D*
bookProf(CSTR par, CSTR rel, CSTR title, Edges e,
double upper,
double lower)
331 virtual P1D*
bookProf(CSTR par,
int hID, CSTR title, Edges e,
double upper,
double 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); }
366 {
return book(loc.first, loc.second, title,
BINS(x),
BINS(y)); }
393 virtual P2D*
bookProf(CSTR par, CSTR rel, CSTR title,
DBINS(x),
DBINS(y),
double upper,
double lower)
396 {
return bookProf(loc.first, loc.second, title,
BINS(x),
BINS(y), upper, lower); }
433 H2D*
book(CSTR full, CSTR title, Edges x, Edges y )
override
435 H2D*
book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y )
override
437 H2D*
book(CSTR par,
int hID, CSTR title, Edges x, Edges y )
override
439 virtual H2D*
book(STRPAIR loc,CSTR title, Edges x, Edges y )
440 {
return book(loc.first, loc.second, title, x, y); }
462 P2D*
bookProf(CSTR full, CSTR title, Edges x, Edges y )
override
464 P2D*
bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y )
override
466 P2D*
bookProf(CSTR par,
int hID, CSTR title, Edges x, Edges y )
override
470 virtual P2D*
bookProf(STRPAIR loc,CSTR title, Edges x, Edges y )
471 {
return bookProf(loc.first, loc.second, title, x, y); }
475 virtual P2D*
bookProf(CSTR full, CSTR title, Edges x, Edges y,
double upper,
double lower )
477 virtual P2D*
bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y,
double upper,
double lower )
479 virtual P2D*
bookProf(CSTR par,
int hID, CSTR title, Edges x, Edges y,
double upper,
double lower )
481 virtual P2D*
bookProf(
DataObject* pPar,
int hID, CSTR title, Edges x, Edges y,
double upper,
double 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 )
538 H3D*
book(CSTR full, CSTR title, Edges x, Edges y, Edges z)
override
540 H3D*
book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, Edges z)
override
542 H3D*
book(CSTR par,
int hID, CSTR title, Edges x, Edges y, Edges z)
override
544 H3D*
book(
DataObject* pPar,
int hID, CSTR title, Edges x, Edges y, Edges z)
override
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
582 {
return Helper(
this).retrieve(pReg,path,obj); }
584 {
return Helper(
this).retrieve(pReg,path,obj); }
586 {
return Helper(
this).retrieve(pReg,path,obj); }
588 {
return Helper(
this).retrieve(pReg,path,obj); }
590 {
return Helper(
this).retrieve(pReg,path,obj); }
593 {
return Helper(
this).retrieve(full,obj); }
595 {
return Helper(
this).retrieve(full,obj); }
597 {
return Helper(
this).retrieve(full,obj); }
599 {
return Helper(
this).retrieve(full,obj); }
601 {
return Helper(
this).retrieve(full,obj); }
604 {
return Helper(
this).retrieve(parent,rel,obj); }
606 {
return Helper(
this).retrieve(parent,rel,obj); }
608 {
return Helper(
this).retrieve(parent,rel,obj); }
610 {
return Helper(
this).retrieve(parent,rel,obj); }
612 {
return Helper(
this).retrieve(parent,rel,obj); }
615 {
return Helper(
this).retrieve(parent,item,obj); }
617 {
return Helper(
this).retrieve(parent,item,obj); }
619 {
return Helper(
this).retrieve(parent,item,obj); }
621 {
return Helper(
this).retrieve(parent,item,obj); }
623 {
return Helper(
this).retrieve(parent,item,obj); }
626 {
return Helper(
this).retrieve(par,item,obj); }
628 {
return Helper(
this).retrieve(par,item,obj); }
630 {
return Helper(
this).retrieve(par,item,obj); }
632 {
return Helper(
this).retrieve(par,item,obj); }
634 {
return Helper(
this).retrieve(par,item,obj); }
637 {
return Helper(
this).retrieve(par,item,obj); }
639 {
return Helper(
this).retrieve(par,item,obj); }
641 {
return Helper(
this).retrieve(par,item,obj); }
643 {
return Helper(
this).retrieve(par,item,obj); }
645 {
return Helper(
this).retrieve(par,item,obj); }
677 {
return Helper(
this).find(pReg,path,obj); }
679 {
return Helper(
this).find(pReg,path,obj); }
681 {
return Helper(
this).find(pReg,path,obj); }
683 {
return Helper(
this).find(pReg,path,obj); }
685 {
return Helper(
this).find(pReg,path,obj); }
688 {
return Helper(
this).find(full,obj); }
690 {
return Helper(
this).find(full,obj); }
692 {
return Helper(
this).find(full,obj); }
694 {
return Helper(
this).find(full,obj); }
696 {
return Helper(
this).find(full,obj); }
699 {
return Helper(
this).find(par,rel,obj); }
701 {
return Helper(
this).find(par,rel,obj); }
703 {
return Helper(
this).find(par,rel,obj); }
705 {
return Helper(
this).find(par,rel,obj); }
707 {
return Helper(
this).find(par,rel,obj); }
710 {
return Helper(
this).find(par,item,obj); }
712 {
return Helper(
this).find(par,item,obj); }
714 {
return Helper(
this).find(par,item,obj); }
716 {
return Helper(
this).find(par,item,obj); }
718 {
return Helper(
this).find(par,item,obj); }
721 {
return Helper(
this).find(par,item,obj); }
723 {
return Helper(
this).find(par,item,obj); }
725 {
return Helper(
this).find(par,item,obj); }
727 {
return Helper(
this).find(par,item,obj); }
729 {
return Helper(
this).find(par,item,obj); }
732 {
return Helper(
this).find(par,item,obj); }
734 {
return Helper(
this).find(par,item,obj); }
736 {
return Helper(
this).find(par,item,obj); }
738 {
return Helper(
this).find(par,item,obj); }
740 {
return Helper(
this).find(par,item,obj); }
768 {
return sliceX( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
770 {
return sliceY( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
772 {
return sliceX( name, h, indexY, indexY ); }
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;
778 bool destroy( IBaseHistogram* hist)
override;
780 H1D*
add(CSTR nameAndTitle,
const H1D& a,
const H1D& b)
override
782 H1D*
subtract(CSTR nameAndTitle,
const H1D& a,
const H1D& b)
override
784 H1D*
multiply(CSTR nameAndTitle,
const H1D& a,
const H1D& b)
override
786 H1D*
divide(CSTR nameAndTitle,
const H1D& a,
const H1D& b)
override
789 H2D*
add(CSTR nameAndTitle,
const H2D& a,
const H2D& b)
override
791 H2D*
subtract(CSTR nameAndTitle,
const H2D& a,
const H2D& b)
override
793 H2D*
multiply(CSTR nameAndTitle,
const H2D& a,
const H2D& b)
override
795 H2D*
divide(CSTR nameAndTitle,
const H2D& a,
const H2D& b)
override
798 H3D*
add(CSTR nameAndTitle,
const H3D& a,
const H3D& b)
override
800 H3D*
subtract(CSTR nameAndTitle,
const H3D& a,
const H3D& b)
override
802 H3D*
multiply(CSTR nameAndTitle,
const H3D& a,
const H3D& b)
override
804 H3D*
divide(CSTR nameAndTitle,
const H3D& a,
const H3D& b)
override
808 {
return i_project(nameAndTitle,h,
"xy"); }
810 {
return i_project(nameAndTitle,h,
"xz"); }
812 {
return i_project(nameAndTitle,h,
"yz"); }
819 {
return book( name, tit,
BINS(x)); }
821 {
return book( name, tit,
BINS(x)); }
823 {
return book(name, title, x); }
825 {
return book(nameAndTitle, nameAndTitle,
BINS(x)); }
831 {
return createCopy(loc.first, loc.second, h); }
840 {
return book(name, title, x, y); }
842 {
return book(nameAndTitle, nameAndTitle,
BINS(x),
BINS(y)); }
848 {
return createCopy(loc.first, loc.second, h); }
856 H3D*
createHistogram3D(CSTR name, CSTR title,
const Edges& x,
const Edges& y,
const Edges& z,CSTR )
override
857 {
return book(name, title, x, y, z); }
865 {
return createCopy(loc.first, loc.second, h); }
874 {
return bookProf( name, tit,
BINS(x), upper, lower , opt ); }
876 {
return bookProf(name, title, x ); }
877 P1D*
createProfile1D(CSTR name,CSTR title,
const Edges& x,
double upper,
double lower, CSTR )
override
878 {
return bookProf(name, title, x, upper, lower ); }
883 {
return bookProf( nametit, nametit,
BINS(x), upper, lower ,
"s"); }
891 {
return createCopy(loc.first, loc.second, h); }
899 P2D*
createProfile2D(CSTR name,CSTR title,
const Edges& x,
const Edges& y, CSTR )
override
900 {
return bookProf(name, title, x, y); }
908 P2D*
createProfile2D(CSTR name,CSTR title,
const Edges& x,
const Edges& y,
double upper,
double lower, CSTR )
override
909 {
return bookProf(name, title, x, y, upper, lower); }
911 {
return bookProf(nameAndTitle, nameAndTitle,
BINS(x),
BINS(y), upper, lower);}
918 {
return createCopy(loc.first, loc.second, h); }
922 AIDA::ICloud1D* createCloud1D(CSTR, CSTR,
int, CSTR) override
NOT_IMPLEMENTED
942 std::ostream&
write(Base* h,
std::ostream&
s =
std::cout) const override;
945 int write(Base* h, const
char* file_name ) const override;
975 #endif // GAUDISVC_HISTOGRAMSVC_H
StatusCode unregisterObject(const std::string &fullPath) override
Unregister object from the data store.
StatusCode findObject(DataObject *par, int item, H1D *&obj) override
H2D * book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y) override
P2D * createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y)) override
virtual P2D * bookProf(STRPAIR loc, CSTR title, Edges x, Edges y, double upper, double lower)
H1D * createCopy(CSTR par, CSTR rel, const H1D &h)
H1D * book(DataObject *pPar, int hID, CSTR title, Edges e) override
P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
H3D * book(DataObject *pPar, int hID, CSTR title, Edges x, Edges y, Edges z) override
P1D * bookProf(CSTR full, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
StatusCode retrieveObject(IRegistry *pReg, CSTR path, H1D *&obj) override
StatusCode retrieveObject(IRegistry *pReg, CSTR path, H2D *&obj) override
StatusCode findObject(CSTR par, int item, H2D *&obj) override
virtual P2D * bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y, double upper, double lower)
StatusCode findObject(IRegistry *pReg, CSTR path, H2D *&obj) override
StatusCode findObject(CSTR par, CSTR rel, H2D *&obj) override
virtual H1D * book(STRPAIR loc, CSTR title, Edges e)
StatusCode retrieveObject(Base *par, int item, H1D *&obj) override
P1D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
Definition of the MsgStream class used to transmit messages.
P1D * createCopy(CSTR full, const P1D &h) override
StatusCode retrieveObject(Base *par, int item, P2D *&obj) override
H2D * createCopy(DataObject *pPar, CSTR rel, const H2D &h)
string to_string(const T &value)
P2D * bookProf(DataObject *pPar, int hID, CSTR title, Edges x, Edges y) override
H1D * createCopy(DataObject *pPar, CSTR rel, const H1D &h)
virtual P2D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
StatusCode retrieveObject(CSTR parent, int item, P2D *&obj) override
H2D const H3D int override NOT_IMPLEMENTED H2D CSTR DBINS(x))
Define general base for Gaudi exception.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
std::set< std::string > m_mods1D
H2D * book(CSTR full, CSTR title, Edges x, Edges y) override
Book histogram and register it with the histogram data store.
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
virtual P1D * bookProf(STRPAIR loc, CSTR title, Edges e, double upper, double lower)
StatusCode retrieveObject(DataObject *par, int item, P1D *&obj) override
H1D * book(CSTR par, CSTR rel, CSTR title, DBINS(x)) override
Book histogram and register it with the histogram data store.
H1D * projectionX(CSTR name, const H2D &h) override
H2D * sliceXY(CSTR, const H3D &, int, int) override NOT_IMPLEMENTED H2D *sliceXZ(CSTR
StatusCode retrieveObject(CSTR parent, CSTR rel, P2D *&obj) override
H3D * book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
virtual H2D * book(STRPAIR loc, CSTR title, DBINS(x), DBINS(y))
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), double upper, double lower)
StatusCode findObject(CSTR par, int item, P2D *&obj) override
H3D * multiply(CSTR nameAndTitle, const H3D &a, const H3D &b) override
H3D * add(CSTR nameAndTitle, const H3D &a, const H3D &b) override
StatusCode retrieveObject(DataObject *par, CSTR item, P2D *&obj) override
virtual P2D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
StatusCode unregisterObject(Base *obj, CSTR objectPath) override
P2D * createProfile2D(CSTR name, CSTR title, const Edges &x, const Edges &y, CSTR) override
StatusCode findObject(CSTR par, CSTR rel, P2D *&obj) override
H2D * book(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y)) override
StatusCode retrieveObject(CSTR full, P1D *&obj) override
std::pair< DataObject *, AIDA::IHistogram1D * > createH1D(const AIDA::IHistogram1D &hist)
Copy constructor.
P1D * bookProf(DataObject *pPar, int hID, CSTR title, Edges e) override
H1D * divide(CSTR nameAndTitle, const H1D &a, const H1D &b) override
H2D * createHistogram2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), CSTR) override
P1D * bookProf(CSTR par, CSTR rel, CSTR title, Edges e) override
P1D * createCopy(STRPAIR loc, const P1D &h)
bool isSuccess() const
Test for a status code of SUCCESS.
P1D * createProfile1D(CSTR name, CSTR title, const Edges &x, CSTR) override
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
StatusCode findObject(IRegistry *pReg, CSTR path, P1D *&obj) override
StatusCode findObject(DataObject *par, CSTR item, H1D *&obj) override
P2D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), DBINS(y)) override
H1D * book(CSTR par, CSTR rel, CSTR title, Edges e) override
P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y) override
StatusCode retrieveObject(CSTR parent, int item, P1D *&obj) override
const std::pair< std::string, std::string > & STRPAIR
H1D * createHistogram1D(CSTR nameAndTitle, DBINS(x)) override
virtual H1D * book(STRPAIR loc, CSTR title, DBINS(x))
virtual P2D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower)
StatusCode findObject(Base *par, CSTR item, P1D *&obj) override
H3D * createHistogram3D(CSTR name, CSTR title, const Edges &x, const Edges &y, const Edges &z, CSTR) override
H2D * book(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y) override
~HistogramSvc() override
Destructor.
virtual P2D * bookProf(CSTR full, CSTR title, Edges x, Edges y, double upper, double lower)
virtual P1D * bookProf(CSTR par, int hID, CSTR title, Edges e, double upper, double lower)
T * i_book(DataObject *pPar, CSTR rel, CSTR title, const std::pair< DataObject *, T * > &o)
StatusCode retrieveObject(IRegistry *pReg, CSTR path, P1D *&obj) override
StatusCode findObject(CSTR full, P1D *&obj) override
void not_implemented() const
StatusCode find(A1 a1, A3 *&a3)
P1D * bookProf(CSTR full, CSTR title, DBINS(x), CSTR opt) override
H1D * book(CSTR par, int hID, CSTR title, DBINS(x)) override
StatusCode findObject(Base *par, CSTR item, H3D *&obj) override
H1D * book(DataObject *pPar, CSTR rel, CSTR title, Edges e) override
StatusCode retrieve(A1 a1, A2 a2, A3 *&a3)
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
P1D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), CSTR opt) override
StatusCode findObject(CSTR full, H2D *&obj) override
virtual P2D * bookProf(STRPAIR loc, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
H2D * multiply(CSTR nameAndTitle, const H2D &a, const H2D &b) override
H3D * createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z))
StatusCode retrieveObject(CSTR parent, int item, H1D *&obj) override
virtual P1D * bookProf(CSTR full, CSTR title, Edges e, double upper, double lower)
Data provider interface definition.
virtual P1D * bookProf(DataObject *pPar, int hID, CSTR title, Edges e, double upper, double lower)
H2D * i_project(CSTR nameAndTitle, const H3D &h, CSTR dir)
Helper for 2D projections.
virtual P1D * bookProf(STRPAIR loc, CSTR title, Edges e)
H2D * createCopy(CSTR par, CSTR rel, const H2D &h)
H3D * book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
DBaseEntries m_input
Input streams.
P1D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), CSTR opt) override
Book histogram and register it with the histogram data store.
virtual P2D * bookProf(STRPAIR loc, CSTR title, DBINS(x), DBINS(y))
StatusCode initialize() override
Initialise the service.
StatusCode connectInput(CSTR ident)
Connect input histogram file to the service.
H2D * book(CSTR par, int hID, CSTR title, Edges x, Edges y) override
StatusCode retrieveObject(Base *par, int item, H2D *&obj) override
StatusCode retrieveObject(DataObject *par, int item, H3D *&obj) override
StatusCode findObject(CSTR full, H3D *&obj) override
H3D * book(CSTR full, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
Book histogram and register it with the histogram data store.
H1D * add(CSTR nameAndTitle, const H1D &a, const H1D &b) override
StatusCode retrieveObject(Base *par, CSTR item, P1D *&obj) override
StatusCode retrieveObject(CSTR full, H3D *&obj) override
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
H1D * createHistogram1D(CSTR name, CSTR tit, DBINS(x), CSTR) override
P1D * createProfile1D(CSTR nametit, DBINS(x)) override
StatusCode finalize() override
finalize the service
StatusCode findObject(DataObject *par, int item, P2D *&obj) override
H2D * createHistogram2D(CSTR nameAndTitle, DBINS(x), DBINS(y)) override
StatusCode retrieveObject(Base *par, int item, H3D *&obj) override
StatusCode findObject(CSTR par, int item, H1D *&obj) override
StatusCode retrieveObject(DataObject *par, CSTR item, H1D *&obj) override
H1D * subtract(CSTR nameAndTitle, const H1D &a, const H1D &b) override
StatusCode retrieveObject(CSTR full, P2D *&obj) override
StatusCode retrieveObject(Base *par, CSTR item, H2D *&obj) override
virtual P2D * bookProf(DataObject *pPar, int hID, CSTR title, Edges x, Edges y, double upper, double lower)
H2D * projectionXZ(CSTR nameAndTitle, const H3D &h) override
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
StatusCode retrieveObject(Base *par, int item, P1D *&obj) override
virtual P1D * bookProf(STRPAIR loc, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
H2D * book(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
H3D * createHistogram3D(CSTR nameAndTitle, DBINS(x), DBINS(y), DBINS(z)) override
struct GAUDI_API map
Parametrisation class for map-like implementation.
P1D * createProfile1D(CSTR nametit, DBINS(x), double upper, double lower) override
StatusCode findObject(CSTR full, P2D *&obj) override
DataObject * createPath(CSTR newPath) override
Create all directories in a given full path.
H1D * createCopy(STRPAIR loc, const H1D &h)
StatusCode findObject(Base *par, int item, P2D *&obj) override
StatusCode findObject(Base *par, int item, H2D *&obj) override
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), double upper, double lower, CSTR) override
bool destroy(IBaseHistogram *hist) override
H2D * subtract(CSTR nameAndTitle, const H2D &a, const H2D &b) override
StatusCode retrieveObject(DataObject *par, int item, P2D *&obj) override
StatusCode retrieveObject(DataObject *par, int item, H1D *&obj) override
This class is used for returning status codes from appropriate routines.
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *))
P2D * createCopy(DataObject *pPar, CSTR rel, const P2D &h)
P2D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y)) override
H1D * sliceY(CSTR name, const H2D &h, int indexX) override
virtual P2D * bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower)
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y))
StatusCode findObject(DataObject *par, int item, H2D *&obj) override
StatusCode findObject(Base *par, CSTR item, H1D *&obj) override
AIDA::IBaseHistogram Base
P1D * createProfile1D(CSTR name, CSTR title, const Edges &x, double upper, double lower, CSTR) override
H1D * book(CSTR full, CSTR title, DBINS(x)) override
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)
P1D * createCopy(CSTR par, CSTR rel, const P1D &h)
The IRegistry represents the entry door to the environment any data object residing in a transient da...
static DataObject * __cast(T *p)
P2D * createCopy(CSTR par, CSTR rel, const P2D &h)
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
StatusCode findObject(Base *par, CSTR item, H2D *&obj) override
StatusCode findObject(DataObject *par, CSTR item, H3D *&obj) override
string opt
print 'Summary: %32s [s] d d steps'%(summary.protocol,summary.type,summary.nevt,len(summary.data),)
StatusCode findObject(IRegistry *pReg, CSTR path, P2D *&obj) override
H3D * subtract(CSTR nameAndTitle, const H3D &a, const H3D &b) override
StatusCode findObject(Base *par, int item, H1D *&obj) override
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.
H2D * projectionYZ(CSTR nameAndTitle, const H3D &h) override
P2D * createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y), double upper, double lower) override
StatusCode findObject(CSTR par, CSTR rel, H3D *&obj) override
StatusCode findObject(IRegistry *pReg, CSTR path, H1D *&obj) override
H2D * book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y)) override
StatusCode registerObject(CSTR parent, CSTR rel, Base *obj) override
StatusCode findObject(CSTR full, H1D *&obj) override
StatusCode retrieveObject(CSTR parent, CSTR rel, H2D *&obj) override
H3D * createCopy(CSTR full, const H3D &h) override
P1D * bookProf(CSTR full, CSTR title, Edges e) override
Book histogram and register it with the histogram data store.
H2D * createCopy(STRPAIR loc, const H2D &h)
P2D * bookProf(CSTR full, CSTR title, Edges x, Edges y) override
Book histogram and register it with the histogram data store.
P1D * createCopy(DataObject *pPar, CSTR rel, const P1D &h)
H3D * createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z), CSTR) override
H2D const H3D int override NOT_IMPLEMENTED H2D CSTR tit
StatusCode retrieveObject(CSTR parent, int item, H3D *&obj) override
StatusCode retrieveObject(CSTR full, H1D *&obj) override
StatusCode findObject(CSTR par, CSTR rel, P1D *&obj) override
H1D * book(DataObject *pPar, int hID, CSTR title, DBINS(x)) override
StatusCode findObject(DataObject *par, int item, H3D *&obj) override
H2D * createHistogram2D(CSTR name, CSTR tit, DBINS(x), DBINS(y))
std::vector< std::string > DBaseEntries
P2D * bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y)) override
StatusCode registerObject(Base *pPar, int item, Base *obj) override
StatusCode retrieveObject(DataObject *par, CSTR item, P1D *&obj) override
std::vector< double > Edges
H3D * createCopy(STRPAIR loc, const H3D &h)
H3D * book(DataObject *pPar, CSTR rel, CSTR title, Edges x, Edges y, Edges z) override
StatusCode retrieveObject(CSTR full, H2D *&obj) override
P2D * bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y) override
StatusCode registerObject(Base *pPar, CSTR rel, Base *obj) override
H3D * createCopy(DataObject *pPar, CSTR rel, const H3D &h)
Property base class allowing Property* collections to be "homogeneous".
P2D * createProfile2D(CSTR name, CSTR title, const Edges &x, const Edges &y, double upper, double lower, CSTR) override
StatusCode findObject(CSTR par, int item, H3D *&obj) override
StatusCode retrieveObject(Base *par, CSTR item, P2D *&obj) override
StatusCode unregisterObject(Base *obj, int item) override
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *, Double_t), Double_t scale)
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)
virtual H2D * book(STRPAIR loc, CSTR title, Edges x, Edges y)
Base class used to extend a class implementing other interfaces.
std::pair< DataObject *, AIDA::IHistogram3D * > createH3D(const AIDA::IHistogram3D &hist)
Copy constructor.
AIDA::IHistogramFactory * histogramFactory() override
Retrieve the AIDA HistogramFactory interface.
H2D * createCopy(CSTR full, const H2D &h) override
virtual P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges e, double upper, double lower)
P1D * bookProf(DataObject *pPar, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
StatusCode registerObject(CSTR parent, int item, Base *obj) override
StatusCode findObject(CSTR par, int item, P1D *&obj) override
virtual P1D * bookProf(CSTR par, CSTR rel, CSTR title, Edges e, double upper, double lower)
StatusCode retrieveObject(CSTR parent, CSTR rel, H3D *&obj) override
H1D * projectionY(CSTR name, const H2D &h) override
H1D * book(CSTR full, CSTR title, Edges e) override
H3D * book(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z)) override
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *))
StatusCode findObject(Base *par, CSTR item, P2D *&obj) override
StatusCode retrieveObject(Base *par, CSTR item, H1D *&obj) override
H1D * sliceX(CSTR name, const H2D &h, int indexY) override
StatusCode findObject(DataObject *par, int item, P1D *&obj) override
StatusCode retrieveObject(CSTR parent, CSTR rel, H1D *&obj) override
P2D * bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y) override
H3D * book(CSTR par, int hID, CSTR title, Edges x, Edges y, Edges z) override
StatusCode retrieveObject(DataObject *par, CSTR item, H3D *&obj) override
virtual P2D * bookProf(STRPAIR loc, CSTR title, Edges x, Edges y)
H1D * createCopy(CSTR full, const H1D &h) override
P1D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt) override
P2D * createCopy(CSTR full, const P2D &h) override
H1D * createHistogram1D(CSTR name, CSTR title, const Edges &x, CSTR) override
H3D * book(CSTR full, CSTR title, Edges x, Edges y, Edges z) override
Book histogram and register it with the histogram data store.
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *, Double_t), Double_t scale)
P2D * bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
StatusCode retrieveObject(IRegistry *pReg, CSTR path, P2D *&obj) override
StatusCode retrieveObject(DataObject *par, int item, H2D *&obj) override
H2D * projectionXY(CSTR nameAndTitle, const H3D &h) override
H3D * createCopy(CSTR par, CSTR rel, const H3D &h)
std::pair< DataObject *, AIDA::IProfile1D * > createProf1D(const AIDA::IProfile1D &hist)
Copy constructor.
StatusCode retrieveObject(CSTR parent, int item, H2D *&obj) override
H2D * book(DataObject *pPar, int hID, CSTR title, Edges x, Edges y) override
P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, DBINS(x), CSTR opt) override
H3D * divide(CSTR nameAndTitle, const H3D &a, const H3D &b) override
P1D * createProfile1D(CSTR name, CSTR tit, DBINS(x), double upper, double lower, CSTR opt) override
StatusCode retrieveObject(DataObject *par, CSTR item, H2D *&obj) override
StatusCode findObject(DataObject *par, CSTR item, P2D *&obj) override
P1D * bookProf(DataObject *pPar, CSTR rel, CSTR title, Edges e) override
StatusCode retrieveObject(CSTR parent, CSTR rel, P1D *&obj) override
H2D * divide(CSTR nameAndTitle, const H2D &a, const H2D &b) override
StatusCode findObject(Base *par, int item, P1D *&obj) override
DataObject * createDirectory(CSTR parentDir, CSTR subDir) override
Create a sub-directory in a directory.
StatusCode retrieve(A1 a1, A3 *&a3)
StatusCode findObject(DataObject *par, CSTR item, H2D *&obj) override
H2D * book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y)) override
StatusCode reinitialize() override
Initialise the service.
StatusCode retrieveObject(Base *par, CSTR item, H3D *&obj) override
virtual H3D * book(STRPAIR loc, CSTR title, DBINS(x), DBINS(y), DBINS(z))
H1D * multiply(CSTR nameAndTitle, const H1D &a, const H1D &b) override
A DataObject is the base class of any identifiable object on any data store.
P1D * createProfile1D(CSTR name, CSTR tit, DBINS(x), CSTR opt) override
virtual H3D * book(STRPAIR loc, CSTR title, Edges x, Edges y, Edges z)
H1D * book(CSTR par, int hID, CSTR title, Edges e) override
Book histogram and register it with the histogram data store.
P2D * createProfile2D(CSTR name, CSTR tit, DBINS(x), DBINS(y), CSTR) override
StatusCode registerObject(DataObject *pPar, int item, Base *obj) override
StatusCode findObject(DataObject *par, CSTR item, P1D *&obj) override
H2D * book(CSTR full, CSTR title, DBINS(x), DBINS(y)) override
Book histogram and register it with the histogram data store.
Helper functions to set/get the application return code.
virtual P1D * bookProf(STRPAIR loc, CSTR title, DBINS(x), CSTR opt)
H3D * book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, Edges z) override
P1D * bookProf(CSTR par, int hID, CSTR title, Edges e) override
StatusCode findObject(IRegistry *pReg, CSTR path, H3D *&obj) override
std::map< std::string, Gaudi::Histo1DDef > Histo1DMap
P2D * createCopy(STRPAIR loc, const P2D &h)
StatusCode findObject(Base *par, int item, H3D *&obj) override
H2D * createHistogram2D(CSTR name, CSTR title, const Edges &x, const Edges &y, CSTR) override
P1D * bookProf(CSTR par, int hID, CSTR title, DBINS(x), CSTR opt) override
StatusCode find(A1 a1, A2 a2, A3 *&a3)
StatusCode retrieveObject(IRegistry *pReg, CSTR path, H3D *&obj) override
HistogramSvc class definition.