File indexing completed on 2025-01-31 09:21:54
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 #include <G4UIdirectory.hh>
0045 #include <G4UImanager.hh>
0046 #include <G4UIcommandTree.hh>
0047 #include <G4UIcmdWithAnInteger.hh>
0048 #include <G4VPrimitiveScorer.hh>
0049 #include <G4MultiFunctionalDetector.hh>
0050 #include "CexmcSensitiveDetectorMessenger.hh"
0051 #include "CexmcMessenger.hh"
0052 #include "CexmcException.hh"
0053
0054
0055 CexmcSensitiveDetectorMessenger::CexmcSensitiveDetectorMessenger(
0056 G4VPrimitiveScorer * scorer_ ) :
0057 scorer( scorer_ ), detectorPath( NULL ), setVerboseLevel( NULL )
0058 {
0059 G4MultiFunctionalDetector * detector(
0060 scorer->GetMultiFunctionalDetector() );
0061
0062
0063
0064 if ( ! detector )
0065 throw CexmcException( CexmcWeirdException );
0066
0067 G4String detectorFullPath( ( CexmcMessenger::detectorDirName +
0068 detector->GetName() + "/" + scorer->GetName() + "/" ).
0069 c_str() );
0070 G4UImanager * uiManager( G4UImanager::GetUIpointer() );
0071 if ( ! uiManager->GetTree()->FindCommandTree( detectorFullPath.c_str() ) )
0072 {
0073 detectorPath = new G4UIdirectory( detectorFullPath.c_str() );
0074 detectorPath->SetGuidance( "Settings for given sensitive detector" );
0075 }
0076
0077 setVerboseLevel = new G4UIcmdWithAnInteger(
0078 ( detectorFullPath + "verbose" ).c_str(), this );
0079 setVerboseLevel->SetGuidance( "0 - do not print messages, "
0080 "1 - print messages after an event" );
0081 setVerboseLevel->SetParameterName( "Verbose", true );
0082 setVerboseLevel->SetDefaultValue( 0 );
0083 setVerboseLevel->AvailableForStates( G4State_PreInit, G4State_Idle );
0084
0085 }
0086
0087
0088 CexmcSensitiveDetectorMessenger::~CexmcSensitiveDetectorMessenger()
0089 {
0090 delete detectorPath;
0091 delete setVerboseLevel;
0092 }
0093
0094
0095 void CexmcSensitiveDetectorMessenger::SetNewValue( G4UIcommand * cmd,
0096 G4String value )
0097 {
0098 do
0099 {
0100 if ( cmd == setVerboseLevel )
0101 {
0102 scorer->SetVerboseLevel(
0103 G4UIcmdWithAnInteger::GetNewIntValue( value ) );
0104 break;
0105 }
0106 } while ( false );
0107 }
0108