Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:57:46

0001 /***********************************************************************************\
0002 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
0003 *                                                                                   *
0004 * This software is distributed under the terms of the Apache version 2 licence,     *
0005 * copied verbatim in the file "LICENSE".                                            *
0006 *                                                                                   *
0007 * In applying this licence, CERN does not waive the privileges and immunities       *
0008 * granted to it by virtue of its status as an Intergovernmental Organization        *
0009 * or submit itself to any jurisdiction.                                             *
0010 \***********************************************************************************/
0011 #ifndef GAUDIUTILS_HISTOSTRINGS_H
0012 #define GAUDIUTILS_HISTOSTRINGS_H 1
0013 // ============================================================================
0014 // Include files
0015 // ============================================================================
0016 // STD & STL
0017 // ============================================================================
0018 #include <iosfwd>
0019 #include <string>
0020 // ============================================================================
0021 // GaudiKernel
0022 // ============================================================================
0023 #include "GaudiKernel/StatusCode.h"
0024 // ============================================================================
0025 // forward declarations
0026 // ============================================================================
0027 // Forward declarations
0028 // ============================================================================
0029 // AIDA
0030 // ============================================================================
0031 namespace AIDA {
0032   class IHistogram1D;
0033   class IHistogram2D;
0034   class IHistogram3D;
0035   class IProfile1D;
0036   class IProfile2D;
0037 } // namespace AIDA
0038 // ============================================================================
0039 // ROOT
0040 // ============================================================================
0041 class TH1D;       // ROOT
0042 class TH2D;       // ROOT
0043 class TH3D;       // ROOT
0044 class TProfile;   // ROOT
0045 class TProfile2D; // ROOT
0046 // ============================================================================
0047 namespace Gaudi {
0048   // ==========================================================================
0049   namespace Utils {
0050     // ========================================================================
0051     namespace Histos {
0052       // ======================================================================
0053       /** @class HistoStrings
0054        *  Helper class to produce "good" dictionaries
0055        *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
0056        *  @date 2009-09-26
0057        */
0058       class GAUDI_API HistoStrings {
0059         // ====================================================================
0060       public:
0061         // ====================================================================
0062         /** convert the histogram into the string
0063          *  @param histo  (INPUT)  the histogram to be streamed
0064          *  @param asXML  (INPUT)  use XML-format
0065          *  @return the string representation of the histogram
0066          *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
0067          *  @date 2009-09-26
0068          */
0069         static std::string toString( const TH1D& histo, const bool asXML = false );
0070         // ====================================================================
0071         /** convert the histogram into the string
0072          *  @param histo  (INPUT)  the histogram to be streamed
0073          *  @param asXML  (INPUT)  use XML-format
0074          *  @return the string representation of the histogram
0075          *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
0076          *  @date 2009-09-26
0077          */
0078         static std::string toString( const TH2D& histo, const bool asXML = false );
0079         // ====================================================================
0080         /** convert the histogram into the string
0081          *  @param histo  (INPUT)  the histogram to be streamed
0082          *  @param asXML  (INPUT)  use XML-format
0083          *  @return the string representation of the histogram
0084          *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
0085          *  @date 2009-09-26
0086          */
0087         static std::string toString( const AIDA::IHistogram1D& histo, const bool asXML = false );
0088         // ====================================================================
0089         /** convert the histogram into the string
0090          *  @param histo  (INPUT)  the histogram to be streamed
0091          *  @param asXML  (INPUT)  use XML-format
0092          *  @return the string representation of the histogram
0093          *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
0094          *  @date 2009-09-26
0095          */
0096         static std::string toString( const AIDA::IHistogram2D& histo, const bool asXML = false );
0097         // ====================================================================
0098         /** parse the histogram from string
0099          *  @param result (OUTPUT)  the parsed histogram
0100          *  @param input  (INPUT)   the input XML string
0101          *  @return status code
0102          */
0103         static StatusCode fromString( TH1D& result, const std::string& input );
0104         // ====================================================================
0105         /** parse the histogram from string
0106          *  @param result (OUTPUT)  the parsed histogram
0107          *  @param input  (INPUT)   the input XML string
0108          *  @return status code
0109          */
0110         static StatusCode fromString( AIDA::IHistogram1D& result, const std::string& input );
0111         // ====================================================================
0112         /** parse the histogram from string
0113          *  @param result (OUTPUT)  the parsed histogram
0114          *  @param input  (INPUT)   the input XML string
0115          *  @return status code
0116          */
0117         static StatusCode fromString( TH2D& result, const std::string& input );
0118         // ====================================================================
0119         /** parse the histogram from string
0120          *  @param result (OUTPUT)  the parsed histogram
0121          *  @param input  (INPUT)   the input XML string
0122          *  @return status code
0123          */
0124         static StatusCode fromString( AIDA::IHistogram2D& result, const std::string& input );
0125         // ====================================================================
0126         static std::string toXml( const TH1D& histo );
0127         static std::string toXml( const TH2D& histo );
0128         static std::string toXml( const TH3D& histo );
0129         static std::string toXml( const TProfile& histo );
0130         static std::string toXml( const TProfile2D& histo );
0131         // ====================================================================
0132         static std::string toXml( const AIDA::IHistogram1D& histo );
0133         static std::string toXml( const AIDA::IHistogram2D& histo );
0134         static std::string toXml( const AIDA::IHistogram3D& histo );
0135         static std::string toXml( const AIDA::IProfile1D& histo );
0136         static std::string toXml( const AIDA::IProfile2D& histo );
0137         // ====================================================================
0138         static StatusCode fromXml( TH1D& result, const std::string& input );
0139         static StatusCode fromXml( TH2D& result, const std::string& input );
0140         static StatusCode fromXml( TH3D& result, const std::string& input );
0141         static StatusCode fromXml( TProfile& result, const std::string& input );
0142         static StatusCode fromXml( TProfile2D& result, const std::string& input );
0143         // ====================================================================
0144         static StatusCode fromXml( AIDA::IHistogram1D& result, const std::string& input );
0145         static StatusCode fromXml( AIDA::IHistogram2D& result, const std::string& input );
0146         static StatusCode fromXml( AIDA::IHistogram3D& result, const std::string& input );
0147         static StatusCode fromXml( AIDA::IProfile1D& result, const std::string& input );
0148         static StatusCode fromXml( AIDA::IProfile2D& result, const std::string& input );
0149         // ====================================================================
0150       };
0151       // ======================================================================
0152     } // namespace Histos
0153     // ========================================================================
0154   } // namespace Utils
0155   // ==========================================================================
0156 } //                                                     end of namespace Gaudi
0157 // ============================================================================
0158 // The END
0159 // ============================================================================
0160 #endif // GAUDIUTILS_HISTOSTRINGS_H