2 #ifndef GAUDISVC_HISTOGRAMSVC_H 3 #define GAUDISVC_HISTOGRAMSVC_H 1 19 #include "AIDA/IAnnotation.h" 20 #include "AIDA/IHistogramFactory.h" 63 typedef AIDA::IHistogram3D
H3D;
64 typedef AIDA::IProfile2D
P2D;
65 typedef AIDA::IBaseHistogram
Base;
70 template <
class A1,
class A3>
75 a3 =
dynamic_cast<A3*
>( pObject );
78 template <
class A1,
class A2,
class A3>
83 a3 =
dynamic_cast<A3*
>( pObject );
86 template <
class A1,
class A3>
91 a3 =
dynamic_cast<A3*
>( pObject );
94 template <
class A1,
class A2,
class A3>
99 a3 =
dynamic_cast<A3*
>( pObject );
102 template <
class R,
class S,
class T1,
class T2>
103 static R*
act( R* res,
const S& b,
void ( T1::*pmf )(
const T2*, Double_t ), Double_t scale )
105 auto h1 = Gaudi::getRepresentation<R, T1>( *res );
106 const auto h2 = Gaudi::getRepresentation<R, T2>( b );
108 ( h1->*pmf )( h2, scale );
113 template <
class R,
class S,
class T1,
class T2>
114 static R*
act( R* res,
const S& b, Bool_t ( T1::*pmf )(
const T2*, Double_t ), Double_t scale )
116 auto h1 = Gaudi::getRepresentation<R, T1>( *res );
117 const auto h2 = Gaudi::getRepresentation<R, T2>( b );
119 ( h1->*pmf )( h2, scale );
124 template <
class R,
class S,
class T1,
class T2>
125 static R*
act( R* res,
const S& b,
void ( T1::*pmf )(
const T2* ) )
127 auto h1 = Gaudi::getRepresentation<R, T1>( *res );
128 const auto h2 = Gaudi::getRepresentation<R, T2>( b );
135 template <
class R,
class S,
class T1,
class T2>
136 static R*
act( R* res,
const S& b, Bool_t ( T1::*pmf )(
const T2* ) )
138 auto h1 = Gaudi::getRepresentation<R, T1>( *res );
139 const auto h2 = Gaudi::getRepresentation<R, T2>( b );
177 if ( o.first && registerObject( pPar, rel, (Base*)o.second ).isSuccess() )
return o.second;
184 AIDA::IHistogram2D* i_project(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& h,
const std::string& dir );
217 double lowx,
double upx )
override;
220 double upx )
override;
223 double upx )
override;
226 double upx )
override;
229 double lowx,
double upx );
232 double upx )
override;
254 double lowx,
double upx,
const std::string& opt )
override;
272 double lowx,
double upx,
double upper,
double lower,
const std::string& opt )
override;
275 double upx,
double upper,
double lower,
const std::string& opt )
override;
278 double upper,
double lower,
const std::string& opt )
override;
281 double lowx,
double upx,
double upper,
double lower,
const std::string& opt );
284 double upper,
double lower,
const std::string& opt )
override;
287 double upx,
double upper,
double lower,
const std::string& opt )
override;
354 double upper,
double lower );
363 double upper,
double lower );
366 double upper,
double lower );
391 double lowy,
double upy )
override;
394 double lowx,
double upx,
int ny,
double lowy,
double upy )
override;
397 int ny,
double lowy,
double upy )
override;
400 double lowx,
double upx,
int ny,
double lowy,
double upy );
403 int ny,
double lowy,
double upy )
override;
406 double upx,
int ny,
double lowy,
double upy )
override;
431 double upx,
int ny,
double lowy,
double upy,
double upper,
double lower );
434 double lowx,
double upx,
int ny,
double lowy,
double upy,
double upper,
438 double lowx,
double upx,
int ny,
double lowy,
double upy,
double upper,
442 double upx,
int ny,
double lowy,
double upy,
double upper,
double lower );
445 double upx,
int ny,
double lowy,
double upy,
double upper,
double lower );
448 double lowx,
double upx,
int ny,
double lowy,
double upy,
double upper,
452 int ny,
double lowy,
double upy )
override;
455 double lowx,
double upx,
int ny,
double lowy,
double upy )
override;
458 double lowx,
double upx,
int ny,
double lowy,
double upy );
461 double upx,
int ny,
double lowy,
double upy )
override;
464 int ny,
double lowy,
double upy )
override;
467 double upx,
int ny,
double lowy,
double upy )
override;
537 Edges y,
double upper,
double lower );
540 double upper,
double lower );
543 double upper,
double lower );
546 Edges y,
double upper,
double lower );
549 Edges y,
double upper,
double lower );
571 double lowy,
double upy,
int nz,
double lowz,
double upz )
override;
574 double lowx,
double upx,
int ny,
double lowy,
double upy,
int nz,
double lowz,
575 double upz )
override;
578 int ny,
double lowy,
double upy,
int nz,
double lowz,
double upz )
override;
581 int ny,
double lowy,
double upy,
int nz,
double lowz,
double upz )
override;
584 double lowx,
double upx,
int ny,
double lowy,
double upy,
int nz,
double lowz,
588 double upx,
int ny,
double lowy,
double upy,
int nz,
double lowz,
double upz )
override;
640 StatusCode unregisterObject( Base* obj )
override;
644 StatusCode unregisterObject( Base* obj,
int item )
override;
709 StatusCode retrieveObject( Base* par,
int item, AIDA::IProfile1D*& obj )
override;
711 StatusCode retrieveObject( Base* par,
int item, AIDA::IProfile2D*& obj )
override;
713 StatusCode retrieveObject( Base* par,
int item, AIDA::IHistogram1D*& obj )
override;
715 StatusCode retrieveObject( Base* par,
int item, AIDA::IHistogram2D*& obj )
override;
717 StatusCode retrieveObject( Base* par,
int item, AIDA::IHistogram3D*& obj )
override;
792 StatusCode findObject( Base* par,
int item, AIDA::IProfile1D*& obj )
override;
794 StatusCode findObject( Base* par,
int item, AIDA::IProfile2D*& obj )
override;
796 StatusCode findObject( Base* par,
int item, AIDA::IHistogram1D*& obj )
override;
798 StatusCode findObject( Base* par,
int item, AIDA::IHistogram2D*& obj )
override;
800 StatusCode findObject( Base* par,
int item, AIDA::IHistogram3D*& obj )
override;
815 AIDA::IHistogram1D* projectionX(
const std::string&
name,
const AIDA::IHistogram2D& h )
override;
817 AIDA::IHistogram1D* projectionY(
const std::string& name,
const AIDA::IHistogram2D& h )
override;
819 AIDA::IHistogram1D* sliceX(
const std::string& name,
const AIDA::IHistogram2D& h,
int indexY )
override;
821 AIDA::IHistogram1D* sliceY(
const std::string& name,
const AIDA::IHistogram2D& h,
int indexX )
override;
823 AIDA::IHistogram1D* sliceX(
const std::string& name,
const AIDA::IHistogram2D& h,
int indexY1,
int indexY2 )
override;
825 AIDA::IHistogram1D* sliceY(
const std::string& name,
const AIDA::IHistogram2D& h,
int indexX1,
int indexX2 )
override;
827 bool destroy( IBaseHistogram* hist )
override;
829 AIDA::IHistogram1D*
add(
const std::string& nameAndTitle,
const AIDA::IHistogram1D& a,
830 const AIDA::IHistogram1D& b )
override;
832 AIDA::IHistogram1D* subtract(
const std::string& nameAndTitle,
const AIDA::IHistogram1D& a,
833 const AIDA::IHistogram1D& b )
override;
835 AIDA::IHistogram1D* multiply(
const std::string& nameAndTitle,
const AIDA::IHistogram1D& a,
836 const AIDA::IHistogram1D& b )
override;
838 AIDA::IHistogram1D* divide(
const std::string& nameAndTitle,
const AIDA::IHistogram1D& a,
839 const AIDA::IHistogram1D& b )
override;
841 AIDA::IHistogram2D*
add(
const std::string& nameAndTitle,
const AIDA::IHistogram2D& a,
842 const AIDA::IHistogram2D& b )
override;
844 AIDA::IHistogram2D* subtract(
const std::string& nameAndTitle,
const AIDA::IHistogram2D& a,
845 const AIDA::IHistogram2D& b )
override;
847 AIDA::IHistogram2D* multiply(
const std::string& nameAndTitle,
const AIDA::IHistogram2D& a,
848 const AIDA::IHistogram2D& b )
override;
850 AIDA::IHistogram2D* divide(
const std::string& nameAndTitle,
const AIDA::IHistogram2D& a,
851 const AIDA::IHistogram2D& b )
override;
853 AIDA::IHistogram3D*
add(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& a,
854 const AIDA::IHistogram3D& b )
override;
856 AIDA::IHistogram3D* subtract(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& a,
857 const AIDA::IHistogram3D& b )
override;
859 AIDA::IHistogram3D* multiply(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& a,
860 const AIDA::IHistogram3D& b )
override;
862 AIDA::IHistogram3D* divide(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& a,
863 const AIDA::IHistogram3D& b )
override;
865 AIDA::IHistogram2D* projectionXY(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& h )
override;
867 AIDA::IHistogram2D* projectionXZ(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& h )
override;
869 AIDA::IHistogram2D* projectionYZ(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& h )
override;
892 AIDA::IHistogram1D* createHistogram1D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
895 AIDA::IHistogram1D* createHistogram1D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
901 AIDA::IHistogram1D* createHistogram1D(
const std::string& nameAndTitle,
int nx,
double lowx,
double upx )
override;
903 AIDA::IHistogram1D* createCopy(
const std::string& full,
const AIDA::IHistogram1D& h )
override;
905 AIDA::IHistogram1D* createCopy(
const std::string& par,
const std::string& rel,
const AIDA::IHistogram1D& h );
909 AIDA::IHistogram1D* createCopy(
DataObject* pPar,
const std::string& rel,
const AIDA::IHistogram1D& h );
911 AIDA::IHistogram2D* createHistogram2D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
912 double upx,
int ny,
double lowy,
double upy );
914 AIDA::IHistogram2D* createHistogram2D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
915 double upx,
int ny,
double lowy,
double upy,
921 AIDA::IHistogram2D* createHistogram2D(
const std::string& nameAndTitle,
int nx,
double lowx,
double upx,
int ny,
922 double lowy,
double upy )
override;
924 AIDA::IHistogram2D* createCopy(
const std::string& full,
const AIDA::IHistogram2D& h )
override;
926 AIDA::IHistogram2D* createCopy(
const std::string& par,
const std::string& rel,
const AIDA::IHistogram2D& h );
930 AIDA::IHistogram2D* createCopy(
DataObject* pPar,
const std::string& rel,
const AIDA::IHistogram2D& h );
932 AIDA::IHistogram3D* createHistogram3D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
933 double upx,
int ny,
double lowy,
double upy,
int nz,
double lowz,
double upz );
935 AIDA::IHistogram3D* createHistogram3D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
936 double upx,
int ny,
double lowy,
double upy,
int nz,
double lowz,
double upz,
942 AIDA::IHistogram3D* createHistogram3D(
const std::string& nameAndTitle,
int nx,
double lowx,
double upx,
int ny,
943 double lowy,
double upy,
int nz,
double lowz,
double upz )
override;
945 AIDA::IHistogram3D* createCopy(
const std::string& full,
const AIDA::IHistogram3D& h )
override;
947 AIDA::IHistogram3D* createCopy(
const std::string& par,
const std::string& rel,
const AIDA::IHistogram3D& h );
951 AIDA::IHistogram3D* createCopy(
DataObject* pPar,
const std::string& rel,
const AIDA::IHistogram3D& h );
953 AIDA::IProfile1D* createProfile1D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
double upx,
956 AIDA::IProfile1D* createProfile1D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
double upx,
957 double upper,
double lower,
const std::string& opt )
override;
965 AIDA::IProfile1D* createProfile1D(
const std::string& nametit,
int nx,
double lowx,
double upx )
override;
967 AIDA::IProfile1D* createProfile1D(
const std::string& nametit,
int nx,
double lowx,
double upx,
double upper,
968 double lower )
override;
970 AIDA::IProfile1D* createCopy(
const std::string& full,
const AIDA::IProfile1D& h )
override;
972 AIDA::IProfile1D* createCopy(
const std::string& par,
const std::string& rel,
const AIDA::IProfile1D& h );
978 AIDA::IProfile2D* createProfile2D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
double upx,
979 int ny,
double lowy,
double upy );
981 AIDA::IProfile2D* createProfile2D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
double upx,
982 int ny,
double lowy,
double upy,
const std::string& )
override;
987 AIDA::IProfile2D* createProfile2D(
const std::string& nameAndTitle,
int nx,
double lowx,
double upx,
int ny,
988 double lowy,
double upy )
override;
990 AIDA::IProfile2D* createProfile2D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
double upx,
991 int ny,
double lowy,
double upy,
double upper,
double lower );
993 AIDA::IProfile2D* createProfile2D(
const std::string& name,
const std::string& title,
int nx,
double lowx,
double upx,
994 int ny,
double lowy,
double upy,
double upper,
double lower,
998 double upper,
double lower,
const std::string& )
override;
1000 AIDA::IProfile2D* createProfile2D(
const std::string& nameAndTitle,
int nx,
double lowx,
double upx,
int ny,
1001 double lowy,
double upy,
double upper,
double lower )
override;
1003 AIDA::IProfile2D* createCopy(
const std::string& full,
const AIDA::IProfile2D& h )
override;
1005 AIDA::IProfile2D* createCopy(
const std::string& par,
const std::string& rel,
const AIDA::IProfile2D& h );
1009 AIDA::IProfile2D* createCopy(
DataObject* pPar,
const std::string& rel,
const AIDA::IProfile2D& h );
1078 int write( Base* h,
const char* file_name )
const override;
1093 void update1Ddefs();
1102 #endif // GAUDISVC_HISTOGRAMSVC_H AIDA::ICloud3D * createCloud3D(const std::string &, const std::string &, int, const std::string &) override
constexpr static const auto FAILURE
Define general base for Gaudi exception.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
std::set< std::string > m_mods1D
GAUDI_API AIDA::IHistogram1D * book(IHistogramSvc *svc, const std::string &path, const Gaudi::Histo1DDef &hist)
helper function to book 1D-histogram
std::map< std::string, Gaudi::Histo1DDef > Histo1DMap
Implementation of property with value of concrete type.
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
virtual StatusCode findObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Find object identified by its directory entry.
StatusCode retrieveObject(IRegistry *pReg, const std::string &path, AIDA::IHistogram1D *&obj) override
void not_implemented() const
StatusCode find(A1 a1, A3 *&a3)
AIDA::ICloud1D * createCloud1D(const std::string &, const std::string &, int, const std::string &) override
StatusCode retrieve(A1 a1, A2 a2, A3 *&a3)
AIDA::ICloud1D * createCloud1D(const std::string &) override
StatusCode registerObject(boost::string_ref parentPath, boost::string_ref objPath, DataObject *pObject) override
Register object with the data store.
T * i_book(DataObject *pPar, const std::string &rel, const std::string &title, const std::pair< DataObject *, T * > &o)
TupleObj.h GaudiAlg/TupleObj.h namespace with few technical implementations.
AIDA::ICloud1D * createCopy(const std::string &, const AIDA::ICloud1D &) 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 *))
AIDA::ICloud3D * createCloud3D(const std::string &) override
AIDA::IBaseHistogram Base
The IRegistry represents the entry door to the environment any data object residing in a transient da...
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
AIDA::ICloud2D * createCloud2D(const std::string &) override
AIDA::ICloud3D * createCopy(const std::string &, const AIDA::ICloud3D &) override
AIDA::IHistogram2D * sliceYZ(const std::string &, const AIDA::IHistogram3D &, int, int) override
StatusCode findObject(IRegistry *pReg, const std::string &path, AIDA::IProfile1D *&obj) override
StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject)
Register object with the data store.
virtual StatusCode unregisterObject(boost::string_ref fullPath)=0
Unregister object from the data store.
AIDA::ICloud2D * createCloud2D(const std::string &, const std::string &, int, const std::string &) override
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *, Double_t), Double_t scale)
def bookProf(args, kwargs)
Base class used to extend a class implementing other interfaces.
AIDA::IHistogramFactory * histogramFactory() override
Retrieve the AIDA HistogramFactory interface.
AIDA::IHistogram2D * sliceXY(const std::string &, const AIDA::IHistogram3D &, int, int) override
static R * act(R *res, const S &b, Bool_t(T1::*pmf)(const T2 *))
static R * act(R *res, const S &b, void(T1::*pmf)(const T2 *, Double_t), Double_t scale)
StatusCode retrieve(A1 a1, A3 *&a3)
AIDA::IHistogram2D * sliceXZ(const std::string &, const AIDA::IHistogram3D &, int, int) override
A DataObject is the base class of any identifiable object on any data store.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
AIDA::ICloud2D * createCopy(const std::string &, const AIDA::ICloud2D &) override
void update1Ddefs()
handler to be invoked for updating property m_defs1D
StatusCode find(A1 a1, A2 a2, A3 *&a3)
HistogramSvc class definition.