| # Gaudi Framework, version v21r8 |

Home |  | Generated: 17 Mar 2010

# GaudiHistos_2DVariableBinning.icpp

Go to the documentation of this file.

    00001 // ==================================== 2D ====================================
    00002 // ============================= Variable Binning =============================
    00003 // ============================================================================
    00004 // book the 2D histogram (book on demand)
    00005 // ============================================================================
    00006 template <class PBASE>
    00007 AIDA::IHistogram2D*  GaudiHistos<PBASE>::book2D
    00008 ( const std::string&   title        ,
    00009   const HistoBinEdges& edgesX       ,
    00010   const HistoBinEdges& edgesY       ) const
    00011 {
    00012   // exist?
    00013   AIDA::IHistogram2D * hist = histo2D ( title ) ;
    00014   // histogram is already booked
    00015   if ( NULL != hist      )                  { return hist ; } // RETURN !!
    00016
    00017   // propose the histogram ID
    00018   HistoID ID;
    00019   newHistoID( title, ID );
    00020
    00021   // Create a new histogram and return
    00022   return this -> book2D ( ID, title, edgesX, edgesY );
    00023 }
    00024 // ============================================================================
    00025 // book the 2D histogram with forced ID (book on demand)
    00026 // ============================================================================
    00027 template <class PBASE>
    00028 AIDA::IHistogram2D*  GaudiHistos<PBASE>::book2D
    00029 ( const HistoID&       ID           ,
    00030   const std::string&   title        ,
    00031   const HistoBinEdges& edgesX       ,
    00032   const HistoBinEdges& edgesY       ) const
    00033 {
    00034   // Check ID
    00035   if (ID.undefined())
    00036   {
    00037     this->Error("Undefined Histogram ID : Title='"+title+"'");
    00038     return NULL;
    00039   }
    00040
    00041   // exist?
    00042   AIDA::IHistogram2D * hist = histo2D ( ID ) ;
    00043   // histogram is already booked
    00044   if ( NULL != hist       )                 { return hist ; } // RETURN !!
    00045
    00046   // Histogram title
    00047   const std::string & htitle =
    00048     ( title.empty() ? "Unnamed 2D Histogram ID="+ID.idAsString() : title ) ;
    00049
    00050   // book the histogram
    00051   if ( ID.numeric() )
    00052   {
    00053     hist = this->histoSvc() -> book ( histoPath()  ,
    00054                                       ID.numericID() ,
    00055                                       htitle       ,
    00056                                       edgesX       ,
    00057                                       edgesY       ) ;
    00058   }
    00059   else if ( ID.literal() )
    00060   {
    00061     hist = this->histoSvc() -> book ( histoPath()+"/"+
    00062                                       ID.literalID() ,
    00063                                       htitle         ,
    00064                                       edgesX         ,
    00065                                       edgesY         ) ;
    00066   }
    00067
    00068   // check OK
    00069   if( NULL == hist )
    00070   { this->Error( "IHistogram2D* points to NULL! ID='" + ID.idAsString() +
    00071                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
    00072
    00073   // add histogram into histogram storages
    00074   m_histo2DMapID    [ ID    ] = hist ;
    00075   m_histo2DMapTitle [ title ] = hist ;
    00076
    00077   // Declare to monitoring service
    00078   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
    00079
    00080   // Printout and return
    00081   if ( this->msgLevel(MSG::DEBUG) )
    00082   { this->debug() << "Booked 2D Histogram : ID='" << ID
    00083                   << "' Path=" << histoPath()
    00084                   << " Title='"
    00085                   << Gaudi::Utils::Histos::htitle ( hist )
    00086                   << "'" << endmsg; }
    00087   return hist ;
    00088 }
    00089 // ============================================================================
    00090 // fill the 2D histogram (book on demand)
    00091 // ============================================================================
    00092 template <class PBASE>
    00093 AIDA::IHistogram2D*
    00094 GaudiHistos<PBASE>::plot2D
    00095 ( const double        valueX ,
    00096   const double        valueY ,
    00097   const std::string&  title  ,
    00098   const HistoBinEdges& edgesX ,
    00099   const HistoBinEdges& edgesY ,
    00100   const double        weight ) const
    00101 {
    00102   AIDA::IHistogram2D * h(NULL);
    00103   if ( produceHistos() )
    00104   {
    00105     // retrieve or book the histogram
    00106     h = histo2D ( title ) ;
    00107     if ( NULL == h ) { h = book2D ( title , edgesX , edgesY ) ; }
    00108     // fill the histogram
    00109     h = fill ( h , valueX , valueY , weight , title );
    00110   }
    00111   return h;
    00112 }
    00113 // ============================================================================
    00114 // fill the 2D variable histogram with forced ID assignment (book on demand)
    00115 // ============================================================================
    00116 template <class PBASE>
    00117 AIDA::IHistogram2D*
    00118 GaudiHistos<PBASE>::plot2D
    00119 ( const double        valueX ,
    00120   const double        valueY ,
    00121   const HistoID&      ID     ,
    00122   const std::string&  title  ,
    00123   const HistoBinEdges& edgesX ,
    00124   const HistoBinEdges& edgesY ,
    00125   const double        weight ) const
    00126 {
    00127   AIDA::IHistogram2D * h(NULL);
    00128   if ( produceHistos() )
    00129   {
    00130     // retrieve or book the histogram
    00131     h = histo2D ( ID ) ;
    00132     if ( NULL == h ) {  h = book2D ( ID , title , edgesX , edgesY ) ; }
    00133     // fill
    00134     h = fill ( h , valueX , valueY , weight , title ) ;
    00135   }
    00136   return h;
    00137 }