00001 /* BDSIM code. Version 1.0 00002 Author: Grahame A. Blair, Royal Holloway, Univ. of London. 00003 Last modified 24.7.2002 00004 Copyright (c) 2002 by G.A.Blair. ALL RIGHTS RESERVED. 00005 */ 00006 00007 // This code implementation is the intellectual property of 00008 // the GEANT4 collaboration. 00009 // 00010 // By copying, distributing or modifying the Program (or any work 00011 // based on the Program) you indicate your acceptance of this statement, 00012 // and all its terms. 00013 // 00014 // $Id: BDSDetectorMessenger.cc,v 1.1 2005/01/22 16:42:31 agapov Exp $ 00015 // GEANT4 tag $Name: $ 00016 // 00017 // 00018 00019 //================================================================= 00020 //================================================================= 00021 00022 #include "BDSDetectorMessenger.hh" 00023 00024 #include "BDSDetectorConstruction.hh" 00025 #include "G4UIdirectory.hh" 00026 #include "G4UIcmdWithAString.hh" 00027 #include "G4UIcmdWithAnInteger.hh" 00028 #include "G4UIcmdWithADoubleAndUnit.hh" 00029 #include "G4UIcmdWithoutParameter.hh" 00030 00031 //================================================================= 00032 00033 BDSDetectorMessenger::BDSDetectorMessenger(BDSDetectorConstruction * BDSDet) 00034 :BDSDetector(BDSDet) 00035 { 00036 /* 00037 BDSdetDir = new G4UIdirectory("/quad/"); 00038 BDSdetDir->SetGuidance("BDS detector control."); 00039 */ 00040 // AbsMaterCmd = new G4UIcmdWithAString("/quad/setAbsMat",this); 00041 // AbsMaterCmd->SetGuidance("Select Material of the Absorber."); 00042 //AbsMaterCmd->SetParameterName("choice",false); 00043 //AbsMaterCmd->AvailableForStates(Idle); 00044 00045 // GapMaterCmd = new G4UIcmdWithAString("/quad/setGapMat",this); 00046 // GapMaterCmd->SetGuidance("Select Material of the Gap."); 00047 // GapMaterCmd->SetParameterName("choice",false); 00048 // GapMaterCmd->AvailableForStates(Idle); 00049 00050 // AbsThickCmd = new G4UIcmdWithADoubleAndUnit("/quad/setAbsThick",this); 00051 // AbsThickCmd->SetGuidance("Set Thickness of the Absorber"); 00052 // AbsThickCmd->SetParameterName("Size",false); 00053 // AbsThickCmd->SetRange("Size>=0."); 00054 // AbsThickCmd->SetUnitCategory("Length"); 00055 // AbsThickCmd->AvailableForStates(Idle); 00056 00057 // GapThickCmd = new G4UIcmdWithADoubleAndUnit("/quad/setGapThick",this); 00058 // GapThickCmd->SetGuidance("Set Thickness of the Gap"); 00059 // GapThickCmd->SetParameterName("Size",false); 00060 // GapThickCmd->SetRange("Size>=0."); 00061 // GapThickCmd->SetUnitCategory("Length"); 00062 // GapThickCmd->AvailableForStates(Idle); 00063 00064 // SizeYZCmd = new G4UIcmdWithADoubleAndUnit("/quad/setSizeYZ",this); 00065 // SizeYZCmd->SetGuidance("Set tranverse size of the quadimeter"); 00066 // SizeYZCmd->SetParameterName("Size",false); 00067 // SizeYZCmd->SetRange("Size>0."); 00068 // SizeYZCmd->SetUnitCategory("Length"); 00069 // SizeYZCmd->AvailableForStates(Idle); 00070 00071 // NbLayersCmd = new G4UIcmdWithAnInteger("/quad/setNbOfLayers",this); 00072 // NbLayersCmd->SetGuidance("Set number of layers."); 00073 // NbLayersCmd->SetParameterName("NbLayers",false); 00074 // NbLayersCmd->SetRange("NbLayers>0 && NbLayers<500"); 00075 // NbLayersCmd->AvailableForStates(Idle); 00076 00077 // UpdateCmd = new G4UIcmdWithoutParameter("/quad/update",this); 00078 // UpdateCmd->SetGuidance("Update quadimeter geometry."); 00079 // UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); 00080 // UpdateCmd->SetGuidance("if you changed geometrical value(s)."); 00081 // UpdateCmd->AvailableForStates(Idle); 00082 /* 00083 MagFieldCmd = new G4UIcmdWithADoubleAndUnit("/quad/setField",this); 00084 MagFieldCmd->SetGuidance("Define magnetic field."); 00085 MagFieldCmd->SetGuidance("Magnetic field will be in Y direction."); 00086 MagFieldCmd->SetParameterName("By",false); 00087 MagFieldCmd->SetUnitCategory("Magnetic flux density"); 00088 MagFieldCmd->AvailableForStates(Idle); 00089 */ 00090 } 00091 00092 //================================================================= 00093 00094 BDSDetectorMessenger::~BDSDetectorMessenger() 00095 { 00096 // delete NbLayersCmd; 00097 // delete AbsMaterCmd; delete GapMaterCmd; 00098 // delete AbsThickCmd; delete GapThickCmd; 00099 // delete SizeYZCmd; delete UpdateCmd; 00100 /* 00101 delete MagFieldCmd; 00102 delete BDSdetDir; 00103 */ 00104 } 00105 00106 //================================================================= 00107 00108 void BDSDetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) 00109 { 00110 // if( command == AbsMaterCmd ) 00111 // { BDSDetector->SetAbsorberMaterial(newValue);} 00112 00113 // if( command == GapMaterCmd ) 00114 // { BDSDetector->SetGapMaterial(newValue);} 00115 00116 // if( command == AbsThickCmd ) 00117 // { BDSDetector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} 00118 00119 // if( command == GapThickCmd ) 00120 // { BDSDetector->SetGapThickness(GapThickCmd->GetNewDoubleValue(newValue));} 00121 00122 // if( command == SizeYZCmd ) 00123 // { BDSDetector->SetQuadSizeYZ(SizeYZCmd->GetNewDoubleValue(newValue));} 00124 00125 // if( command == NbLayersCmd ) 00126 // { BDSDetector->SetNbOfLayers(NbLayersCmd->GetNewIntValue(newValue));} 00127 00128 // if( command == UpdateCmd ) 00129 // { BDSDetector->UpdateGeometry(); } 00130 00131 /* 00132 if( command == MagFieldCmd ) 00133 { BDSDetector->SetMagField(MagFieldCmd->GetNewDoubleValue(newValue));} 00134 */ 00135 } 00136 00137 //=================================================================