00001
00002
00003 #ifndef GAUDISVC_HISTOGRAMSVC_H
00004 #define GAUDISVC_HISTOGRAMSVC_H 1
00005
00006
00007
00008
00009
00010 #include "GaudiKernel/System.h"
00011 #include "GaudiKernel/DataSvc.h"
00012 #include "GaudiKernel/IHistogramSvc.h"
00013 #include "GaudiKernel/GaudiException.h"
00014 #include "GaudiKernel/IRegistry.h"
00015 #include "GaudiKernel/HistoProperty.h"
00016
00017
00018
00020 #include "AIDA_visibility_hack.h"
00021 #include "AIDA/IHistogramFactory.h"
00022 #include "AIDA/IAnnotation.h"
00023
00024
00025
00026 #include "Axis.h"
00027 #include "GaudiPI.h"
00028 #include "TH1.h"
00029 #include "TH2.h"
00030 #include "TH3.h"
00031
00032 namespace AIDA {
00033 class ICloud1D;
00034 class ICloud2D;
00035 class ICloud3D;
00036 }
00037
00038
00039 template <class T> class SvcFactory;
00040 #define DBINS(x) int n##x, double low##x, double up##x
00041 #define BINS(x) n##x, low##x, up##x
00042 #define NOT_IMPLEMENTED { not_implemented(); return 0; }
00043
00049 class HistogramSvc : virtual public extends1<DataSvc, IHistogramSvc>,
00050 virtual public AIDA::IHistogramFactory
00051 {
00052
00053 private:
00054
00055 friend class SvcFactory<HistogramSvc>;
00056 typedef const std::pair<std::string,std::string>& STRPAIR;
00057 void not_implemented() const {
00058 MsgStream log( msgSvc(), name() );
00059 log << MSG::ERROR << "Sorry, not yet implemented..." << endmsg;
00060 }
00061 protected:
00062 typedef const std::string& CSTR;
00063 typedef std::vector<double> Edges;
00064 typedef std::vector<std::string> DBaseEntries;
00065 typedef AIDA::IHistogram1D H1D;
00066 typedef AIDA::IHistogram2D H2D;
00067 typedef AIDA::IHistogram3D H3D;
00068 typedef AIDA::IProfile1D P1D;
00069 typedef AIDA::IProfile2D P2D;
00070 typedef AIDA::IBaseHistogram Base;
00071 struct Helper {
00072 HistogramSvc* m_svc;
00073 Helper(HistogramSvc* p) : m_svc(p) {}
00074 template <class A1, class A3> StatusCode retrieve(A1 a1, A3*& a3) {
00075 DataObject* pObject = 0;
00076 StatusCode sc = m_svc->DataSvc::retrieveObject(a1,pObject);
00077 a3 = dynamic_cast<A3*>(pObject);
00078 return sc;
00079 }
00080 template <class A1, class A2, class A3> StatusCode retrieve(A1 a1, A2 a2, A3*& a3) {
00081 DataObject* pObject = 0;
00082 StatusCode sc = m_svc->DataSvc::retrieveObject(a1,a2,pObject);
00083 a3 = dynamic_cast<A3*>(pObject);
00084 return sc;
00085 }
00086 template <class A1, class A3> StatusCode find(A1 a1, A3*& a3) {
00087 DataObject* pObject = 0;
00088 StatusCode sc = m_svc->DataSvc::findObject(a1,pObject);
00089 a3 = dynamic_cast<A3*>(pObject);
00090 return sc;
00091 }
00092 template <class A1, class A2, class A3> StatusCode find(A1 a1, A2 a2, A3*& a3) {
00093 DataObject* pObject = 0;
00094 StatusCode sc = m_svc->DataSvc::findObject(a1,a2,pObject);
00095 a3 = dynamic_cast<A3*>(pObject);
00096 return sc;
00097 }
00098 template <class R, class S, class T1, class T2>
00099 static R* act(R* res,const S& b, void (T1::*pmf)(const T2*,Double_t), Double_t scale) {
00100 T1 *h1 = Gaudi::getRepresentation<R,T1>(*res);
00101 T1 *h2 = Gaudi::getRepresentation<R,T1>(b);
00102 if ( h1 && h2 ) {
00103 (h1->*pmf)(h2,scale);
00104 return res;
00105 }
00106 return 0;
00107 }
00108 template <class R, class S, class T1, class T2>
00109 static R* act(R* res,const S& b, Bool_t (T1::*pmf)(const T2*,Double_t), Double_t scale) {
00110 T1 *h1 = Gaudi::getRepresentation<R,T1>(*res);
00111 T1 *h2 = Gaudi::getRepresentation<R,T1>(b);
00112 if ( h1 && h2 ) {
00113 (h1->*pmf)(h2,scale);
00114 return res;
00115 }
00116 return 0;
00117 }
00118 template <class R, class S, class T1, class T2>
00119 static R* act(R* res,const S& b, void (T1::*pmf)(const T2*)) {
00120 T1 *h1 = Gaudi::getRepresentation<R,T1>(*res);
00121 T1 *h2 = Gaudi::getRepresentation<R,T1>(b);
00122 if ( h1 && h2 ) {
00123 (h1->*pmf)(h2);
00124 return res;
00125 }
00126 return 0;
00127 }
00128 template <class R, class S, class T1, class T2>
00129 static R* act(R* res,const S& b, Bool_t (T1::*pmf)(const T2*)) {
00130 T1 *h1 = Gaudi::getRepresentation<R,T1>(*res);
00131 T1 *h2 = Gaudi::getRepresentation<R,T1>(b);
00132 if ( h1 && h2 ) {
00133 (h1->*pmf)(h2);
00134 return res;
00135 }
00136 return 0;
00137 }
00138 };
00139
00140
00142 DBaseEntries m_input;
00143
00144 public:
00149 HistogramSvc(CSTR name, ISvcLocator* svc );
00150
00152 virtual ~HistogramSvc();
00153
00159 std::pair<std::string,std::string> i_splitPath(CSTR full);
00160
00164 StatusCode connectInput(CSTR ident);
00165 std::string _STR(int i);
00166
00167 template <class T> inline
00168 T* i_book(DataObject* pPar,CSTR rel,CSTR title,const std::pair<DataObject*,T*>& o) {
00169 if (o.first && registerObject(pPar, rel, (Base*)o.second).isSuccess())
00170 return o.second;
00171 delete o.first;
00172 throw GaudiException("Cannot book "+System::typeinfoName(typeid(T))+" "+title,
00173 "HistogramSvc",StatusCode::FAILURE);
00174 }
00175 template <class T> static DataObject* __cast(T* p) {
00176 DataObject* q = dynamic_cast<DataObject*>(p);
00177 if ( 0 == q && 0 != p ) {
00178 throw std::runtime_error("HistogramSvc: Unexpected object type.");
00179 }
00180 return q;
00181 }
00183 H2D* i_project(CSTR nameAndTitle,const H3D& h, CSTR dir);
00184
00185 public:
00187 virtual StatusCode initialize ();
00189 virtual StatusCode reinitialize ();
00191 virtual StatusCode finalize ();
00192
00194 virtual AIDA::IHistogramFactory* histogramFactory() { return this; }
00195
00196
00197
00198
00216 virtual H1D* book(CSTR par, CSTR rel, CSTR title, DBINS(x))
00217 { return book(createPath(par), rel, title, BINS(x)); }
00218 virtual H1D* book(CSTR par, int hID, CSTR title, DBINS(x))
00219 { return book(par, _STR(hID), title, BINS(x)); }
00220 virtual H1D* book(DataObject* pPar, int hID, CSTR title, DBINS(x))
00221 { return book(pPar, _STR(hID), title, BINS(x)); }
00222 virtual H1D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x)) ;
00223 virtual H1D* book(STRPAIR loc,CSTR title, DBINS(x))
00224 { return book(loc.first, loc.second, title, BINS(x)); }
00225 virtual H1D* book(CSTR full, CSTR title, DBINS(x))
00226 { return book(i_splitPath(full), title, BINS(x)); }
00227
00228
00229
00247 virtual P1D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x),CSTR opt)
00248 { return bookProf(createPath(par), rel, title, BINS(x),opt); }
00249 virtual P1D* bookProf(CSTR par, int hID, CSTR title, DBINS(x),CSTR opt )
00250 { return bookProf(par, _STR(hID), title, BINS(x),opt); }
00251 virtual P1D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x),CSTR opt )
00252 { return bookProf(pPar, _STR(hID), title, BINS(x),opt); }
00253 virtual P1D* bookProf(STRPAIR loc,CSTR title, DBINS(x),CSTR opt)
00254 { return bookProf(loc.first, loc.second, title, BINS(x),opt); }
00255 virtual P1D* bookProf(CSTR full, CSTR title, DBINS(x),CSTR opt)
00256 { return bookProf(i_splitPath(full), title, BINS(x),opt); }
00257 virtual P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x),CSTR opt)
00258 { return i_book(pPar,rel,title,Gaudi::createProf1D(title, BINS(x),0,0,opt)); }
00259
00260 virtual P1D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), double upper, double lower,CSTR opt)
00261 { return bookProf(createPath(par), rel, title, BINS(x), upper, lower , opt); }
00262 virtual P1D* bookProf(CSTR par, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
00263 { return bookProf(par, _STR(hID), title, BINS(x), upper, lower, opt ); }
00264 virtual P1D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
00265 { return bookProf(pPar, _STR(hID), title, BINS(x), upper, lower, opt); }
00266 virtual P1D* bookProf(STRPAIR loc,CSTR title, DBINS(x), double upper, double lower, CSTR opt)
00267 { return bookProf(loc.first, loc.second, title, BINS(x), upper, lower,opt); }
00268 virtual P1D* bookProf(CSTR full, CSTR title, DBINS(x), double upper, double lower, CSTR opt )
00269 { return bookProf(i_splitPath(full), title, BINS(x), upper, lower , opt ); }
00270 virtual P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), double upper, double lower, CSTR opt)
00271 { return i_book(pPar,rel,title,Gaudi::createProf1D(title, BINS(x), upper, lower, opt)); }
00272
00273
00274
00289 virtual H1D* book(CSTR par, int hID, CSTR title, Edges e)
00290 { return book(par, _STR(hID), title, e); }
00291 virtual H1D* book(DataObject* pPar, int hID, CSTR title, Edges e)
00292 { return book(pPar, _STR(hID), title, e); }
00293 virtual H1D* book(CSTR par, CSTR rel, CSTR title, Edges e )
00294 { return book(createPath(par), rel, title, e); }
00295 virtual H1D* book(STRPAIR loc,CSTR title, Edges e )
00296 { return book(loc.first, loc.second, title, e); }
00297 virtual H1D* book(CSTR full, CSTR title, Edges e )
00298 { return book(i_splitPath(full), title, e); }
00299 virtual H1D* book(DataObject* pPar, CSTR rel, CSTR title, Edges e )
00300 { return i_book(pPar, rel, title, Gaudi::createH1D(title, e)); }
00301
00302
00303
00304
00319 virtual P1D* bookProf(CSTR full, CSTR title, Edges e )
00320 { return bookProf(i_splitPath(full), title, e); }
00321 virtual P1D* bookProf(CSTR par, CSTR rel, CSTR title, Edges e )
00322 { return bookProf(createPath(par), rel, title, e); }
00323 virtual P1D* bookProf(CSTR par, int hID, CSTR title, Edges e )
00324 { return bookProf(par, _STR(hID), title, e); }
00325 virtual P1D* bookProf(DataObject* pPar, int hID, CSTR title, Edges e )
00326 { return bookProf(pPar, _STR(hID), title, e); }
00327 virtual P1D* bookProf(STRPAIR loc,CSTR title, Edges e)
00328 { return bookProf(loc.first, loc.second, title, e); }
00329 virtual P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges e )
00330 { return i_book(pPar,rel,title,Gaudi::createProf1D(title, e, 0, 0)); }
00331
00332 virtual P1D* bookProf(CSTR full, CSTR title, Edges e, double upper, double lower)
00333 { return bookProf(i_splitPath(full), title, e, upper, lower); }
00334 virtual P1D* bookProf(CSTR par, CSTR rel, CSTR title, Edges e, double upper, double lower)
00335 { return bookProf(createPath(par), rel, title, e, upper, lower); }
00336 virtual P1D* bookProf(CSTR par, int hID, CSTR title, Edges e, double upper, double lower)
00337 { return bookProf(par, _STR(hID), title, e, upper, lower); }
00338 virtual P1D* bookProf(DataObject* pPar, int hID, CSTR title, Edges e, double upper, double lower)
00339 { return bookProf(pPar, _STR(hID), title, e, upper, lower); }
00340 virtual P1D* bookProf(STRPAIR loc,CSTR title, Edges e, double upper, double lower)
00341 { return bookProf(loc.first, loc.second, title, e, upper, lower); }
00342 virtual P1D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges e, double upper, double lower)
00343 { return i_book(pPar,rel,title,Gaudi::createProf1D(title, e, upper, lower));}
00344
00345
00346
00364 virtual H2D* book(CSTR full, CSTR title, DBINS(x), DBINS(y))
00365 { return book(i_splitPath(full), title, BINS(x),BINS(y)); }
00366 virtual H2D* book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y))
00367 { return book(createPath(par), rel, title, BINS(x),BINS(y)); }
00368 virtual H2D* book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y))
00369 { return book(par,_STR(hID), title, BINS(x),BINS(y)); }
00370 virtual H2D* book(STRPAIR loc,CSTR title, DBINS(x), DBINS(y))
00371 { return book(loc.first, loc.second, title, BINS(x), BINS(y)); }
00372 virtual H2D* book(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y))
00373 { return book(pPar,_STR(hID), title, BINS(x),BINS(y)); }
00374 virtual H2D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y))
00375 { return i_book(pPar,rel,title,Gaudi::createH2D(title, BINS(x),BINS(y)));}
00376
00377
00378
00396 virtual P2D* bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
00397 { return bookProf(i_splitPath(full), title, BINS(x),BINS(y), upper, lower); }
00398 virtual P2D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
00399 { return bookProf(createPath(par), rel, title, BINS(x),BINS(y), upper, lower); }
00400 virtual P2D* bookProf(STRPAIR loc,CSTR title, DBINS(x), DBINS(y), double upper, double lower)
00401 { return bookProf(loc.first, loc.second, title, BINS(x), BINS(y), upper, lower); }
00402 virtual P2D* bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
00403 { return bookProf(par, _STR(hID), title, BINS(x),BINS(y), upper, lower); }
00404 virtual P2D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
00405 { return bookProf(pPar,_STR(hID), title, BINS(x),BINS(y), upper, lower); }
00406 virtual P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), double upper, double lower)
00407 { return i_book(pPar,rel,title,Gaudi::createProf2D(title, BINS(x),BINS(y), upper, lower)); }
00408
00409 virtual P2D* bookProf(CSTR full, CSTR title, DBINS(x), DBINS(y))
00410 { return bookProf(i_splitPath(full), title, BINS(x),BINS(y)); }
00411 virtual P2D* bookProf(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y))
00412 { return bookProf(createPath(par), rel, title, BINS(x),BINS(y)); }
00413 virtual P2D* bookProf(STRPAIR loc,CSTR title, DBINS(x), DBINS(y))
00414 { return bookProf(loc.first, loc.second, title, BINS(x), BINS(y)); }
00415 virtual P2D* bookProf(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y))
00416 { return bookProf(par, _STR(hID), title, BINS(x),BINS(y)); }
00417 virtual P2D* bookProf(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y))
00418 { return bookProf(pPar,_STR(hID), title, BINS(x),BINS(y)); }
00419 virtual P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y))
00420 { return i_book(pPar,rel,title,Gaudi::createProf2D(title, BINS(x),BINS(y),0,0));}
00421
00422
00423
00438 virtual H2D* book(CSTR full, CSTR title, Edges x, Edges y )
00439 { return book(i_splitPath(full), title, x, y); }
00440 virtual H2D* book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y )
00441 { return book(createPath(par), rel, title, x, y); }
00442 virtual H2D* book(CSTR par, int hID, CSTR title, Edges x, Edges y )
00443 { return book(par, _STR(hID), title, x, y); }
00444 virtual H2D* book(STRPAIR loc,CSTR title, Edges x, Edges y )
00445 { return book(loc.first, loc.second, title, x, y); }
00446 virtual H2D* book(DataObject* pPar, int hID, CSTR title, Edges x, Edges y )
00447 { return book(pPar, _STR(hID), title, x, y); }
00448 virtual H2D* book(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y )
00449 { return i_book(pPar, rel, title, Gaudi::createH2D(title, x,y)); }
00450
00451
00452
00467 virtual P2D* bookProf(CSTR full, CSTR title, Edges x, Edges y )
00468 { return bookProf(i_splitPath(full), title, x, y); }
00469 virtual P2D* bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y )
00470 { return bookProf(createPath(par), rel, title, x, y); }
00471 virtual P2D* bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y )
00472 { return bookProf(par, _STR(hID), title, x, y); }
00473 virtual P2D* bookProf(DataObject* pPar, int hID, CSTR title, Edges x, Edges y )
00474 { return bookProf(pPar, _STR(hID), title, x, y); }
00475 virtual P2D* bookProf(STRPAIR loc,CSTR title, Edges x, Edges y )
00476 { return bookProf(loc.first, loc.second, title, x, y); }
00477 virtual P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y )
00478 { return i_book(pPar, rel, title, Gaudi::createProf2D(title,x,y,0,0)); }
00479
00480 virtual P2D* bookProf(CSTR full, CSTR title, Edges x, Edges y, double upper, double lower )
00481 { return bookProf(i_splitPath(full), title, x, y, upper, lower); }
00482 virtual P2D* bookProf(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower )
00483 { return bookProf(createPath(par), rel, title, x, y, upper, lower); }
00484 virtual P2D* bookProf(CSTR par, int hID, CSTR title, Edges x, Edges y, double upper, double lower )
00485 { return bookProf(par, _STR(hID), title, x, y, upper, lower); }
00486 virtual P2D* bookProf(DataObject* pPar, int hID, CSTR title, Edges x, Edges y, double upper, double lower )
00487 { return bookProf(pPar, _STR(hID), title, x, y, upper, lower); }
00488 virtual P2D* bookProf(STRPAIR loc,CSTR title, Edges x, Edges y, double upper, double lower )
00489 { return bookProf(loc.first, loc.second, title, x, y, upper, lower); }
00490 virtual P2D* bookProf(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y, double upper, double lower )
00491 { return i_book(pPar, rel, title, Gaudi::createProf2D(title,x,y, upper, lower)); }
00492
00493
00494
00512 virtual H3D* book(CSTR full, CSTR title, DBINS(x), DBINS(y), DBINS(z))
00513 { return book(i_splitPath(full),title,BINS(x),BINS(y),BINS(z)); }
00514 virtual H3D* book(CSTR par, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z))
00515 { return book(createPath(par),rel,title,BINS(x),BINS(y),BINS(z)); }
00516 virtual H3D* book(CSTR par, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z))
00517 { return book(par,_STR(hID),title,BINS(x),BINS(y),BINS(z)); }
00518 virtual H3D* book(DataObject* pPar, int hID, CSTR title, DBINS(x), DBINS(y), DBINS(z))
00519 { return book(pPar,_STR(hID), title, BINS(x),BINS(y),BINS(z)); }
00520 virtual H3D* book(STRPAIR loc,CSTR title, DBINS(x), DBINS(y), DBINS(z))
00521 { return book(loc.first, loc.second, title, BINS(x),BINS(y),BINS(z)); }
00522 virtual H3D* book(DataObject* pPar, CSTR rel, CSTR title, DBINS(x), DBINS(y), DBINS(z))
00523 { return i_book(pPar, rel, title, Gaudi::createH3D(title,BINS(x),BINS(y),BINS(z)));}
00524
00525
00526
00543 virtual H3D* book(CSTR full, CSTR title, Edges x, Edges y, Edges z)
00544 { return book(i_splitPath(full), title, x, y, z); }
00545 virtual H3D* book(CSTR par, CSTR rel, CSTR title, Edges x, Edges y, Edges z)
00546 { return book(createPath(par), rel, title, x, y, z); }
00547 virtual H3D* book(CSTR par, int hID, CSTR title, Edges x, Edges y, Edges z)
00548 { return book(par,_STR(hID), title, x, y, z); }
00549 virtual H3D* book(DataObject* pPar, int hID, CSTR title, Edges x, Edges y, Edges z)
00550 { return book(pPar,_STR(hID), title, x, y, z); }
00551 virtual H3D* book(STRPAIR loc,CSTR title, Edges x, Edges y, Edges z)
00552 { return book(loc.first, loc.second, title, x,y,z); }
00553 virtual H3D* book(DataObject* pPar, CSTR rel, CSTR title, Edges x, Edges y, Edges z)
00554 { return i_book(pPar, rel, title, Gaudi::createH3D(title,x,y,z)); }
00555
00556
00557
00558
00559
00560
00561
00562 virtual StatusCode registerObject(CSTR parent, CSTR rel, Base* obj )
00563 { return registerObject(createPath(parent), rel, obj); }
00564 virtual StatusCode registerObject(CSTR parent, int item, Base* obj )
00565 { return registerObject(parent, _STR(item), obj); }
00566 virtual StatusCode registerObject(Base* pPar, CSTR rel, Base* obj )
00567 { return registerObject(__cast(pPar), rel, obj); }
00568 virtual StatusCode registerObject(DataObject* pPar, int item, Base* obj )
00569 { return registerObject(pPar, _STR(item), obj); }
00570 virtual StatusCode registerObject(Base* pPar, int item, Base* obj )
00571 { return registerObject(__cast(pPar), item, obj); }
00572 virtual StatusCode registerObject(CSTR full, Base* obj );
00573 virtual StatusCode registerObject(DataObject* pPar, CSTR rel, Base* obj );
00574
00575
00576
00577 virtual StatusCode unregisterObject(Base* obj )
00578 { return DataSvc::unregisterObject(__cast(obj)); }
00579 virtual StatusCode unregisterObject(Base* obj, CSTR objectPath)
00580 { return DataSvc::unregisterObject(__cast(obj),objectPath); }
00581 virtual StatusCode unregisterObject(Base* obj, int item )
00582 { return DataSvc::unregisterObject(__cast(obj),item); }
00583
00584
00585
00586 virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, H1D*& obj)
00587 { return Helper(this).retrieve(pReg,path,obj); }
00588 virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, P1D*& obj)
00589 { return Helper(this).retrieve(pReg,path,obj); }
00590 virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, H2D*& obj)
00591 { return Helper(this).retrieve(pReg,path,obj); }
00592 virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, P2D*& obj)
00593 { return Helper(this).retrieve(pReg,path,obj); }
00594 virtual StatusCode retrieveObject(IRegistry* pReg, CSTR path, H3D*& obj)
00595 { return Helper(this).retrieve(pReg,path,obj); }
00596
00597 virtual StatusCode retrieveObject(CSTR full,P1D*& obj)
00598 { return Helper(this).retrieve(full,obj); }
00599 virtual StatusCode retrieveObject(CSTR full,P2D*& obj)
00600 { return Helper(this).retrieve(full,obj); }
00601 virtual StatusCode retrieveObject(CSTR full,H1D*& obj)
00602 { return Helper(this).retrieve(full,obj); }
00603 virtual StatusCode retrieveObject(CSTR full,H2D*& obj)
00604 { return Helper(this).retrieve(full,obj); }
00605 virtual StatusCode retrieveObject(CSTR full,H3D*& obj)
00606 { return Helper(this).retrieve(full,obj); }
00607
00608 virtual StatusCode retrieveObject(CSTR parent,CSTR rel,P1D*& obj)
00609 { return Helper(this).retrieve(parent,rel,obj); }
00610 virtual StatusCode retrieveObject(CSTR parent,CSTR rel,P2D*& obj)
00611 { return Helper(this).retrieve(parent,rel,obj); }
00612 virtual StatusCode retrieveObject(CSTR parent,CSTR rel,H1D*& obj)
00613 { return Helper(this).retrieve(parent,rel,obj); }
00614 virtual StatusCode retrieveObject(CSTR parent,CSTR rel,H2D*& obj)
00615 { return Helper(this).retrieve(parent,rel,obj); }
00616 virtual StatusCode retrieveObject(CSTR parent,CSTR rel,H3D*& obj)
00617 { return Helper(this).retrieve(parent,rel,obj); }
00618
00619 virtual StatusCode retrieveObject(CSTR parent,int item,P1D*& obj)
00620 { return Helper(this).retrieve(parent,item,obj); }
00621 virtual StatusCode retrieveObject(CSTR parent,int item,P2D*& obj)
00622 { return Helper(this).retrieve(parent,item,obj); }
00623 virtual StatusCode retrieveObject(CSTR parent,int item,H1D*& obj)
00624 { return Helper(this).retrieve(parent,item,obj); }
00625 virtual StatusCode retrieveObject(CSTR parent,int item,H2D*& obj)
00626 { return Helper(this).retrieve(parent,item,obj); }
00627 virtual StatusCode retrieveObject(CSTR parent,int item,H3D*& obj)
00628 { return Helper(this).retrieve(parent,item,obj); }
00629
00630 virtual StatusCode retrieveObject(DataObject* par,CSTR item,P1D*& obj)
00631 { return Helper(this).retrieve(par,item,obj); }
00632 virtual StatusCode retrieveObject(DataObject* par,CSTR item,P2D*& obj)
00633 { return Helper(this).retrieve(par,item,obj); }
00634 virtual StatusCode retrieveObject(DataObject* par,CSTR item,H1D*& obj)
00635 { return Helper(this).retrieve(par,item,obj); }
00636 virtual StatusCode retrieveObject(DataObject* par,CSTR item,H2D*& obj)
00637 { return Helper(this).retrieve(par,item,obj); }
00638 virtual StatusCode retrieveObject(DataObject* par,CSTR item,H3D*& obj)
00639 { return Helper(this).retrieve(par,item,obj); }
00640
00641 virtual StatusCode retrieveObject(DataObject* par,int item,P1D*& obj)
00642 { return Helper(this).retrieve(par,item,obj); }
00643 virtual StatusCode retrieveObject(DataObject* par,int item,P2D*& obj)
00644 { return Helper(this).retrieve(par,item,obj); }
00645 virtual StatusCode retrieveObject(DataObject* par,int item,H1D*& obj)
00646 { return Helper(this).retrieve(par,item,obj); }
00647 virtual StatusCode retrieveObject(DataObject* par,int item,H2D*& obj)
00648 { return Helper(this).retrieve(par,item,obj); }
00649 virtual StatusCode retrieveObject(DataObject* par,int item,H3D*& obj)
00650 { return Helper(this).retrieve(par,item,obj); }
00651
00652 virtual StatusCode retrieveObject(Base* par,int item,P1D*& obj)
00653 { return Helper(this).retrieve(__cast(par),item,obj); }
00654 virtual StatusCode retrieveObject(Base* par,int item,P2D*& obj)
00655 { return Helper(this).retrieve(__cast(par),item,obj); }
00656 virtual StatusCode retrieveObject(Base* par,int item,H1D*& obj)
00657 { return Helper(this).retrieve(__cast(par),item,obj); }
00658 virtual StatusCode retrieveObject(Base* par,int item,H2D*& obj)
00659 { return Helper(this).retrieve(__cast(par),item,obj); }
00660 virtual StatusCode retrieveObject(Base* par,int item,H3D*& obj)
00661 { return Helper(this).retrieve(__cast(par),item,obj); }
00662
00663 virtual StatusCode retrieveObject(Base* par,CSTR item,P1D*& obj)
00664 { return Helper(this).retrieve(__cast(par),item,obj); }
00665 virtual StatusCode retrieveObject(Base* par,CSTR item,P2D*& obj)
00666 { return Helper(this).retrieve(__cast(par),item,obj); }
00667 virtual StatusCode retrieveObject(Base* par,CSTR item,H1D*& obj)
00668 { return Helper(this).retrieve(__cast(par),item,obj); }
00669 virtual StatusCode retrieveObject(Base* par,CSTR item,H2D*& obj)
00670 { return Helper(this).retrieve(__cast(par),item,obj); }
00671 virtual StatusCode retrieveObject(Base* par,CSTR item,H3D*& obj)
00672 { return Helper(this).retrieve(__cast(par),item,obj); }
00673
00674
00675
00676
00677
00678
00679
00680
00681 virtual StatusCode findObject(IRegistry* pReg,CSTR path,P1D*& obj)
00682 { return Helper(this).find(pReg,path,obj); }
00683 virtual StatusCode findObject(IRegistry* pReg,CSTR path,P2D*& obj)
00684 { return Helper(this).find(pReg,path,obj); }
00685 virtual StatusCode findObject(IRegistry* pReg,CSTR path,H1D*& obj)
00686 { return Helper(this).find(pReg,path,obj); }
00687 virtual StatusCode findObject(IRegistry* pReg,CSTR path,H2D*& obj)
00688 { return Helper(this).find(pReg,path,obj); }
00689 virtual StatusCode findObject(IRegistry* pReg,CSTR path,H3D*& obj)
00690 { return Helper(this).find(pReg,path,obj); }
00691
00692 virtual StatusCode findObject(CSTR full,P1D*& obj)
00693 { return Helper(this).find(full,obj); }
00694 virtual StatusCode findObject(CSTR full,P2D*& obj)
00695 { return Helper(this).find(full,obj); }
00696 virtual StatusCode findObject(CSTR full,H1D*& obj)
00697 { return Helper(this).find(full,obj); }
00698 virtual StatusCode findObject(CSTR full,H2D*& obj)
00699 { return Helper(this).find(full,obj); }
00700 virtual StatusCode findObject(CSTR full,H3D*& obj)
00701 { return Helper(this).find(full,obj); }
00702
00703 virtual StatusCode findObject(CSTR par,CSTR rel,P1D*& obj)
00704 { return Helper(this).find(par,rel,obj); }
00705 virtual StatusCode findObject(CSTR par,CSTR rel,P2D*& obj)
00706 { return Helper(this).find(par,rel,obj); }
00707 virtual StatusCode findObject(CSTR par,CSTR rel,H1D*& obj)
00708 { return Helper(this).find(par,rel,obj); }
00709 virtual StatusCode findObject(CSTR par,CSTR rel,H2D*& obj)
00710 { return Helper(this).find(par,rel,obj); }
00711 virtual StatusCode findObject(CSTR par,CSTR rel,H3D*& obj)
00712 { return Helper(this).find(par,rel,obj); }
00713
00714 virtual StatusCode findObject(CSTR par,int item,P1D*& obj)
00715 { return Helper(this).find(par,item,obj); }
00716 virtual StatusCode findObject(CSTR par,int item,P2D*& obj)
00717 { return Helper(this).find(par,item,obj); }
00718 virtual StatusCode findObject(CSTR par,int item,H1D*& obj)
00719 { return Helper(this).find(par,item,obj); }
00720 virtual StatusCode findObject(CSTR par,int item,H2D*& obj)
00721 { return Helper(this).find(par,item,obj); }
00722 virtual StatusCode findObject(CSTR par,int item,H3D*& obj)
00723 { return Helper(this).find(par,item,obj); }
00724
00725 virtual StatusCode findObject(DataObject* par,int item,P1D*& obj)
00726 { return Helper(this).find(par,item,obj); }
00727 virtual StatusCode findObject(DataObject* par,int item,P2D*& obj)
00728 { return Helper(this).find(par,item,obj); }
00729 virtual StatusCode findObject(DataObject* par,int item,H1D*& obj)
00730 { return Helper(this).find(par,item,obj); }
00731 virtual StatusCode findObject(DataObject* par,int item,H2D*& obj)
00732 { return Helper(this).find(par,item,obj); }
00733 virtual StatusCode findObject(DataObject* par,int item,H3D*& obj)
00734 { return Helper(this).find(par,item,obj); }
00735
00736 virtual StatusCode findObject(DataObject* par,CSTR item,P1D*& obj)
00737 { return Helper(this).find(par,item,obj); }
00738 virtual StatusCode findObject(DataObject* par,CSTR item,P2D*& obj)
00739 { return Helper(this).find(par,item,obj); }
00740 virtual StatusCode findObject(DataObject* par,CSTR item,H1D*& obj)
00741 { return Helper(this).find(par,item,obj); }
00742 virtual StatusCode findObject(DataObject* par,CSTR item,H2D*& obj)
00743 { return Helper(this).find(par,item,obj); }
00744 virtual StatusCode findObject(DataObject* par,CSTR item,H3D*& obj)
00745 { return Helper(this).find(par,item,obj); }
00746
00747 virtual StatusCode findObject(Base* par,int item,P1D*& obj)
00748 { return Helper(this).find(__cast(par),item,obj); }
00749 virtual StatusCode findObject(Base* par,int item,P2D*& obj)
00750 { return Helper(this).find(__cast(par),item,obj); }
00751 virtual StatusCode findObject(Base* par,int item,H1D*& obj)
00752 { return Helper(this).find(__cast(par),item,obj); }
00753 virtual StatusCode findObject(Base* par,int item,H2D*& obj)
00754 { return Helper(this).find(__cast(par),item,obj); }
00755 virtual StatusCode findObject(Base* par,int item,H3D*& obj)
00756 { return Helper(this).find(__cast(par),item,obj); }
00757
00758 virtual StatusCode findObject(Base* par,CSTR item,P1D*& obj)
00759 { return Helper(this).find(__cast(par),item,obj); }
00760 virtual StatusCode findObject(Base* par,CSTR item,P2D*& obj)
00761 { return Helper(this).find(__cast(par),item,obj); }
00762 virtual StatusCode findObject(Base* par,CSTR item,H1D*& obj)
00763 { return Helper(this).find(__cast(par),item,obj); }
00764 virtual StatusCode findObject(Base* par,CSTR item,H2D*& obj)
00765 { return Helper(this).find(__cast(par),item,obj); }
00766 virtual StatusCode findObject(Base* par,CSTR item,H3D*& obj)
00767 { return Helper(this).find(__cast(par),item,obj); }
00768
00769
00770
00771
00772 virtual H1D* projectionX(CSTR name,const H2D& h)
00773 { return sliceX( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
00774 virtual H1D* projectionY(CSTR name,const H2D& h)
00775 { return sliceY( name, h, IAxis::UNDERFLOW_BIN, IAxis::OVERFLOW_BIN); }
00776 virtual H1D* sliceX(CSTR name,const H2D& h,int indexY)
00777 { return sliceX( name, h, indexY, indexY ); }
00778 virtual H1D* sliceY(CSTR name,const H2D& h,int indexX)
00779 { return sliceY( name, h, indexX, indexX ); }
00780 virtual H1D* sliceX(CSTR name,const H2D& h,int indexY1,int indexY2);
00781 virtual H1D* sliceY(CSTR name,const H2D& h,int indexX1,int indexX2);
00782
00783 bool destroy( IBaseHistogram* hist);
00784
00785 H1D* add(CSTR nameAndTitle, const H1D& a, const H1D& b)
00786 { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Add, 1.); }
00787 H1D* subtract(CSTR nameAndTitle, const H1D& a, const H1D& b)
00788 { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Add,-1.); }
00789 H1D* multiply(CSTR nameAndTitle, const H1D& a, const H1D& b)
00790 { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Multiply); }
00791 H1D* divide(CSTR nameAndTitle, const H1D& a, const H1D& b)
00792 { return Helper::act(createCopy(nameAndTitle,a),b,&TH1::Divide); }
00793
00794 H2D* add(CSTR nameAndTitle, const H2D& a, const H2D& b)
00795 { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Add, 1.); }
00796 H2D* subtract(CSTR nameAndTitle, const H2D& a, const H2D& b)
00797 { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Add,-1.); }
00798 H2D* multiply(CSTR nameAndTitle, const H2D& a, const H2D& b)
00799 { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Multiply); }
00800 H2D* divide(CSTR nameAndTitle, const H2D& a, const H2D& b)
00801 { return Helper::act(createCopy(nameAndTitle,a),b,&TH2D::Divide); }
00802
00803 H3D* add(CSTR nameAndTitle, const H3D& a, const H3D& b)
00804 { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Add, 1.); }
00805 H3D* subtract(CSTR nameAndTitle, const H3D& a, const H3D& b)
00806 { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Add,-1.); }
00807 H3D* multiply(CSTR nameAndTitle, const H3D& a, const H3D& b)
00808 { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Multiply); }
00809 H3D* divide(CSTR nameAndTitle, const H3D& a, const H3D& b)
00810 { return Helper::act(createCopy(nameAndTitle,a),b,&TH3D::Divide); }
00811
00812 H2D* projectionXY(CSTR nameAndTitle,const H3D& h)
00813 { return i_project(nameAndTitle,h,"xy"); }
00814 H2D* projectionXZ(CSTR nameAndTitle,const H3D& h)
00815 { return i_project(nameAndTitle,h,"xz"); }
00816 H2D* projectionYZ(CSTR nameAndTitle,const H3D& h)
00817 { return i_project(nameAndTitle,h,"yz"); }
00818 H2D* sliceXY(CSTR ,const H3D& ,int ,int ) NOT_IMPLEMENTED
00819 H2D* sliceXZ(CSTR ,const H3D& ,int ,int ) NOT_IMPLEMENTED
00820 H2D* sliceYZ(CSTR ,const H3D& ,int ,int ) NOT_IMPLEMENTED
00821
00822
00823 H1D* createHistogram1D(CSTR name,CSTR tit,DBINS(x))
00824 { return book( name, tit, BINS(x)); }
00825 H1D* createHistogram1D(CSTR name,CSTR tit,DBINS(x),CSTR )
00826 { return book( name, tit, BINS(x)); }
00827 H1D* createHistogram1D(CSTR name,CSTR title,const Edges& x,CSTR )
00828 { return book(name, title, x); }
00829 H1D* createHistogram1D(CSTR nameAndTitle, DBINS(x))
00830 { return book(nameAndTitle, nameAndTitle, BINS(x)); }
00831 H1D* createCopy(CSTR full, const H1D& h)
00832 { return createCopy(i_splitPath(full), h); }
00833 H1D* createCopy(CSTR par, CSTR rel, const H1D& h)
00834 { return createCopy(createPath(par), rel, h); }
00835 H1D* createCopy(STRPAIR loc, const H1D& h)
00836 { return createCopy(loc.first, loc.second, h); }
00837 H1D* createCopy(DataObject* pPar, CSTR rel, const H1D& h)
00838 { return i_book(pPar, rel, h.title(), Gaudi::createH1D(h)); }
00839
00840 H2D* createHistogram2D(CSTR name,CSTR tit,DBINS(x),DBINS(y))
00841 { return book( name, tit, BINS(x), BINS(y)); }
00842 H2D* createHistogram2D(CSTR name,CSTR tit,DBINS(x),DBINS(y),CSTR )
00843 { return book( name, tit, BINS(x), BINS(y)); }
00844 H2D* createHistogram2D(CSTR name,CSTR title,const Edges& x,const Edges& y, CSTR )
00845 { return book(name, title, x, y); }
00846 H2D* createHistogram2D(CSTR nameAndTitle, DBINS(x), DBINS(y))
00847 { return book(nameAndTitle, nameAndTitle, BINS(x), BINS(y)); }
00848 H2D* createCopy(CSTR full, const H2D& h)
00849 { return createCopy(i_splitPath(full), h); }
00850 H2D* createCopy(CSTR par, CSTR rel, const H2D& h)
00851 { return createCopy(createPath(par), rel, h); }
00852 H2D* createCopy(STRPAIR loc, const H2D& h)
00853 { return createCopy(loc.first, loc.second, h); }
00854 H2D* createCopy(DataObject* pPar, CSTR rel, const H2D& h)
00855 { return i_book(pPar, rel, h.title(), Gaudi::createH2D(h)); }
00856
00857 H3D* createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z))
00858 { return book( name, tit, BINS(x), BINS(y), BINS(z)); }
00859 H3D* createHistogram3D(CSTR name, CSTR tit, DBINS(x), DBINS(y), DBINS(z), CSTR )
00860 { return book( name, tit, BINS(x), BINS(y), BINS(z)); }
00861 H3D* createHistogram3D(CSTR name, CSTR title,const Edges& x,const Edges& y,const Edges& z,CSTR )
00862 { return book(name, title, x, y, z); }
00863 H3D* createHistogram3D(CSTR nameAndTitle, DBINS(x), DBINS(y), DBINS(z))
00864 { return book(nameAndTitle, nameAndTitle, BINS(x), BINS(y), BINS(z)); }
00865 H3D* createCopy(CSTR full, const H3D& h)
00866 { return createCopy(i_splitPath(full), h); }
00867 H3D* createCopy(CSTR par, CSTR rel, const H3D& h)
00868 { return createCopy(createPath(par), rel, h); }
00869 H3D* createCopy(STRPAIR loc, const H3D& h)
00870 { return createCopy(loc.first, loc.second, h); }
00871 H3D* createCopy(DataObject* pPar, CSTR rel, const H3D& h)
00872 { return i_book(pPar, rel, h.title(), Gaudi::createH3D(h)); }
00873
00874
00875
00876 P1D* createProfile1D(CSTR name,CSTR tit,DBINS(x),CSTR opt )
00877 { return bookProf( name, tit, BINS(x) , opt ); }
00878 P1D* createProfile1D(CSTR name,CSTR tit,DBINS(x),double upper, double lower , CSTR opt )
00879 { return bookProf( name, tit, BINS(x), upper, lower , opt ); }
00880 P1D* createProfile1D(CSTR name,CSTR title,const Edges& x,CSTR )
00881 { return bookProf(name, title, x ); }
00882 P1D* createProfile1D(CSTR name,CSTR title,const Edges& x,double upper, double lower, CSTR )
00883 { return bookProf(name, title, x, upper, lower ); }
00884
00885 P1D* createProfile1D(CSTR nametit,DBINS(x))
00886 { return bookProf( nametit, nametit, BINS(x) , "s"); }
00887 P1D* createProfile1D(CSTR nametit,DBINS(x),double upper, double lower )
00888 { return bookProf( nametit, nametit, BINS(x), upper, lower , "s"); }
00889
00890
00891 P1D* createCopy(CSTR full, const P1D& h)
00892 { return createCopy(i_splitPath(full), h); }
00893 P1D* createCopy(CSTR par, CSTR rel, const P1D& h)
00894 { return createCopy(createPath(par), rel, h); }
00895 P1D* createCopy(STRPAIR loc, const P1D& h)
00896 { return createCopy(loc.first, loc.second, h); }
00897 P1D* createCopy(DataObject* pPar, CSTR rel, const P1D& h)
00898 { return i_book(pPar, rel, h.title(), Gaudi::createProf1D(h)); }
00899
00900 P2D* createProfile2D(CSTR name,CSTR tit,DBINS(x),DBINS(y))
00901 { return bookProf( name, tit, BINS(x), BINS(y)); }
00902 P2D* createProfile2D(CSTR name,CSTR tit,DBINS(x),DBINS(y),CSTR )
00903 { return bookProf( name, tit, BINS(x), BINS(y)); }
00904 P2D* createProfile2D(CSTR name,CSTR title,const Edges& x,const Edges& y, CSTR )
00905 { return bookProf(name, title, x, y); }
00906 P2D* createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y))
00907 { return bookProf(nameAndTitle, nameAndTitle, BINS(x), BINS(y)); }
00908
00909 P2D* createProfile2D(CSTR name,CSTR tit,DBINS(x),DBINS(y),double upper, double lower)
00910 { return bookProf( name, tit, BINS(x), BINS(y), upper, lower); }
00911 P2D* createProfile2D(CSTR name,CSTR tit,DBINS(x),DBINS(y),double upper, double lower,CSTR )
00912 { return bookProf( name, tit, BINS(x), BINS(y), upper, lower); }
00913 P2D* createProfile2D(CSTR name,CSTR title,const Edges& x,const Edges& y,double upper, double lower, CSTR )
00914 { return bookProf(name, title, x, y, upper, lower); }
00915 P2D* createProfile2D(CSTR nameAndTitle, DBINS(x), DBINS(y),double upper, double lower)
00916 { return bookProf(nameAndTitle, nameAndTitle, BINS(x), BINS(y), upper, lower);}
00917
00918 P2D* createCopy(CSTR full, const P2D& h)
00919 { return createCopy(i_splitPath(full), h); }
00920 P2D* createCopy(CSTR par, CSTR rel, const P2D& h)
00921 { return createCopy(createPath(par), rel, h); }
00922 P2D* createCopy(STRPAIR loc, const P2D& h)
00923 { return createCopy(loc.first, loc.second, h); }
00924 P2D* createCopy(DataObject* pPar, CSTR rel, const P2D& h)
00925 { return i_book(pPar, rel, h.title(), Gaudi::createProf2D(h)); }
00926
00927 AIDA::ICloud1D* createCloud1D(CSTR, CSTR, int, CSTR) NOT_IMPLEMENTED
00928 AIDA::ICloud1D* createCloud1D(CSTR) NOT_IMPLEMENTED
00929 AIDA::ICloud1D* createCopy(CSTR, const AIDA::ICloud1D&) NOT_IMPLEMENTED
00930 AIDA::ICloud2D* createCloud2D(CSTR, CSTR, int, CSTR) NOT_IMPLEMENTED
00931 AIDA::ICloud2D* createCloud2D(CSTR) NOT_IMPLEMENTED
00932 AIDA::ICloud2D* createCopy(CSTR, const AIDA::ICloud2D&) NOT_IMPLEMENTED
00933 AIDA::ICloud3D* createCloud3D(CSTR, CSTR, int, CSTR) NOT_IMPLEMENTED
00934 AIDA::ICloud3D* createCloud3D(CSTR) NOT_IMPLEMENTED
00935 AIDA::ICloud3D* createCopy(CSTR, const AIDA::ICloud3D&) NOT_IMPLEMENTED
00936
00938 using IDataProviderSvc::registerObject;
00939 using IDataProviderSvc::unregisterObject;
00940 using IDataProviderSvc::retrieveObject;
00941 using IDataProviderSvc::findObject;
00942
00944 virtual std::ostream& print(Base* h, std::ostream& s = std::cout) const;
00945
00947 virtual std::ostream& write(Base* h, std::ostream& s = std::cout) const;
00948
00950 virtual int write(Base* h, const char* file_name ) const;
00951
00953 virtual DataObject* createPath(CSTR newPath );
00954
00959 virtual DataObject* createDirectory (CSTR parentDir, CSTR subDir );
00960
00961 public:
00962
00964 void update1Ddefs ( Property& ) ;
00965
00966 typedef std::map<std::string,Gaudi::Histo1DDef> Histo1DMap ;
00967
00968 private:
00969
00970
00971 Histo1DMap m_defs1D ;
00972
00973
00974 std::set<std::string> m_mods1D ;
00975
00976 };
00977
00978
00979
00980 #endif // GAUDISVC_HISTOGRAMSVC_H
00981