16 template <
class PBASE>
18 const unsigned long binsX,
const double lowY,
const double highY,
19 const unsigned long binsY,
const double lowZ,
const double highZ,
20 const unsigned long binsZ )
const {
22 if ( !produceHistos() ) {
return nullptr; }
25 auto hist = histo3D( title );
27 if ( hist ) {
return hist; }
31 newHistoID( title, ID );
34 return this->book3D( ID, title, lowX, highX, binsX, lowY, highY, binsY, lowZ, highZ, binsZ );
39 template <
class PBASE>
41 const double highX,
const unsigned long binsX,
const double lowY,
42 const double highY,
const unsigned long binsY,
const double lowZ,
43 const double highZ,
const unsigned long binsZ )
const {
45 if ( !produceHistos() ) {
return nullptr; }
49 this->Error(
"Undefined Histogram ID : Title='" + title +
"'" ).ignore();
54 auto hist = histo3D( ID );
56 if ( hist ) {
return hist; }
63 hist = this->histoSvc()->book( histoPath(), ID.
numericID(),
htitle, binsX, lowX, highX, binsY, lowY, highY, binsZ,
66 hist = this->histoSvc()->book( histoPath() +
"/" + ID.
literalID(),
htitle, binsX, lowX, highX, binsY, lowY, highY,
72 this->Error(
"IHistogram3D* points to NULL! ID='" + ID.
idAsString() +
"' title='" +
htitle +
"'" ).ignore();
77 m_histo3DMapID[ID] = hist;
78 m_histo3DMapTitle[title] = hist;
85 this->debug() <<
"Booked 3D Histogram : ID='" << ID <<
"' Path=" << histoPath() <<
" Title='"
93 template <
class PBASE>
95 const double valueZ,
const double weight,
97 if ( !
histo ) {
return nullptr; }
99 if ( !checkForNaN() ) {
105 this->Warning(
"fill():: 'NaN' value is skipped from the histogram '" +
109 this->Warning(
"fill():: 'Infinite' value is skipped from the histogram '" +
119 template <
class PBASE>
122 const double lowX,
const double highX,
const double lowY,
const double highY,
123 const double lowZ,
const double highZ,
const unsigned long binsX,
const unsigned long binsY,
124 const unsigned long binsZ,
const double weight )
const {
125 AIDA::IHistogram3D*
h(
nullptr );
126 if ( produceHistos() ) {
128 h = histo3D( title );
129 if ( !
h ) {
h = book3D( title, lowX, highX, binsX, lowY, highY, binsY, lowZ, highZ, binsZ ); }
131 h =
fill(
h, valueX, valueY, valueZ, weight, title );
138 template <
class PBASE>
141 const std::string& title,
const double lowX,
const double highX,
const double lowY,
142 const double highY,
const double lowZ,
const double highZ,
const unsigned long binsX,
143 const unsigned long binsY,
const unsigned long binsZ,
const double weight )
const {
144 AIDA::IHistogram3D*
h(
nullptr );
145 if ( produceHistos() ) {
148 if ( !
h ) {
h = book3D( ID, title, lowX, highX, binsX, lowY, highY, binsY, lowZ, highZ, binsZ ); }
150 h =
fill(
h, valueX, valueY, valueZ, weight, title );