2 #ifndef GAUDISVC_HISTOGRAMSVC_H 3 #define GAUDISVC_HISTOGRAMSVC_H 1 19 #include "AIDA/IAnnotation.h" 20 #include "AIDA/IHistogramFactory.h" 62 error() <<
"Sorry, not yet implemented..." <<
endmsg;
67 typedef AIDA::IHistogram3D
H3D;
68 typedef AIDA::IProfile2D
P2D;
69 typedef AIDA::IBaseHistogram
Base;
74 template <
class A1,
class A3>
78 StatusCode sc = m_svc->DataSvc::retrieveObject( a1, pObject );
79 a3 =
dynamic_cast<A3*
>( pObject );
82 template <
class A1,
class A2,
class A3>
86 StatusCode sc = m_svc->DataSvc::retrieveObject( a1, a2, pObject );
87 a3 =
dynamic_cast<A3*
>( pObject );
90 template <
class A1,
class A3>
94 StatusCode sc = m_svc->DataSvc::findObject( a1, pObject );
95 a3 =
dynamic_cast<A3*
>( pObject );
98 template <
class A1,
class A2,
class A3>
102 StatusCode sc = m_svc->DataSvc::findObject( a1, a2, pObject );
103 a3 =
dynamic_cast<A3*
>( pObject );
106 template <
class R,
class S,
class T1,
class T2>
107 static R*
act( R* res,
const S& b,
void ( T1::*pmf )(
const T2*, Double_t ), Double_t scale )
109 auto h1 = Gaudi::getRepresentation<R, T1>( *res );
110 const auto h2 = Gaudi::getRepresentation<R, T2>( b );
112 ( h1->*pmf )( h2, scale );
117 template <
class R,
class S,
class T1,
class T2>
118 static R*
act( R* res,
const S& b, Bool_t ( T1::*pmf )(
const T2*, Double_t ), Double_t scale )
120 auto h1 = Gaudi::getRepresentation<R, T1>( *res );
121 const auto h2 = Gaudi::getRepresentation<R, T2>( b );
123 ( h1->*pmf )( h2, scale );
128 template <
class R,
class S,
class T1,
class T2>
129 static R*
act( R* res,
const S& b,
void ( T1::*pmf )(
const T2* ) )
131 auto h1 = Gaudi::getRepresentation<R, T1>( *res );
132 const auto h2 = Gaudi::getRepresentation<R, T2>( b );
139 template <
class R,
class S,
class T1,
class T2>
140 static R*
act( R* res,
const S& b, Bool_t ( T1::*pmf )(
const T2* ) )
142 auto h1 = Gaudi::getRepresentation<R, T1>( *res );
143 const auto h2 = Gaudi::getRepresentation<R, T2>( b );
181 if ( o.first && registerObject( pPar, rel, (Base*)o.second ).isSuccess() )
return o.second;
188 AIDA::IHistogram2D* i_project(
const std::string& nameAndTitle,
const AIDA::IHistogram3D&
h,
const std::string& dir );
222 int nx,
double lowx,
double upx )
override;
225 int nx,
double lowx,
double upx )
override;
228 int nx,
double lowx,
double upx )
override;
231 int nx,
double lowx,
double upx )
override;
234 int nx,
double lowx,
double upx );
237 int nx,
double lowx,
double upx )
override;
259 int nx,
double lowx,
double upx,
const std::string& opt )
override;
262 int nx,
double lowx,
double upx,
const std::string& opt )
override;
265 int nx,
double lowx,
double upx,
const std::string& opt )
override;
269 int nx,
double lowx,
double upx,
const std::string& opt );
272 int nx,
double lowx,
double upx,
const std::string& opt )
override;
275 int nx,
double lowx,
double upx,
const std::string& opt )
override;
278 int nx,
double lowx,
double upx,
279 double upper,
double lower,
const std::string& opt )
override;
282 int nx,
double lowx,
double upx,
283 double upper,
double lower,
const std::string& opt )
override;
286 int nx,
double lowx,
double upx,
287 double upper,
double lower,
const std::string& opt )
override;
291 int nx,
double lowx,
double upx,
292 double upper,
double lower,
const std::string& opt );
295 int nx,
double lowx,
double upx,
296 double upper,
double lower,
const std::string& opt )
override;
299 int nx,
double lowx,
double upx,
300 double upper,
double lower,
const std::string& opt )
override;
373 Edges e,
double upper,
double lower );
377 double upper,
double lower );
381 double upper,
double lower );
385 double upper,
double lower );
389 double upper,
double lower );
393 double upper,
double lower );
418 int nx,
double lowx,
double upx,
419 int ny,
double lowy,
double upy )
override;
423 int nx,
double lowx,
double upx,
424 int ny,
double lowy,
double upy )
override;
427 int nx,
double lowx,
double upx,
428 int ny,
double lowy,
double upy )
override;
432 int nx,
double lowx,
double upx,
433 int ny,
double lowy,
double upy );
436 int nx,
double lowx,
double upx,
437 int ny,
double lowy,
double upy )
override;
441 int nx,
double lowx,
double upx,
442 int ny,
double lowy,
double upy )
override;
469 int nx,
double lowx,
double upx,
470 int ny,
double lowy,
double upy,
471 double upper,
double lower );
475 int nx,
double lowx,
double upx,
476 int ny,
double lowy,
double upy,
477 double upper,
double lower );
481 int nx,
double lowx,
double upx,
482 int ny,
double lowy,
double upy,
483 double upper,
double lower );
487 int nx,
double lowx,
double upx,
488 int ny,
double lowy,
double upy,
489 double upper,
double lower );
492 int nx,
double lowx,
double upx,
493 int ny,
double lowy,
double upy,
494 double upper,
double lower );
498 int nx,
double lowx,
double upx,
499 int ny,
double lowy,
double upy,
500 double upper,
double lower );
504 int nx,
double lowx,
double upx,
505 int ny,
double lowy,
double upy )
override;
509 int nx,
double lowx,
double upx,
510 int ny,
double lowy,
double upy )
override;
514 int nx,
double lowx,
double upx,
515 int ny,
double lowy,
double upy );
519 int nx,
double lowx,
double upx,
520 int ny,
double lowy,
double upy )
override;
524 int nx,
double lowx,
double upx,
525 int ny,
double lowy,
double upy )
override;
529 int nx,
double lowx,
double upx,
530 int ny,
double lowy,
double upy )
override;
617 double upper,
double lower );
622 double upper,
double lower );
627 double upper,
double lower );
632 double upper,
double lower );
637 double upper,
double lower );
642 double upper,
double lower );
665 int nx,
double lowx,
double upx,
666 int ny,
double lowy,
double upy,
667 int nz,
double lowz,
double upz )
override;
671 int nx,
double lowx,
double upx,
672 int ny,
double lowy,
double upy,
673 int nz,
double lowz,
double upz )
override;
677 int nx,
double lowx,
double upx,
678 int ny,
double lowy,
double upy,
679 int nz,
double lowz,
double upz )
override;
683 int nx,
double lowx,
double upx,
684 int ny,
double lowy,
double upy,
685 int nz,
double lowz,
double upz )
override;
689 int nx,
double lowx,
double upx,
690 int ny,
double lowy,
double upy,
691 int nz,
double lowz,
double upz );
695 int nx,
double lowx,
double upx,
696 int ny,
double lowy,
double upy,
697 int nz,
double lowz,
double upz )
override;
753 StatusCode registerObject( Base* pPar,
int item, Base* obj )
override;
762 StatusCode unregisterObject( Base* obj )
override;
766 StatusCode unregisterObject( Base* obj,
int item )
override;
772 AIDA::IHistogram1D*& obj )
override;
775 AIDA::IProfile1D*& obj )
override;
778 AIDA::IHistogram2D*& obj )
override;
781 AIDA::IProfile2D*& obj )
override;
784 AIDA::IHistogram3D*& obj )
override;
787 AIDA::IProfile1D*& obj )
override;
790 AIDA::IProfile2D*& obj )
override;
793 AIDA::IHistogram1D*& obj )
override;
796 AIDA::IHistogram2D*& obj )
override;
799 AIDA::IHistogram3D*& obj )
override;
802 AIDA::IProfile1D*& obj )
override;
805 AIDA::IProfile2D*& obj )
override;
808 AIDA::IHistogram1D*& obj )
override;
811 AIDA::IHistogram2D*& obj )
override;
814 AIDA::IHistogram3D*& obj )
override;
817 AIDA::IProfile1D*& obj )
override;
820 AIDA::IProfile2D*& obj )
override;
823 AIDA::IHistogram1D*& obj )
override;
826 AIDA::IHistogram2D*& obj )
override;
829 AIDA::IHistogram3D*& obj )
override;
832 AIDA::IProfile1D*& obj )
override;
835 AIDA::IProfile2D*& obj )
override;
838 AIDA::IHistogram1D*& obj )
override;
841 AIDA::IHistogram2D*& obj )
override;
844 AIDA::IHistogram3D*& obj )
override;
847 AIDA::IProfile1D*& obj )
override;
850 AIDA::IProfile2D*& obj )
override;
853 AIDA::IHistogram1D*& obj )
override;
856 AIDA::IHistogram2D*& obj )
override;
859 AIDA::IHistogram3D*& obj )
override;
861 StatusCode retrieveObject( Base* par,
int item,
862 AIDA::IProfile1D*& obj )
override;
864 StatusCode retrieveObject( Base* par,
int item,
865 AIDA::IProfile2D*& obj )
override;
867 StatusCode retrieveObject( Base* par,
int item,
868 AIDA::IHistogram1D*& obj )
override;
870 StatusCode retrieveObject( Base* par,
int item,
871 AIDA::IHistogram2D*& obj )
override;
873 StatusCode retrieveObject( Base* par,
int item,
874 AIDA::IHistogram3D*& obj )
override;
877 AIDA::IProfile1D*& obj )
override;
880 AIDA::IProfile2D*& obj )
override;
883 AIDA::IHistogram1D*& obj )
override;
886 AIDA::IHistogram2D*& obj )
override;
889 AIDA::IHistogram3D*& obj )
override;
895 AIDA::IProfile1D*& obj )
override;
898 AIDA::IProfile2D*& obj )
override;
901 AIDA::IHistogram1D*& obj )
override;
904 AIDA::IHistogram2D*& obj )
override;
907 AIDA::IHistogram3D*& obj )
override;
910 AIDA::IProfile1D*& obj )
override;
913 AIDA::IProfile2D*& obj )
override ;
916 AIDA::IHistogram1D*& obj )
override;
919 AIDA::IHistogram2D*& obj )
override;
922 AIDA::IHistogram3D*& obj )
override;
925 AIDA::IProfile1D*& obj )
override;
928 AIDA::IProfile2D*& obj )
override;
931 AIDA::IHistogram1D*& obj )
override;
934 AIDA::IHistogram2D*& obj )
override;
937 AIDA::IHistogram3D*& obj )
override;
940 AIDA::IProfile1D*& obj )
override;
943 AIDA::IProfile2D*& obj )
override;
946 AIDA::IHistogram1D*& obj )
override;
949 AIDA::IHistogram2D*& obj )
override;
952 AIDA::IHistogram3D*& obj )
override;
955 AIDA::IProfile1D*& obj )
override;
958 AIDA::IProfile2D*& obj )
override;
961 AIDA::IHistogram1D*& obj )
override;
964 AIDA::IHistogram2D*& obj )
override;
967 AIDA::IHistogram3D*& obj )
override;
970 AIDA::IProfile1D*& obj )
override;
973 AIDA::IProfile2D*& obj )
override;
976 AIDA::IHistogram1D*& obj )
override;
979 AIDA::IHistogram2D*& obj )
override;
982 AIDA::IHistogram3D*& obj )
override;
985 AIDA::IProfile1D*& obj )
override;
988 AIDA::IProfile2D*& obj )
override;
991 AIDA::IHistogram1D*& obj )
override;
994 AIDA::IHistogram2D*& obj )
override;
997 AIDA::IHistogram3D*& obj )
override;
1000 AIDA::IProfile1D*& obj )
override;
1003 AIDA::IProfile2D*& obj )
override;
1006 AIDA::IHistogram1D*& obj )
override;
1009 AIDA::IHistogram2D*& obj )
override;
1012 AIDA::IHistogram3D*& obj )
override;
1018 const AIDA::IHistogram2D& h )
override;
1020 AIDA::IHistogram1D* projectionY(
const std::string& name,
1021 const AIDA::IHistogram2D& h )
override;
1023 AIDA::IHistogram1D* sliceX(
const std::string& name,
const AIDA::IHistogram2D& h,
1024 int indexY )
override ;
1026 AIDA::IHistogram1D* sliceY(
const std::string& name,
const AIDA::IHistogram2D& h,
1027 int indexX )
override ;
1029 AIDA::IHistogram1D* sliceX(
const std::string& name,
const AIDA::IHistogram2D& h,
1030 int indexY1,
int indexY2 )
override;
1032 AIDA::IHistogram1D* sliceY(
const std::string& name,
const AIDA::IHistogram2D& h,
1033 int indexX1,
int indexX2 )
override;
1035 bool destroy( IBaseHistogram* hist )
override;
1037 AIDA::IHistogram1D*
add(
const std::string& nameAndTitle,
const AIDA::IHistogram1D& a,
1038 const AIDA::IHistogram1D& b )
override;
1040 AIDA::IHistogram1D* subtract(
const std::string& nameAndTitle,
const AIDA::IHistogram1D& a,
1041 const AIDA::IHistogram1D& b )
override;
1043 AIDA::IHistogram1D* multiply(
const std::string& nameAndTitle,
const AIDA::IHistogram1D& a,
1044 const AIDA::IHistogram1D& b )
override;
1046 AIDA::IHistogram1D* divide(
const std::string& nameAndTitle,
const AIDA::IHistogram1D& a,
1047 const AIDA::IHistogram1D& b )
override;
1049 AIDA::IHistogram2D*
add(
const std::string& nameAndTitle,
const AIDA::IHistogram2D& a,
1050 const AIDA::IHistogram2D& b )
override;
1052 AIDA::IHistogram2D* subtract(
const std::string& nameAndTitle,
const AIDA::IHistogram2D& a,
1053 const AIDA::IHistogram2D& b )
override;
1055 AIDA::IHistogram2D* multiply(
const std::string& nameAndTitle,
const AIDA::IHistogram2D& a,
1056 const AIDA::IHistogram2D& b )
override;
1058 AIDA::IHistogram2D* divide(
const std::string& nameAndTitle,
const AIDA::IHistogram2D& a,
1059 const AIDA::IHistogram2D& b )
override;
1061 AIDA::IHistogram3D*
add(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& a,
1062 const AIDA::IHistogram3D& b )
override;
1064 AIDA::IHistogram3D* subtract(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& a,
1065 const AIDA::IHistogram3D& b )
override;
1067 AIDA::IHistogram3D* multiply(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& a,
1068 const AIDA::IHistogram3D& b )
override;
1070 AIDA::IHistogram3D* divide(
const std::string& nameAndTitle,
const AIDA::IHistogram3D& a,
1071 const AIDA::IHistogram3D& b )
override;
1073 AIDA::IHistogram2D* projectionXY(
const std::string& nameAndTitle,
1074 const AIDA::IHistogram3D& h )
override ;
1076 AIDA::IHistogram2D* projectionXZ(
const std::string& nameAndTitle,
1077 const AIDA::IHistogram3D& h )
override ;
1079 AIDA::IHistogram2D* projectionYZ(
const std::string& nameAndTitle,
1080 const AIDA::IHistogram3D& h )
override ;
1084 const AIDA::IHistogram3D& ,
1085 int ,
int )
override 1092 const AIDA::IHistogram3D& ,
1093 int ,
int )
override 1100 const AIDA::IHistogram3D& ,
1101 int ,
int )
override 1108 int nx,
double lowx,
double upx );
1111 int nx,
double lowx,
double upx,
1118 AIDA::IHistogram1D* createHistogram1D(
const std::string& nameAndTitle,
1119 int nx,
double lowx,
double upx )
override;
1121 AIDA::IHistogram1D* createCopy(
const std::string& full,
1122 const AIDA::IHistogram1D& h )
override;
1125 const AIDA::IHistogram1D& h );
1128 const AIDA::IHistogram1D& h );
1131 const AIDA::IHistogram1D& h );
1134 int nx,
double lowx,
double upx,
1135 int ny,
double lowy,
double upy );
1138 int nx,
double lowx,
double upx,
1139 int ny,
double lowy,
double upy,
1146 AIDA::IHistogram2D* createHistogram2D(
const std::string& nameAndTitle,
1147 int nx,
double lowx,
double upx,
1148 int ny,
double lowy,
double upy )
override;
1150 AIDA::IHistogram2D* createCopy(
const std::string& full,
1151 const AIDA::IHistogram2D& h )
override;
1154 const AIDA::IHistogram2D& h );
1157 const AIDA::IHistogram2D& h );
1160 const AIDA::IHistogram2D& h );
1163 int nx,
double lowx,
double upx,
1164 int ny,
double lowy,
double upy,
1165 int nz,
double lowz,
double upz );
1168 int nx,
double lowx,
double upx,
1169 int ny,
double lowy,
double upy,
1170 int nz,
double lowz,
double upz,
1177 AIDA::IHistogram3D* createHistogram3D(
const std::string& nameAndTitle,
1178 int nx,
double lowx,
double upx,
1179 int ny,
double lowy,
double upy,
1180 int nz,
double lowz,
double upz )
override;
1182 AIDA::IHistogram3D* createCopy(
const std::string& full,
1183 const AIDA::IHistogram3D& h )
override;
1186 const AIDA::IHistogram3D& h );
1189 const AIDA::IHistogram3D& h );
1192 const AIDA::IHistogram3D& h );
1196 int nx,
double lowx,
double upx,
1200 int nx,
double lowx,
double upx,
1201 double upper,
double lower,
1204 AIDA::IProfile1D* createProfile1D(
const std::string& name,
1208 AIDA::IProfile1D* createProfile1D(
const std::string& name,
1210 double upper,
double lower,
1213 AIDA::IProfile1D* createProfile1D(
const std::string& nametit,
1214 int nx,
double lowx,
double upx )
override;
1216 AIDA::IProfile1D* createProfile1D(
const std::string& nametit,
1217 int nx,
double lowx,
double upx,
1218 double upper,
double lower )
override;
1220 AIDA::IProfile1D* createCopy(
const std::string& full,
1221 const AIDA::IProfile1D& h )
override;
1224 const AIDA::IProfile1D& h );
1227 const AIDA::IProfile1D& h );
1230 const AIDA::IProfile1D& h );
1233 int nx,
double lowx,
double upx,
1234 int ny,
double lowy,
double upy );
1237 int nx,
double lowx,
double upx,
1238 int ny,
double lowy,
double upy,
1241 AIDA::IProfile2D* createProfile2D(
const std::string& name,
1246 AIDA::IProfile2D* createProfile2D(
const std::string& nameAndTitle,
1247 int nx,
double lowx,
double upx,
1248 int ny,
double lowy,
double upy )
override;
1251 int nx,
double lowx,
double upx,
1252 int ny,
double lowy,
double upy,
1253 double upper,
double lower );
1256 int nx,
double lowx,
double upx,
1257 int ny,
double lowy,
double upy,
1258 double upper,
double lower,
const std::string& )
override;
1260 AIDA::IProfile2D* createProfile2D(
const std::string& name,
1263 double upper,
double lower,
1266 AIDA::IProfile2D* createProfile2D(
const std::string& nameAndTitle,
1267 int nx,
double lowx,
double upx,
1268 int ny,
double lowy,
double upy,
1269 double upper,
double lower )
override;
1271 AIDA::IProfile2D* createCopy(
const std::string& full,
1272 const AIDA::IProfile2D& h )
override;
1275 const AIDA::IProfile2D& h );
1278 const AIDA::IProfile2D& h );
1281 const AIDA::IProfile2D& h );
1352 int write( Base* h,
const char* file_name )
const override;
1377 #endif // GAUDISVC_HISTOGRAMSVC_H AIDA::ICloud3D * createCloud3D(const std::string &, const std::string &, int, const std::string &) override
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.
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
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.
virtual StatusCode findObject(IRegistry *pDirectory, const std::string &path, DataObject *&pObject)=0
Find object identified by its directory entry.
virtual StatusCode unregisterObject(const std::string &fullPath)=0
Unregister object from the data store.
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...
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
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
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)
The trivial function to book 1D&2D profile histograms:
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)
virtual StatusCode registerObject(const std::string &fullPath, DataObject *pObject)=0
Register object with the data store.
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
virtual StatusCode retrieveObject(IRegistry *pDirectory, const std::string &path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode find(A1 a1, A2 a2, A3 *&a3)
HistogramSvc class definition.