| The Gaudi Framework v32r1 (f65d50dc)

Functions
FixTESPathDetails Namespace Reference

## Functions
std::unique_ptr< IDataHandleVisitor > | fixDataHandlePath (std::string_view rit, std::string rootName, MsgStream *dbg)
std::string | fullTESLocation (std::string_view location, std::string_view rit)

## Function Documentation

## ◆ fixDataHandlePath()

std::unique_ptr< IDataHandleVisitor > FixTESPathDetails::fixDataHandlePath | ( | std::string_view | rit,
|  | std::string | rootName,
|  | MsgStream * | dbg
| ) |  |

Definition at line 61 of file FixTESPath.cpp.

61 {
62 if ( !rootName.empty() && '/' != rootName.back() ) rootName += "/";
63 return std::make_unique<DHHFixer>( [rit, rootName = std::move( rootName ), dbg]( std::string_view location ) {
64 auto tokens = boost::tokenizer<boost::char_separator<char>>{location, boost::char_separator<char>{":"}};
65 auto result =
66 std::accumulate( tokens.begin(), tokens.end(), std::string{}, [&]( std::string s, std::string_view tok ) {
67 std::string r = fullTESLocation( tok, rit );
68 // check whether we have an absolute path if yes use it - else prepend DataManager Root
69 if ( r[0] != '/' ) r = rootName + r;
70 return s.empty() ? r : s + ':' + r;
71 } );
72 if ( result != location && dbg ) ( *dbg ) << "Changing " << location << " to " << result << endmsg;
73 return result;
74 } );
75 }
std::string::empty
T empty(T... args)
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
std::string
STL class.
FixTESPathDetails::fullTESLocation
std::string fullTESLocation(std::string_view location, std::string_view rit)
Definition: FixTESPath.cpp:40
std::move
T move(T... args)
std::string::back
T back(T... args)
gaudirun.s
string s
Definition: gaudirun.py:316
std::accumulate
T accumulate(T... args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

## ◆ fullTESLocation()

std::string FixTESPathDetails::fullTESLocation | ( | std::string_view | location,
|  | std::string_view | rit
| ) |  |

Definition at line 40 of file FixTESPath.cpp.

40 {
41 // The logic is:
42 // if no R.I.T., give back location
43 // if R.I.T., this is the mapping:
44 // (note that R.I.T. contains a trailing '/')
45 // location -> result
46 // -------------------------------------------------
47 // "" -> R.I.T.[:-1] ("rit")
48 // "/Event" -> R.I.T.[:-1] ("rit")
49 // "/Event/MyObj" -> R.I.T. + "MyObj" ("rit/MyObj")
50 // "MyObj" -> R.I.T. + "MyObj" ("rit/MyObj")
51 return rit.empty()
52 ? std::string{location}
53 : location.empty() || ( location == "/Event" )
54 ? std::string{rit.substr( 0, rit.size() - 1 )}
55 : location.compare( 0, 7, "/Event/" ) == 0
56 ? std::string{rit}.append( location.substr( 7 ) )
57 : location.compare( 0, 1, "/" ) == 0 ? std::string{rit}.append( location.substr( 1 ) )
58 : std::string{rit}.append( location );
59 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
std::string
STL class.
std::string::append
T append(T... args)
std::string::substr
T substr(T... args)