Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 27 // Author: Ivana Hrivnacova, 24/06/2013 (ivan 28 29 #include "G4AnalysisMessenger.hh" 30 #include "G4VAnalysisManager.hh" 31 #include "G4NtupleMessenger.hh" 32 33 #include "G4UIcmdWithABool.hh" 34 #include "G4UIcmdWithAnInteger.hh" 35 #include "G4UIcmdWithAString.hh" 36 #include "G4UIcmdWithoutParameter.hh" 37 #include "G4Threading.hh" 38 39 using namespace G4Analysis; 40 41 //____________________________________________ 42 G4AnalysisMessenger::G4AnalysisMessenger(G4VAn 43 : fManager(manager) 44 { 45 fAnalysisDir = std::make_unique<G4UIdirector 46 fAnalysisDir->SetGuidance("analysis control" 47 48 fOpenFileCmd = CreateCommand<G4UIcmdWithAStr 49 "openFile", "Open analysis file", "FileNam 50 fOpenFileCmd->SetDefaultValue(""); 51 fOpenFileCmd->SetToBeBroadcasted(true); 52 53 fWriteCmd = CreateCommandWithoutParameter( 54 "write", "Write analysis data."); 55 fWriteCmd->SetToBeBroadcasted(false); 56 57 fResetCmd = CreateCommandWithoutParameter( 58 "reset", "Reset analysis data."); 59 fResetCmd->SetToBeBroadcasted(false); 60 61 fCloseFileCmd = CreateCommand<G4UIcmdWithABo 62 "closeFile", "Close analysis file and (opt 63 fCloseFileCmd->SetDefaultValue(true); 64 fCloseFileCmd->SetToBeBroadcasted(false); 65 66 fListCmd = CreateCommand<G4UIcmdWithABool>( 67 "list", "List all/activate analysis object 68 fListCmd->SetDefaultValue(true); 69 70 fSetDefaultFileTypeCmd = CreateCommand<G4UIc 71 "setDefaultFileType", "Set default output 72 #ifdef TOOLS_USE_HDF5 73 fSetDefaultFileTypeCmd->SetCandidates("csv h 74 #else 75 fSetDefaultFileTypeCmd->SetCandidates("csv r 76 #endif 77 78 fSetActivationCmd = CreateCommand<G4UIcmdWit 79 "setActivation", 80 "Set activation. \n" 81 "When this option is enabled, only the his 82 "are returned, filled or saved on file.\n" 83 "No warning is issued when Get or Fill is 84 "Activation"); 85 86 fVerboseCmd = CreateCommand<G4UIcmdWithAnInt 87 "verbose", "Set verbose level", "VerboseLe 88 fVerboseCmd->SetRange("VerboseLevel>=0 && Ve 89 90 fCompressionCmd = CreateCommand<G4UIcmdWithA 91 "compression", "Set compression level", "C 92 fCompressionCmd->SetRange("CompressionLevel> 93 94 fSetFileNameCmd = CreateCommand<G4UIcmdWithA 95 "setFileName", "Set name for the histogram 96 97 fSetHistoDirNameCmd = CreateCommand<G4UIcmdW 98 "setHistoDirName", "Set name for the histo 99 100 fSetNtupleDirNameCmd = CreateCommand<G4UIcmd 101 "setNtupleDirName", "Set name for the ntup 102 103 fNtupleMessenger = std::make_unique<G4Ntuple 104 } 105 106 //____________________________________________ 107 G4AnalysisMessenger::~G4AnalysisMessenger() = 108 109 // 110 // private functions 111 // 112 113 114 //____________________________________________ 115 std::unique_ptr<G4UIcmdWithoutParameter> 116 G4AnalysisMessenger::CreateCommandWithoutParam 117 G4String name, G4String guidance) 118 { 119 G4String fullName = "/analysis/" + name; 120 121 auto command = std::make_unique<G4UIcmdWitho 122 command->SetGuidance(guidance.c_str()); 123 command->AvailableForStates(G4State_PreInit, 124 125 return command; 126 } 127 128 // 129 // public functions 130 // 131 132 //____________________________________________ 133 void G4AnalysisMessenger::SetNewValue(G4UIcomm 134 { 135 if ( command == fOpenFileCmd.get() ) { 136 // G4cout << "Calling OpenFile from comman 137 fManager->OpenFile(newValues); 138 return; 139 } 140 141 if ( command == fWriteCmd.get() ) { 142 fManager->WriteFromUI(); 143 return; 144 } 145 146 if ( command == fResetCmd.get() ) { 147 fManager->ResetFromUI(); 148 return; 149 } 150 151 if ( command == fCloseFileCmd.get() ) { 152 fManager->CloseFileFromUI(fCloseFileCmd->G 153 return; 154 } 155 156 if ( command == fListCmd.get() ) { 157 fManager->List(fListCmd->GetNewBoolValue(n 158 return; 159 } 160 161 if ( command == fSetDefaultFileTypeCmd.get() 162 fManager->SetDefaultFileType(newValues); 163 return; 164 } 165 166 if ( command == fSetActivationCmd.get() ) { 167 fManager->SetActivation(fSetActivationCmd- 168 return; 169 } 170 171 if ( command == fVerboseCmd.get() ) { 172 fManager->SetVerboseLevel(fVerboseCmd->Get 173 return; 174 } 175 176 if ( command == fCompressionCmd.get() ) { 177 fManager->SetCompressionLevel(fCompression 178 return; 179 } 180 181 if ( command == fSetFileNameCmd.get() ) { 182 fManager->SetFileName(newValues); 183 return; 184 } 185 186 if ( command == fSetHistoDirNameCmd.get() ) 187 fManager->SetHistoDirectoryName(newValues) 188 return; 189 } 190 191 if ( command == fSetNtupleDirNameCmd.get() ) 192 fManager->SetNtupleDirectoryName(newValues 193 return; 194 } 195 } 196