16 template <
class PBASE>
 
   18                                                 const unsigned long binsX, 
const double lowY, 
const double highY,
 
   19                                                 const unsigned long binsY )
 const {
 
   21   if ( !produceHistos() ) { 
return nullptr; } 
 
   24   auto hist = histo2D( title );
 
   26   if ( hist ) { 
return hist; } 
 
   30   newHistoID( title, ID );
 
   33   return this->book2D( ID, title, lowX, highX, binsX, lowY, highY, binsY );
 
   38 template <
class PBASE>
 
   40                                                 const double highX, 
const unsigned long binsX, 
const double lowY,
 
   41                                                 const double highY, 
const unsigned long binsY )
 const {
 
   43   if ( !produceHistos() ) { 
return nullptr; } 
 
   47     this->Error( 
"Undefined Histogram ID : Title='" + title + 
"'" ).ignore();
 
   52   auto hist = histo2D( ID );
 
   54   if ( hist ) { 
return hist; } 
 
   61     hist = this->histoSvc()->book( histoPath(), ID.
numericID(), 
htitle, binsX, lowX, highX, binsY, lowY, highY );
 
   63     hist = this->histoSvc()->book( histoPath() + 
"/" + ID.
literalID(), 
htitle, binsX, lowX, highX, binsY, lowY, highY );
 
   68     this->Error( 
"IHistogram2D* points to NULL! ID='" + ID.
idAsString() + 
"' title='" + 
htitle + 
"'" ).ignore();
 
   73   m_histo2DMapID[ID]       = hist;
 
   74   m_histo2DMapTitle[title] = hist;
 
   81     this->debug() << 
"Booked 2D Histogram : ID='" << ID << 
"' Path=" << histoPath() << 
" Title='" 
   90 template <
class PBASE>
 
   92                                               const double weight, 
const std::string& title )
 const {
 
   94   if ( !
histo ) { 
return nullptr; } 
 
   96   if ( !checkForNaN() ) {
 
  101     this->Warning( 
"fill():: 'NaN'      value is skipped from the histogram '" +
 
  105     this->Warning( 
"fill():: 'Infinite' value is skipped from the histogram '" +
 
  115 template <
class PBASE>
 
  117                                                 const double lowX, 
const double highX, 
const double lowY,
 
  118                                                 const double highY, 
const unsigned long binsX,
 
  119                                                 const unsigned long binsY, 
const double weight )
 const {
 
  120   AIDA::IHistogram2D* 
h( 
nullptr );
 
  121   if ( produceHistos() ) {
 
  123     h = histo2D( title );
 
  124     if ( !
h ) { 
h = book2D( title, lowX, highX, binsX, lowY, highY, binsY ); }
 
  126     h = 
fill( 
h, valueX, valueY, weight, title );
 
  133 template <
class PBASE>
 
  135                                                 const std::string& title, 
const double lowX, 
const double highX,
 
  136                                                 const double lowY, 
const double highY, 
const unsigned long binsX,
 
  137                                                 const unsigned long binsY, 
const double weight )
 const {
 
  138   AIDA::IHistogram2D* 
h( 
nullptr );
 
  140   if ( produceHistos() ) {
 
  143     if ( !
h ) { 
h = book2D( ID, title, lowX, highX, binsX, lowY, highY, binsY ); }
 
  145     h = 
fill( 
h, valueX, valueY, weight, title );