Gaudi Framework, version v21r4

Home   Generated: 7 Sep 2009

HbookName.h File Reference


Detailed Description

few useful function to construct names of Hbook histograms and directories functions are imported from Tools/LoKi and Calo/CaloUtils packages

Author:
Vanya BELYAEV Ivan.Belyaev@itep.ru
Date:
2002-07-25

Definition in file HbookName.h.

#include <string>
#include <algorithm>

Include dependency graph for HbookName.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define GAUDIALG_HBOOKNAME_H   1

Functions

std::string dirHbookName (const std::string &addr, const int maxLen=16)
 Simple function to convert any valid Gaudi address (name in Transient Store) to address, which is simultaneously valid for Hbook directory.
std::string histoHbookName (const std::string &addr, const int maxLen=8)
 Simple function to convert any valid Gaudi address(name in Transient Store) to address, which is simultaneously valid for Hbook histogram.


Define Documentation

#define GAUDIALG_HBOOKNAME_H   1

Definition at line 4 of file HbookName.h.


Function Documentation

std::string @32::dirHbookName ( const std::string addr,
const int  maxLen = 16 
) [inline, static]

Simple function to convert any valid Gaudi address (name in Transient Store) to address, which is simultaneously valid for Hbook directory.

examples: "verylongname" --> "verylong/name"

Parameters:
old old address
maxLen maximum allowed length of directory name (16 for Hbook)
Returns:
new address
Author:
Vanya BELYAEV Ivan.Belyaev@itep.ru
Date:
06/07/2001

Definition at line 35 of file HbookName.h.

00037   {
00038     // ignore empty locations 
00039     if( addr.empty() ) { return std::string(); }
00040     //
00041     std::string old( addr );
00042     // remove long names
00043     if( 0 < maxLen &&  maxLen < (int) old.size() ) 
00044     { 
00045       std::string::iterator p1,p2;
00046       p1 = old.begin();
00047       const char sep('/');
00048       while( old.end() != p1 )
00049       {
00050         p1 = 
00051           std::find_if( p1        , 
00052                         old.end() , 
00053                         std::bind2nd(std::not_equal_to<char>(),sep));
00054         p2 = std::find( p1 , old.end() , sep ) ;
00055         if( ( p2 - p1 ) <= (int) maxLen  ) { p1 = p2 ; continue ; }
00056         old.insert( p1 + maxLen , sep ) ;  
00057         p1 = old.begin() ; 
00058       }
00059     }
00061     return old;
00062   }

std::string @32::histoHbookName ( const std::string addr,
const int  maxLen = 8 
) [inline, static]

Simple function to convert any valid Gaudi address(name in Transient Store) to address, which is simultaneously valid for Hbook histogram.

examples: "verylongname/116" --> "verylong/name/116" "verylongname" --> "verylong/name/1" "somename/here/" --> "somename/here/1" "directory/object" --> "director/y/object/1"

Parameters:
old old address
maxLen maximum allowed length of directory name (8 for Hbook)
Returns:
new address
Author:
Vanya BELYAEV Ivan.Belyaev@itep.ru
Date:
06/07/2001

Definition at line 82 of file HbookName.h.

00084   {
00085     // ignore empty locations 
00086     if( addr.empty() ) { return std::string(); }
00087     //
00088     std::string old( addr );
00089     { // make valid histogram ID (integer)  
00090       std::string::size_type pos 
00091         = old.find_last_of( '/' );
00092       if      ( std::string::npos == pos ) { old += "/1" ; }
00093       else if ( old.size() - 1    == pos ) { old += '1'  ; }
00094       else
00095       {
00096         const int id = 
00097           atoi( std::string( old , pos + 1 , std::string::npos ).c_str() );
00098         if( 0 == id ) { old+="/1"; }
00099       }
00100     }
00101     // remove long names
00102     if( 0 < maxLen &&  maxLen < (int) old.size() ) 
00103     { 
00104       std::string::iterator p1,p2;
00105       p1 = old.begin();
00106       const char sep('/');
00107       while( old.end() != p1 )
00108       {
00109         p1 = 
00110           std::find_if( p1        , 
00111                         old.end() , 
00112                         std::bind2nd(std::not_equal_to<char>(),sep));
00113         p2 = std::find( p1 , old.end() , sep ) ;
00114         if( ( p2 - p1 ) <= (int) maxLen  ) { p1 = p2 ; continue ; }
00115         old.insert( p1 + maxLen , sep ) ;  
00116         p1 = old.begin() ; 
00117       }
00118     }
00119     //
00120     return old;
00121   }


Generated at Mon Sep 7 18:06:15 2009 for Gaudi Framework, version v21r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004