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 // 28 // Author: Elena Guardincerri (Elena.Guardince 29 // 30 // History: 31 // ----------- 32 // 28 Nov 2001 Elena Guardincerri Created 33 // 34 // ------------------------------------------- 35 36 #include "XrayFluoDetectorMessenger.hh" 37 #include "XrayFluoDetectorConstruction.hh" 38 #include "G4RunManager.hh" 39 #include "G4UIdirectory.hh" 40 #include "G4UIcmdWithAString.hh" 41 #include "G4UIcmdWithADoubleAndUnit.hh" 42 #include "G4UIcmdWithoutParameter.hh" 43 #include "G4UIcmdWithABool.hh" 44 45 //....oooOO0OOooo........oooOO0OOooo........oo 46 47 XrayFluoDetectorMessenger::XrayFluoDetectorMes 48 :Detector(Det) 49 { 50 detDir = new G4UIdirectory("/apparate/"); 51 detDir->SetGuidance("detector control."); 52 53 UpdateCmd = new G4UIcmdWithoutParameter("/ap 54 UpdateCmd->SetGuidance("Update apparate geom 55 UpdateCmd->SetGuidance("This command MUST be 56 UpdateCmd->SetGuidance("if you changed geome 57 58 UpdateCmd->AvailableForStates(G4State_Idle); 59 60 sampleCmd = new G4UIcmdWithAString("/apparat 61 sampleCmd->SetGuidance("select a diferent ma 62 sampleCmd->SetParameterName("material",true) 63 sampleCmd->SetDefaultValue("mars1"); 64 sampleCmd->AvailableForStates(G4State_Idle); 65 66 detectorCmd = new G4UIcmdWithAString("/appar 67 detectorCmd->SetGuidance("select a diferent 68 detectorCmd->SetParameterName("detector",tru 69 detectorCmd->SetDefaultValue("sili"); 70 detectorCmd->SetCandidates("sili hpge"); 71 detectorCmd->AvailableForStates(G4State_Idle 72 73 grainDiaCmd = new G4UIcmdWithADoubleAndUnit( 74 grainDiaCmd->SetGuidance( "Set diameter of g 75 grainDiaCmd->SetGuidance( "After this, /appa 76 grainDiaCmd->SetGuidance( "Default: 0.5 mm " 77 grainDiaCmd->SetParameterName( "Grain Diamet 78 grainDiaCmd->SetDefaultUnit( "mm" ); 79 grainDiaCmd->SetUnitCategory( "Length" ); 80 grainDiaCmd->AvailableForStates(G4State_Idle 81 82 granularityFlagCmd= new G4UIcmdWithABool("/a 83 granularityFlagCmd->SetGuidance("Set if samp 84 granularityFlagCmd->SetGuidance( "After this 85 granularityFlagCmd->SetParameterName("Granul 86 granularityFlagCmd->SetDefaultValue(false); 87 granularityFlagCmd->AvailableForStates(G4Sta 88 89 OhmicPosThicknessCmd = new G4UIcmdWithADoubl 90 OhmicPosThicknessCmd->SetGuidance( "Changes 91 OhmicPosThicknessCmd->SetGuidance( "After th 92 OhmicPosThicknessCmd->SetGuidance( "Default: 93 OhmicPosThicknessCmd->SetParameterName( "Ohm 94 OhmicPosThicknessCmd->SetDefaultUnit( "mm" ) 95 OhmicPosThicknessCmd->SetUnitCategory( "Leng 96 OhmicPosThicknessCmd->AvailableForStates(G4S 97 } 98 99 //....oooOO0OOooo........oooOO0OOooo........oo 100 101 XrayFluoDetectorMessenger::~XrayFluoDetectorM 102 { 103 delete UpdateCmd; 104 delete detDir; 105 } 106 107 //....oooOO0OOooo........oooOO0OOooo........oo 108 109 void XrayFluoDetectorMessenger::SetNewValue(G4 110 { 111 if( command == UpdateCmd ) 112 { 113 //This triggers a full re-build of the ge 114 //geometry will take care of that. 115 Detector->UpdateGeometry(); 116 return; 117 } 118 else if ( command == sampleCmd ) 119 { 120 Detector->SetSampleMaterial(newValue); 121 } 122 123 else if ( command == detectorCmd ) 124 { 125 Detector->SetDetectorType(newValue); 126 } 127 else if ( command == grainDiaCmd ) 128 { 129 G4double newSize = grainDiaCmd->GetNewDou 130 Detector->SetGrainDia(newSize); 131 } 132 133 else if ( command == granularityFlagCmd ) 134 { 135 Detector->DeleteGrainObjects(); 136 G4bool newGranFlag = granularityFlagCmd-> 137 Detector->SetSampleGranularity(newGranFla 138 } 139 else if ( command == OhmicPosThicknessCmd ) 140 { 141 G4double newSize = OhmicPosThicknessCmd-> 142 Detector->SetOhmicPosThickness(newSize); 143 } 144 //Notify the run manager that the geometry ha 145 G4RunManager::GetRunManager()->GeometryHasBee 146 } 147 148 149 150 //....oooOO0OOooo........oooOO0OOooo........oo 151 152 153 154 155 156 157 158 159 160