3 #ifndef GAUDISVC_HISTOGRAMSVC_H
4 #define GAUDISVC_HISTOGRAMSVC_H 1
21 #include "AIDA/IHistogramFactory.h"
22 #include "AIDA/IAnnotation.h"
39 #define DBINS(x) int n##x, double low##x, double up##x
40 #define BINS(x) n##x, low##x, up##x
41 #define NOT_IMPLEMENTED { not_implemented(); return 0; }
49 virtual public AIDA::IHistogramFactory
62 typedef AIDA::IHistogram1D
H1D;
63 typedef AIDA::IHistogram2D
H2D;
64 typedef AIDA::IHistogram3D
H3D;
65 typedef AIDA::IProfile1D
P1D;
66 typedef AIDA::IProfile2D
P2D;
67 typedef AIDA::IBaseHistogram
Base;
74 a3 =
dynamic_cast<A3*
>(pObject);
80 a3 =
dynamic_cast<A3*
>(pObject);
86 a3 =
dynamic_cast<A3*
>(pObject);
89 template <
class A1,
class A2,
class A3>
StatusCode find(A1 a1, A2 a2, A3*& a3) {
92 a3 =
dynamic_cast<A3*
>(pObject);
95 template <
class R,
class S,
class T1,
class T2>
96 static R*
act(R* res,
const S& b,
void (T1::*pmf)(
const T2*,Double_t), Double_t scale) {
97 T1 *
h1 = Gaudi::getRepresentation<R,T1>(*res);
98 T1 *
h2 = Gaudi::getRepresentation<R,T1>(b);
100 (h1->*pmf)(h2,scale);
105 template <
class R,
class S,
class T1,
class T2>
106 static R*
act(R* res,
const S& b, Bool_t (T1::*pmf)(
const T2*,Double_t), Double_t scale) {
107 T1 *
h1 = Gaudi::getRepresentation<R,T1>(*res);
108 T1 *
h2 = Gaudi::getRepresentation<R,T1>(b);
110 (h1->*pmf)(h2,scale);
115 template <
class R,
class S,
class T1,
class T2>
116 static R*
act(R* res,
const S& b,
void (T1::*pmf)(
const T2*)) {
117 T1 *
h1 = Gaudi::getRepresentation<R,T1>(*res);
118 T1 *
h2 = Gaudi::getRepresentation<R,T1>(b);
125 template <
class R,
class S,
class T1,
class T2>
126 static R*
act(R* res,
const S& b, Bool_t (T1::*pmf)(
const T2*)) {
127 T1 *
h1 = Gaudi::getRepresentation<R,T1>(*res);
128 T1 *
h2 = Gaudi::getRepresentation<R,T1>(b);
164 template <
class T>
inline
174 if ( 0 == q && 0 != p ) {
287 {
return book(par,
_STR(hID), title, e); }
289 {
return book(pPar,
_STR(hID), title, e); }
334 {
return bookProf(par,
_STR(hID), title, e, upper, lower); }
336 {
return bookProf(pPar,
_STR(hID), title, e, upper, lower); }
440 {
return book(par,
_STR(hID), title, x, y); }
444 {
return book(pPar,
_STR(hID), title, x, y); }
482 {
return bookProf(par,
_STR(hID), title, x, y, upper, lower); }
484 {
return bookProf(pPar,
_STR(hID), title, x, y, upper, lower); }
545 {
return book(par,
_STR(hID), title, x, y, z); }
547 {
return book(pPar,
_STR(hID), title, x, y, z); }
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); }
592 {
return Helper(
this).retrieve(pReg,path,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); }
603 {
return Helper(
this).retrieve(full,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); }
614 {
return Helper(
this).retrieve(parent,rel,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); }
625 {
return Helper(
this).retrieve(parent,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); }
636 {
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); }
647 {
return Helper(
this).retrieve(par,item,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); }
687 {
return Helper(
this).find(pReg,path,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); }
698 {
return Helper(
this).find(full,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); }
709 {
return Helper(
this).find(par,rel,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); }
720 {
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); }
731 {
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); }
742 {
return Helper(
this).find(par,item,obj); }
770 {
return sliceX( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
772 {
return sliceY( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
774 {
return sliceX( name, h, indexY, indexY ); }
776 {
return sliceY( name, h, indexX, indexX ); }
780 bool destroy( IBaseHistogram* hist);
810 {
return i_project(nameAndTitle,h,
"xy"); }
812 {
return i_project(nameAndTitle,h,
"xz"); }
814 {
return i_project(nameAndTitle,h,
"yz"); }
821 {
return book( name, tit,
BINS(x)); }
823 {
return book( name, tit,
BINS(x)); }
825 {
return book(name, title, x); }
827 {
return book(nameAndTitle, nameAndTitle,
BINS(x)); }
842 {
return book(name, title, x, y); }
844 {
return book(nameAndTitle, nameAndTitle,
BINS(x),
BINS(y)); }
859 {
return book(name, title, x, y, z); }
876 {
return bookProf( name, tit,
BINS(x), upper, lower , opt ); }
878 {
return bookProf(name, title, x ); }
880 {
return bookProf(name, title, x, upper, lower ); }
885 {
return bookProf( nametit, nametit,
BINS(x), upper, lower ,
"s"); }
902 {
return bookProf(name, title, x, y); }
911 {
return bookProf(name, title, x, y, upper, lower); }
913 {
return bookProf(nameAndTitle, nameAndTitle,
BINS(x),
BINS(y), upper, lower);}
947 virtual
int write(
Base* h, const
char* file_name ) const;
977 #endif // GAUDISVC_HISTOGRAMSVC_H