Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /* 26 /* 27 * =========================================== 27 * ============================================================================ 28 * 28 * 29 * Filename: CexmcMessenger.cc 29 * Filename: CexmcMessenger.cc 30 * 30 * 31 * Description: common messenger stuff (di 31 * Description: common messenger stuff (directories etc.) 32 * 32 * 33 * Version: 1.0 33 * Version: 1.0 34 * Created: 15.11.2009 12:59:56 34 * Created: 15.11.2009 12:59:56 35 * Revision: none 35 * Revision: none 36 * Compiler: gcc 36 * Compiler: gcc 37 * 37 * 38 * Author: Alexey Radkov (), 38 * Author: Alexey Radkov (), 39 * Company: PNPI 39 * Company: PNPI 40 * 40 * 41 * =========================================== 41 * ============================================================================ 42 */ 42 */ 43 43 44 #include <G4UIdirectory.hh> 44 #include <G4UIdirectory.hh> 45 #include "CexmcMessenger.hh" 45 #include "CexmcMessenger.hh" 46 #include "CexmcSensitiveDetectorsAttributes.hh 46 #include "CexmcSensitiveDetectorsAttributes.hh" 47 47 48 48 49 namespace 49 namespace 50 { 50 { 51 const G4String ed( CexmcDetectorTypeName[ 51 const G4String ed( CexmcDetectorTypeName[ CexmcEDDetector ] + "/" ); 52 } 52 } 53 53 54 54 55 CexmcMessenger * CexmcMessenger::instance( NU 55 CexmcMessenger * CexmcMessenger::instance( NULL ); 56 56 57 G4String CexmcMessenger::mainDirName( "/cexmc 57 G4String CexmcMessenger::mainDirName( "/cexmc/" ); 58 G4String CexmcMessenger::geometryDirName( Cex 58 G4String CexmcMessenger::geometryDirName( CexmcMessenger::mainDirName + 59 "ge 59 "geometry/" ); 60 G4String CexmcMessenger::physicsDirName( Cexm 60 G4String CexmcMessenger::physicsDirName( CexmcMessenger::mainDirName + 61 "ph 61 "physics/" ); 62 G4String CexmcMessenger::gunDirName( CexmcMes 62 G4String CexmcMessenger::gunDirName( CexmcMessenger::mainDirName + 63 "gu 63 "gun/" ); 64 G4String CexmcMessenger::detectorDirName( Cex 64 G4String CexmcMessenger::detectorDirName( CexmcMessenger::mainDirName + 65 "de 65 "detector/" ); 66 G4String CexmcMessenger::eventDirName( CexmcM 66 G4String CexmcMessenger::eventDirName( CexmcMessenger::mainDirName + 67 "ev 67 "event/" ); 68 G4String CexmcMessenger::runDirName( CexmcMes 68 G4String CexmcMessenger::runDirName( CexmcMessenger::mainDirName + 69 "ru 69 "run/" ); 70 G4String CexmcMessenger::monitorDirName( Cexm 70 G4String CexmcMessenger::monitorDirName( CexmcMessenger::detectorDirName + 71 CexmcDetectorRoleName[ CexmcMon 71 CexmcDetectorRoleName[ CexmcMonitorDetectorRole ] + "/" ); 72 G4String CexmcMessenger::targetDirName( Cexmc 72 G4String CexmcMessenger::targetDirName( CexmcMessenger::detectorDirName + 73 CexmcDetectorRoleName[ CexmcTar 73 CexmcDetectorRoleName[ CexmcTargetDetectorRole ] + "/" ); 74 G4String CexmcMessenger::vetoCounterDirName( 74 G4String CexmcMessenger::vetoCounterDirName( CexmcMessenger::detectorDirName + 75 CexmcDetectorRoleName[ CexmcVet 75 CexmcDetectorRoleName[ CexmcVetoCounterDetectorRole ] + "/" ); 76 G4String CexmcMessenger::vetoCounterLeftDirNa 76 G4String CexmcMessenger::vetoCounterLeftDirName( 77 CexmcMessenger::ve 77 CexmcMessenger::vetoCounterDirName + "left/" ); 78 G4String CexmcMessenger::vetoCounterRightDirN 78 G4String CexmcMessenger::vetoCounterRightDirName( 79 CexmcMessenger::ve 79 CexmcMessenger::vetoCounterDirName + "right/" ); 80 G4String CexmcMessenger::calorimeterDirName( 80 G4String CexmcMessenger::calorimeterDirName( CexmcMessenger::detectorDirName + 81 CexmcDetectorRoleName[ CexmcCal 81 CexmcDetectorRoleName[ CexmcCalorimeterDetectorRole ] + "/" ); 82 G4String CexmcMessenger::calorimeterLeftDirNa 82 G4String CexmcMessenger::calorimeterLeftDirName( 83 CexmcMessenger::ca 83 CexmcMessenger::calorimeterDirName + "left/" ); 84 G4String CexmcMessenger::calorimeterRightDirN 84 G4String CexmcMessenger::calorimeterRightDirName( 85 CexmcMessenger::ca 85 CexmcMessenger::calorimeterDirName + "right/" ); 86 G4String CexmcMessenger::monitorEDDirName( 86 G4String CexmcMessenger::monitorEDDirName( 87 CexmcMessenger::mo 87 CexmcMessenger::monitorDirName + ed ); 88 G4String CexmcMessenger::vetoCounterEDDirName 88 G4String CexmcMessenger::vetoCounterEDDirName( 89 CexmcMessenger::ve 89 CexmcMessenger::vetoCounterDirName + ed ); 90 G4String CexmcMessenger::vetoCounterLeftEDDir 90 G4String CexmcMessenger::vetoCounterLeftEDDirName( 91 CexmcMessenger::ve 91 CexmcMessenger::vetoCounterLeftDirName + ed ); 92 G4String CexmcMessenger::vetoCounterRightEDDi 92 G4String CexmcMessenger::vetoCounterRightEDDirName( 93 CexmcMessenger::ve 93 CexmcMessenger::vetoCounterRightDirName + ed ); 94 G4String CexmcMessenger::calorimeterEDDirName 94 G4String CexmcMessenger::calorimeterEDDirName( 95 CexmcMessenger::ca 95 CexmcMessenger::calorimeterDirName + ed ); 96 G4String CexmcMessenger::calorimeterLeftEDDir 96 G4String CexmcMessenger::calorimeterLeftEDDirName( 97 CexmcMessenger::ca 97 CexmcMessenger::calorimeterLeftDirName + ed ); 98 G4String CexmcMessenger::calorimeterRightEDDi 98 G4String CexmcMessenger::calorimeterRightEDDirName( 99 CexmcMessenger::ca 99 CexmcMessenger::calorimeterRightDirName + ed ); 100 G4String CexmcMessenger::reconstructorDirName 100 G4String CexmcMessenger::reconstructorDirName( 101 CexmcMessenger::ma 101 CexmcMessenger::mainDirName + "reconstructor/" ); 102 G4String CexmcMessenger::visDirName( CexmcMes 102 G4String CexmcMessenger::visDirName( CexmcMessenger::mainDirName + "vis/" ); 103 #ifdef CEXMC_USE_ROOT 103 #ifdef CEXMC_USE_ROOT 104 G4String CexmcMessenger::histoDirName( 104 G4String CexmcMessenger::histoDirName( 105 CexmcMessenger::ma 105 CexmcMessenger::mainDirName + "histo/" ); 106 #endif 106 #endif 107 107 108 108 109 CexmcMessenger * CexmcMessenger::Instance( vo 109 CexmcMessenger * CexmcMessenger::Instance( void ) 110 { 110 { 111 if ( instance == NULL ) 111 if ( instance == NULL ) 112 instance = new CexmcMessenger; 112 instance = new CexmcMessenger; 113 113 114 return instance; 114 return instance; 115 } 115 } 116 116 117 117 118 void CexmcMessenger::Destroy( void ) 118 void CexmcMessenger::Destroy( void ) 119 { 119 { 120 delete instance; 120 delete instance; 121 instance = NULL; 121 instance = NULL; 122 } 122 } 123 123 124 124 125 CexmcMessenger::CexmcMessenger() : mainDir( NU 125 CexmcMessenger::CexmcMessenger() : mainDir( NULL ), geometryDir( NULL ), 126 physicsDir( NULL ), gunDir( NULL ), detect 126 physicsDir( NULL ), gunDir( NULL ), detectorDir( NULL ), eventDir( NULL ), 127 runDir( NULL ), monitorDir( NULL ), target 127 runDir( NULL ), monitorDir( NULL ), targetDir( NULL ), 128 vetoCounterDir( NULL ), vetoCounterLeftDir 128 vetoCounterDir( NULL ), vetoCounterLeftDir( NULL ), 129 vetoCounterRightDir( NULL ), calorimeterDi 129 vetoCounterRightDir( NULL ), calorimeterDir( NULL ), 130 calorimeterLeftDir( NULL ), calorimeterRig 130 calorimeterLeftDir( NULL ), calorimeterRightDir( NULL ), 131 monitorEDDir( NULL ), vetoCounterEDDir( NU 131 monitorEDDir( NULL ), vetoCounterEDDir( NULL ), 132 vetoCounterLeftEDDir( NULL ), vetoCounterR 132 vetoCounterLeftEDDir( NULL ), vetoCounterRightEDDir( NULL ), 133 calorimeterEDDir( NULL ), calorimeterLeftE 133 calorimeterEDDir( NULL ), calorimeterLeftEDDir( NULL ), 134 calorimeterRightEDDir( NULL ), reconstruct 134 calorimeterRightEDDir( NULL ), reconstructorDir( NULL ), visDir( NULL ) 135 #ifdef CEXMC_USE_ROOT 135 #ifdef CEXMC_USE_ROOT 136 ,histoDir( NULL ) 136 ,histoDir( NULL ) 137 #endif 137 #endif 138 { 138 { 139 mainDir = new G4UIdirectory( mainDirName ) 139 mainDir = new G4UIdirectory( mainDirName ); 140 mainDir->SetGuidance( "Cexmc settings." ); 140 mainDir->SetGuidance( "Cexmc settings." ); 141 geometryDir = new G4UIdirectory( geometryD 141 geometryDir = new G4UIdirectory( geometryDirName ); 142 geometryDir->SetGuidance( "Geometry settin 142 geometryDir->SetGuidance( "Geometry settings (gdml file etc.)" ); 143 physicsDir = new G4UIdirectory( physicsDir 143 physicsDir = new G4UIdirectory( physicsDirName ); 144 physicsDir->SetGuidance( "Physics related 144 physicsDir->SetGuidance( "Physics related settings " 145 "(production mode 145 "(production model etc.)" ); 146 gunDir = new G4UIdirectory( gunDirName ); 146 gunDir = new G4UIdirectory( gunDirName ); 147 gunDir->SetGuidance( "Gun settings (differ 147 gunDir->SetGuidance( "Gun settings (different FWHMs etc.)" ); 148 detectorDir = new G4UIdirectory( detectorD 148 detectorDir = new G4UIdirectory( detectorDirName ); 149 detectorDir->SetGuidance( "Sensitive detec 149 detectorDir->SetGuidance( "Sensitive detectors settings" ); 150 eventDir = new G4UIdirectory( eventDirName 150 eventDir = new G4UIdirectory( eventDirName ); 151 eventDir->SetGuidance( "Event settings (ve 151 eventDir->SetGuidance( "Event settings (verbose level etc.)" ); 152 runDir = new G4UIdirectory( runDirName ); 152 runDir = new G4UIdirectory( runDirName ); 153 runDir->SetGuidance( "Run settings (geomet 153 runDir->SetGuidance( "Run settings (geometry file etc.)" ); 154 monitorDir = new G4UIdirectory( monitorDir 154 monitorDir = new G4UIdirectory( monitorDirName ); 155 monitorDir->SetGuidance( "Various settings 155 monitorDir->SetGuidance( "Various settings for the monitor." ); 156 targetDir = new G4UIdirectory( targetDirNa 156 targetDir = new G4UIdirectory( targetDirName ); 157 targetDir->SetGuidance( "Various settings 157 targetDir->SetGuidance( "Various settings for the target." ); 158 vetoCounterDir = new G4UIdirectory( vetoCo 158 vetoCounterDir = new G4UIdirectory( vetoCounterDirName ); 159 vetoCounterDir->SetGuidance( "Various sett 159 vetoCounterDir->SetGuidance( "Various settings for the veto counters." ); 160 vetoCounterLeftDir = new G4UIdirectory( ve 160 vetoCounterLeftDir = new G4UIdirectory( vetoCounterLeftDirName ); 161 vetoCounterLeftDir->SetGuidance( 161 vetoCounterLeftDir->SetGuidance( 162 "\n Various settings for the le 162 "\n Various settings for the left veto counter." ); 163 vetoCounterRightDir = new G4UIdirectory( v 163 vetoCounterRightDir = new G4UIdirectory( vetoCounterRightDirName ); 164 vetoCounterRightDir->SetGuidance( 164 vetoCounterRightDir->SetGuidance( 165 "\n Various settings for the ri 165 "\n Various settings for the right veto counter." ); 166 calorimeterDir = new G4UIdirectory( calori 166 calorimeterDir = new G4UIdirectory( calorimeterDirName ); 167 calorimeterDir->SetGuidance( "Various sett 167 calorimeterDir->SetGuidance( "Various settings for the calorimeters." ); 168 calorimeterLeftDir = new G4UIdirectory( ca 168 calorimeterLeftDir = new G4UIdirectory( calorimeterLeftDirName ); 169 calorimeterLeftDir->SetGuidance( 169 calorimeterLeftDir->SetGuidance( 170 "\n Various settings for the le 170 "\n Various settings for the left calorimeter." ); 171 calorimeterRightDir = new G4UIdirectory( c 171 calorimeterRightDir = new G4UIdirectory( calorimeterRightDirName ); 172 calorimeterRightDir->SetGuidance( 172 calorimeterRightDir->SetGuidance( 173 "\n Various settings for the ri 173 "\n Various settings for the right calorimeter." ); 174 monitorEDDir = new G4UIdirectory( monitorE 174 monitorEDDir = new G4UIdirectory( monitorEDDirName ); 175 monitorEDDir->SetGuidance( 175 monitorEDDir->SetGuidance( 176 "\n Energy deposit settings in 176 "\n Energy deposit settings in the monitor (thresholds etc.)" ); 177 vetoCounterEDDir = new G4UIdirectory( veto 177 vetoCounterEDDir = new G4UIdirectory( vetoCounterEDDirName ); 178 vetoCounterEDDir->SetGuidance( 178 vetoCounterEDDir->SetGuidance( 179 "\n Energy deposit settings in 179 "\n Energy deposit settings in both veto counters " 180 "(thresholds etc.)" ); 180 "(thresholds etc.)" ); 181 vetoCounterLeftEDDir = new G4UIdirectory( 181 vetoCounterLeftEDDir = new G4UIdirectory( vetoCounterLeftEDDirName ); 182 vetoCounterLeftEDDir->SetGuidance( 182 vetoCounterLeftEDDir->SetGuidance( 183 "\n Energy deposit settings in 183 "\n Energy deposit settings in the left veto counter " 184 "(thresholds etc.)" ); 184 "(thresholds etc.)" ); 185 vetoCounterRightEDDir = new G4UIdirectory( 185 vetoCounterRightEDDir = new G4UIdirectory( vetoCounterRightEDDirName ); 186 vetoCounterRightEDDir->SetGuidance( 186 vetoCounterRightEDDir->SetGuidance( 187 "\n Energy deposit settings in 187 "\n Energy deposit settings in the right veto counter " 188 "(thresholds etc.)" ); 188 "(thresholds etc.)" ); 189 calorimeterEDDir = new G4UIdirectory( calo 189 calorimeterEDDir = new G4UIdirectory( calorimeterEDDirName ); 190 calorimeterEDDir->SetGuidance( 190 calorimeterEDDir->SetGuidance( 191 "\n Energy deposit settings in 191 "\n Energy deposit settings in both calorimeters " 192 "(thresholds etc.)" ); 192 "(thresholds etc.)" ); 193 calorimeterLeftEDDir = new G4UIdirectory( 193 calorimeterLeftEDDir = new G4UIdirectory( calorimeterLeftEDDirName ); 194 calorimeterLeftEDDir->SetGuidance( 194 calorimeterLeftEDDir->SetGuidance( 195 "\n Energy deposit settings in 195 "\n Energy deposit settings in the left calorimeter " 196 "(thresholds etc.)" ); 196 "(thresholds etc.)" ); 197 calorimeterRightEDDir = new G4UIdirectory( 197 calorimeterRightEDDir = new G4UIdirectory( calorimeterRightEDDirName ); 198 calorimeterRightEDDir->SetGuidance( 198 calorimeterRightEDDir->SetGuidance( 199 "\n Energy deposit settings in 199 "\n Energy deposit settings in the right calorimeter " 200 "(thresholds etc.)" ); 200 "(thresholds etc.)" ); 201 reconstructorDir = new G4UIdirectory( reco 201 reconstructorDir = new G4UIdirectory( reconstructorDirName ); 202 reconstructorDir->SetGuidance( "Reconstruc 202 reconstructorDir->SetGuidance( "Reconstructor settings" ); 203 visDir = new G4UIdirectory( visDirName ); 203 visDir = new G4UIdirectory( visDirName ); 204 visDir->SetGuidance( "Visualization settin 204 visDir->SetGuidance( "Visualization settings" ); 205 #ifdef CEXMC_USE_ROOT 205 #ifdef CEXMC_USE_ROOT 206 histoDir = new G4UIdirectory( histoDirName 206 histoDir = new G4UIdirectory( histoDirName ); 207 histoDir->SetGuidance( "Commands to list a 207 histoDir->SetGuidance( "Commands to list and show histograms" ); 208 #endif 208 #endif 209 } 209 } 210 210 211 211 212 CexmcMessenger::~CexmcMessenger() 212 CexmcMessenger::~CexmcMessenger() 213 { 213 { 214 delete mainDir; 214 delete mainDir; 215 delete geometryDir; 215 delete geometryDir; 216 delete physicsDir; 216 delete physicsDir; 217 delete gunDir; 217 delete gunDir; 218 delete detectorDir; 218 delete detectorDir; 219 delete eventDir; 219 delete eventDir; 220 delete runDir; 220 delete runDir; 221 delete monitorDir; 221 delete monitorDir; 222 delete targetDir; 222 delete targetDir; 223 delete vetoCounterDir; 223 delete vetoCounterDir; 224 delete vetoCounterLeftDir; 224 delete vetoCounterLeftDir; 225 delete vetoCounterRightDir; 225 delete vetoCounterRightDir; 226 delete calorimeterDir; 226 delete calorimeterDir; 227 delete calorimeterLeftDir; 227 delete calorimeterLeftDir; 228 delete calorimeterRightDir; 228 delete calorimeterRightDir; 229 delete monitorEDDir; 229 delete monitorEDDir; 230 delete vetoCounterEDDir; 230 delete vetoCounterEDDir; 231 delete vetoCounterLeftEDDir; 231 delete vetoCounterLeftEDDir; 232 delete vetoCounterRightEDDir; 232 delete vetoCounterRightEDDir; 233 delete calorimeterEDDir; 233 delete calorimeterEDDir; 234 delete calorimeterLeftEDDir; 234 delete calorimeterLeftEDDir; 235 delete calorimeterRightEDDir; 235 delete calorimeterRightEDDir; 236 delete reconstructorDir; 236 delete reconstructorDir; 237 delete visDir; 237 delete visDir; 238 #ifdef CEXMC_USE_ROOT 238 #ifdef CEXMC_USE_ROOT 239 delete histoDir; 239 delete histoDir; 240 #endif 240 #endif 241 } 241 } 242 242 243 243