3 #ifndef GAUDISVC_HISTOGRAMSVC_H
4 #define GAUDISVC_HISTOGRAMSVC_H 1
21 #include "AIDA/IHistogramFactory.h"
22 #include "AIDA/IAnnotation.h"
40 #define DBINS(x) int n##x, double low##x, double up##x
41 #define BINS(x) n##x, low##x, up##x
42 #define NOT_IMPLEMENTED { not_implemented(); return 0; }
50 virtual public AIDA::IHistogramFactory
65 typedef AIDA::IHistogram1D
H1D;
66 typedef AIDA::IHistogram2D
H2D;
67 typedef AIDA::IHistogram3D
H3D;
68 typedef AIDA::IProfile1D
P1D;
69 typedef AIDA::IProfile2D
P2D;
70 typedef AIDA::IBaseHistogram
Base;
77 a3 =
dynamic_cast<A3*
>(pObject);
83 a3 =
dynamic_cast<A3*
>(pObject);
89 a3 =
dynamic_cast<A3*
>(pObject);
92 template <
class A1,
class A2,
class A3>
StatusCode find(A1 a1, A2 a2, A3*& a3) {
95 a3 =
dynamic_cast<A3*
>(pObject);
98 template <
class R,
class S,
class T1,
class T2>
99 static R*
act(R* res,
const S& b,
void (T1::*pmf)(
const T2*,Double_t), Double_t scale) {
100 T1 *
h1 = Gaudi::getRepresentation<R,T1>(*res);
101 T1 *
h2 = Gaudi::getRepresentation<R,T1>(b);
103 (h1->*pmf)(h2,scale);
108 template <
class R,
class S,
class T1,
class T2>
109 static R*
act(R* res,
const S& b, Bool_t (T1::*pmf)(
const T2*,Double_t), Double_t scale) {
110 T1 *
h1 = Gaudi::getRepresentation<R,T1>(*res);
111 T1 *
h2 = Gaudi::getRepresentation<R,T1>(b);
113 (h1->*pmf)(h2,scale);
118 template <
class R,
class S,
class T1,
class T2>
119 static R*
act(R* res,
const S& b,
void (T1::*pmf)(
const T2*)) {
120 T1 *
h1 = Gaudi::getRepresentation<R,T1>(*res);
121 T1 *
h2 = Gaudi::getRepresentation<R,T1>(b);
128 template <
class R,
class S,
class T1,
class T2>
129 static R*
act(R* res,
const S& b, Bool_t (T1::*pmf)(
const T2*)) {
130 T1 *
h1 = Gaudi::getRepresentation<R,T1>(*res);
131 T1 *
h2 = Gaudi::getRepresentation<R,T1>(b);
167 template <
class T>
inline
177 if ( 0 == q && 0 != p ) {
290 {
return book(par,
_STR(hID), title, e); }
292 {
return book(pPar,
_STR(hID), title, e); }
337 {
return bookProf(par,
_STR(hID), title, e, upper, lower); }
339 {
return bookProf(pPar,
_STR(hID), title, e, upper, lower); }
443 {
return book(par,
_STR(hID), title, x, y); }
447 {
return book(pPar,
_STR(hID), title, x, y); }
485 {
return bookProf(par,
_STR(hID), title, x, y, upper, lower); }
487 {
return bookProf(pPar,
_STR(hID), title, x, y, upper, lower); }
548 {
return book(par,
_STR(hID), title, x, y, z); }
550 {
return book(pPar,
_STR(hID), title, x, y, z); }
587 {
return Helper(
this).retrieve(pReg,path,obj); }
589 {
return Helper(
this).retrieve(pReg,path,obj); }
591 {
return Helper(
this).retrieve(pReg,path,obj); }
593 {
return Helper(
this).retrieve(pReg,path,obj); }
595 {
return Helper(
this).retrieve(pReg,path,obj); }
598 {
return Helper(
this).retrieve(full,obj); }
600 {
return Helper(
this).retrieve(full,obj); }
602 {
return Helper(
this).retrieve(full,obj); }
604 {
return Helper(
this).retrieve(full,obj); }
606 {
return Helper(
this).retrieve(full,obj); }
609 {
return Helper(
this).retrieve(parent,rel,obj); }
611 {
return Helper(
this).retrieve(parent,rel,obj); }
613 {
return Helper(
this).retrieve(parent,rel,obj); }
615 {
return Helper(
this).retrieve(parent,rel,obj); }
617 {
return Helper(
this).retrieve(parent,rel,obj); }
620 {
return Helper(
this).retrieve(parent,item,obj); }
622 {
return Helper(
this).retrieve(parent,item,obj); }
624 {
return Helper(
this).retrieve(parent,item,obj); }
626 {
return Helper(
this).retrieve(parent,item,obj); }
628 {
return Helper(
this).retrieve(parent,item,obj); }
631 {
return Helper(
this).retrieve(par,item,obj); }
633 {
return Helper(
this).retrieve(par,item,obj); }
635 {
return Helper(
this).retrieve(par,item,obj); }
637 {
return Helper(
this).retrieve(par,item,obj); }
639 {
return Helper(
this).retrieve(par,item,obj); }
642 {
return Helper(
this).retrieve(par,item,obj); }
644 {
return Helper(
this).retrieve(par,item,obj); }
646 {
return Helper(
this).retrieve(par,item,obj); }
648 {
return Helper(
this).retrieve(par,item,obj); }
650 {
return Helper(
this).retrieve(par,item,obj); }
682 {
return Helper(
this).find(pReg,path,obj); }
684 {
return Helper(
this).find(pReg,path,obj); }
686 {
return Helper(
this).find(pReg,path,obj); }
688 {
return Helper(
this).find(pReg,path,obj); }
690 {
return Helper(
this).find(pReg,path,obj); }
693 {
return Helper(
this).find(full,obj); }
695 {
return Helper(
this).find(full,obj); }
697 {
return Helper(
this).find(full,obj); }
699 {
return Helper(
this).find(full,obj); }
701 {
return Helper(
this).find(full,obj); }
704 {
return Helper(
this).find(par,rel,obj); }
706 {
return Helper(
this).find(par,rel,obj); }
708 {
return Helper(
this).find(par,rel,obj); }
710 {
return Helper(
this).find(par,rel,obj); }
712 {
return Helper(
this).find(par,rel,obj); }
715 {
return Helper(
this).find(par,item,obj); }
717 {
return Helper(
this).find(par,item,obj); }
719 {
return Helper(
this).find(par,item,obj); }
721 {
return Helper(
this).find(par,item,obj); }
723 {
return Helper(
this).find(par,item,obj); }
726 {
return Helper(
this).find(par,item,obj); }
728 {
return Helper(
this).find(par,item,obj); }
730 {
return Helper(
this).find(par,item,obj); }
732 {
return Helper(
this).find(par,item,obj); }
734 {
return Helper(
this).find(par,item,obj); }
737 {
return Helper(
this).find(par,item,obj); }
739 {
return Helper(
this).find(par,item,obj); }
741 {
return Helper(
this).find(par,item,obj); }
743 {
return Helper(
this).find(par,item,obj); }
745 {
return Helper(
this).find(par,item,obj); }
773 {
return sliceX( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
775 {
return sliceY( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
777 {
return sliceX( name, h, indexY, indexY ); }
779 {
return sliceY( name, h, indexX, indexX ); }
783 bool destroy( IBaseHistogram* hist);
813 {
return i_project(nameAndTitle,h,
"xy"); }
815 {
return i_project(nameAndTitle,h,
"xz"); }
817 {
return i_project(nameAndTitle,h,
"yz"); }
824 {
return book( name, tit,
BINS(x)); }
826 {
return book( name, tit,
BINS(x)); }
828 {
return book(name, title, x); }
830 {
return book(nameAndTitle, nameAndTitle,
BINS(x)); }
845 {
return book(name, title, x, y); }
847 {
return book(nameAndTitle, nameAndTitle,
BINS(x),
BINS(y)); }
862 {
return book(name, title, x, y, z); }
879 {
return bookProf( name, tit,
BINS(x), upper, lower , opt ); }
881 {
return bookProf(name, title, x ); }
883 {
return bookProf(name, title, x, upper, lower ); }
888 {
return bookProf( nametit, nametit,
BINS(x), upper, lower ,
"s"); }
905 {
return bookProf(name, title, x, y); }
914 {
return bookProf(name, title, x, y, upper, lower); }
916 {
return bookProf(nameAndTitle, nameAndTitle,
BINS(x),
BINS(y), upper, lower);}
950 virtual
int write(
Base* h, const
char* file_name ) const;
980 #endif // GAUDISVC_HISTOGRAMSVC_H