49 #include <G4String.hh>    55 CexmcHistoManagerMessenger::CexmcHistoManagerMessenger(
    56                                         CexmcHistoManager *  histoManager ) :
    57     histoManager( histoManager ), setVerboseLevel( NULL ), listHistos( NULL ),
    59 #ifdef CEXMC_USE_ROOTQT
    60     , drawHisto( NULL ), addHistoMenu( NULL ), drawHistoOptions1D( NULL ),
    61     drawHistoOptions2D( NULL ), drawHistoOptions3D( NULL )
    65         ( CexmcMessenger::histoDirName + 
"verbose" ).c_str(), 
this );
    66     setVerboseLevel->SetGuidance( 
"0 - basic set of histograms created, "    67                                   "1 - extra histograms created" );
    68     setVerboseLevel->SetParameterName( 
"Verbose", 
true );
    69     setVerboseLevel->SetDefaultValue( 0 );
    73         ( CexmcMessenger::histoDirName + 
"list" ).c_str(), 
this );
    74     listHistos->SetGuidance( 
"List available histograms" );
    78         ( CexmcMessenger::histoDirName + 
"print" ).c_str(), 
this );
    79     printHisto->SetGuidance( 
"Print specified histogram" );
    80     printHisto->SetParameterName( 
"PrintHisto", 
false );
    83 #ifdef CEXMC_USE_ROOTQT    85         ( CexmcMessenger::histoDirName + 
"draw" ).c_str(), 
this );
    86     drawHisto->SetGuidance( 
"Draw specified histogram. The first parameter is\n"    87                             "    the histogram name, the rest is draw "    88                             "options.\n    Available only if the program was "    89                             "launched\n    in graphical mode" );
    90     drawHisto->SetParameterName( 
"DrawHisto", 
false );
    94         ( CexmcMessenger::histoDirName + 
"addHistoMenu" ).c_str(), 
this );
    95     addHistoMenu->SetGuidance( 
"Add histogram menu in GUI menu bar. The first "    96                                "parameter is\n    the menu handle, the rest is "    97                                "the menu label.\n    The menu cannot be added "    98                                "or disabled in runtime" );
    99     addHistoMenu->SetParameterName( 
"AddHistoMenu", 
true );
   103         ( CexmcMessenger::histoDirName + 
"drawOptions1D" ).c_str(), 
this );
   104     drawHistoOptions1D->SetGuidance( 
"Set draw options for 1D histograms drawn "   105                                      "from the menu.\n    The options cannot "   106                                      "be changed after the menu was built");
   107     drawHistoOptions1D->SetParameterName( 
"DrawOptions1D", 
false );
   111         ( CexmcMessenger::histoDirName + 
"drawOptions2D" ).c_str(), 
this );
   112     drawHistoOptions2D->SetGuidance( 
"Set draw options for 2D histograms drawn "   113                                      "from the menu.\n    The options cannot "   114                                      "be changed after the menu was built");
   115     drawHistoOptions2D->SetParameterName( 
"DrawOptions2D", 
false );
   119         ( CexmcMessenger::histoDirName + 
"drawOptions3D" ).c_str(), 
this );
   120     drawHistoOptions3D->SetGuidance( 
"Set draw options for 3D histograms drawn "   121                                      "from the menu.\n    The options cannot "   122                                      "be changed after the menu was built");
   123     drawHistoOptions3D->SetParameterName( 
"DrawOptions3D", 
false );
   129 CexmcHistoManagerMessenger::~CexmcHistoManagerMessenger()
   131     delete setVerboseLevel;
   134 #ifdef CEXMC_USE_ROOTQT   137     delete drawHistoOptions1D;
   138     delete drawHistoOptions2D;
   139     delete drawHistoOptions3D;
   144 void  CexmcHistoManagerMessenger::SetNewValue( 
G4UIcommand *  cmd,
   149         if ( cmd == setVerboseLevel )
   151             histoManager->SetVerboseLevel(
   155         if ( cmd == listHistos )
   157             histoManager->List();
   160         if ( cmd == printHisto )
   162             histoManager->Print( value );
   165 #ifdef CEXMC_USE_ROOTQT   166         if ( cmd == drawHisto )
   168             size_t  delimPos( value.find_first_of( 
" \t" ) );
   169             size_t  delimPosEnd( G4String::npos );
   170             if ( delimPos != G4String::npos )
   171                 delimPosEnd = value.find_first_not_of( 
" \t", delimPos );
   172             histoManager->Draw( std::string( value, 0, delimPos ),
   173                                 delimPosEnd == G4String::npos ? 
"" :
   174                                                 value.c_str() + delimPosEnd );
   177         if ( cmd == addHistoMenu )
   179             size_t  delimPos( value.find_first_of( 
" \t" ) );
   180             size_t  delimPosEnd( G4String::npos );
   181             if ( delimPos != G4String::npos )
   182                 delimPosEnd = value.find_first_not_of( 
" \t", delimPos );
   183             histoManager->AddHistoMenu( std::string( value, 0, delimPos ),
   184                                         delimPosEnd == G4String::npos ? 
"" :
   185                                                 value.c_str() + delimPosEnd );
   188         if ( cmd == drawHistoOptions1D )
   190             histoManager->SetDrawOptions1D( value );
   193         if ( cmd == drawHistoOptions2D )
   195             histoManager->SetDrawOptions2D( value );
   198         if ( cmd == drawHistoOptions3D )
   200             histoManager->SetDrawOptions3D( value );
 
static G4int GetNewIntValue(const char *paramString)