Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/STCyclotron/src/STCyclotronDetectorMessenger.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 //  Author: F. Poignant, floriane.poignant@gmail.com
 27 //
 28 // file STCyclotronDetectorMesseger.cc
 29 //
 30 
 31 #include "STCyclotronDetectorMessenger.hh"
 32 #include "STCyclotronDetectorConstruction.hh"
 33 #include "G4UIdirectory.hh"
 34 #include "G4UIcmdWithADoubleAndUnit.hh"
 35 #include "G4UIcmdWithoutParameter.hh"
 36 #include "G4UIcmdWithADouble.hh"
 37 #include "G4UIcmdWithAString.hh"
 38 #include "G4UIcmdWithAnInteger.hh"
 39 #include "G4SystemOfUnits.hh"
 40 #include "G4UnitsTable.hh"
 41 #include "G4UIcommand.hh"
 42 
 43 /////////////////////////////////////////////////////////////////////////////
 44 STCyclotronDetectorMessenger::STCyclotronDetectorMessenger(STCyclotronDetectorConstruction* detector)
 45   :fDet(detector)
 46 {
 47   /////////////////////////////  
 48   // Change Target parameters//
 49   /////////////////////////////
 50     fChangeTarget = new G4UIdirectory("/changeTarget/");
 51     fChangeTarget -> SetGuidance("Change the Target diameter/thickness/material");
 52 
 53     // change Target diameter
 54     fChangeTargetDiameterCmd = new G4UIcmdWithADoubleAndUnit("/changeTarget/diameter", this);
 55     fChangeTargetDiameterCmd -> SetGuidance("Change the diameter value of the target. "
 56                                      "\nDefault value is 7. mm."
 57              "\nThe range is between 0 and 15 mm.");
 58     fChangeTargetDiameterCmd -> SetParameterName("TargetDiameter", true);
 59     fChangeTargetDiameterCmd -> SetRange("TargetDiameter > 0. && TargetDiameter < 15.");
 60     fChangeTargetDiameterCmd -> SetDefaultValue(7.*mm);
 61     fChangeTargetDiameterCmd -> AvailableForStates(G4State_Idle);
 62     fChangeTargetDiameterCmd -> SetDefaultUnit("mm");
 63     fChangeTargetDiameterCmd -> SetUnitCandidates("mm");
 64 
 65     // Change Target parameters
 66     fChangeTargetMaterial = new G4UIdirectory("/changeTarget/designedMaterial/");
 67     fChangeTargetMaterial -> SetGuidance("Change the Target material choosing isotopes and elements, and their abundance in the target");
 68     
 69     //Change target material defining isotopes
 70     fTargetIsotopeName = new G4UIcmdWithAString("/changeTarget/designedMaterial/isotopeName",this);
 71     fTargetIsotopeName->SetGuidance("name of the isotope - ex : Ni64");
 72     fTargetIsotopeName->SetParameterName("IsotopeName",false);
 73     fTargetIsotopeName->AvailableForStates(G4State_Idle);
 74     
 75     fTargetIsotopeZ = new G4UIcmdWithADouble("/changeTarget/designedMaterial/isotopeZ",this);
 76     fTargetIsotopeZ-> SetGuidance("Z of the isotope");
 77     fTargetIsotopeZ->SetParameterName("IsotopeZ",false);
 78     fTargetIsotopeZ->AvailableForStates(G4State_Idle);
 79 
 80     fTargetIsotopeN = new G4UIcmdWithAnInteger("/changeTarget/designedMaterial/isotopeN",this);
 81     fTargetIsotopeN->SetGuidance("N (number of nucleons) of the isotope");
 82     fTargetIsotopeN->SetParameterName("IsotopeN",false);
 83     fTargetIsotopeN->AvailableForStates(G4State_Idle);
 84 
 85     fTargetIsotopeA = new G4UIcmdWithADouble("/changeTarget/designedMaterial/isotopeA",this);
 86     fTargetIsotopeA->SetGuidance("A of the isotope, in g/cm3");
 87     fTargetIsotopeA->SetParameterName("IsotopeA",false);
 88     fTargetIsotopeA->AvailableForStates(G4State_Idle);
 89     
 90     //Define elements
 91     fTargetElementName= new G4UIcmdWithAString("/changeTarget/designedMaterial/ElementName",this);
 92     fTargetElementName->SetGuidance("Name of the material - ex : PureNi64");
 93     fTargetElementName->SetParameterName("ElementName",false);
 94     fTargetElementName->AvailableForStates(G4State_Idle);
 95 
 96     fTargetElementSymbole=new G4UIcmdWithAString("/changeTarget/designedMaterial/ElementSymbole",this);
 97     fTargetElementSymbole->SetGuidance("Symbole of the element : ex 64Ni");
 98     fTargetElementSymbole->SetParameterName("ElementSymbole", false);
 99     fTargetElementSymbole->AvailableForStates(G4State_Idle);
100 
101     fTargetElementNComponents = new G4UIcmdWithAnInteger("/changeTarget/designedMaterial/ElementNComponents",this);
102     fTargetElementNComponents->SetGuidance("Number of isotopes in the element");
103     fTargetElementNComponents->SetParameterName("ElementNComponent", false);
104     fTargetElementNComponents->AvailableForStates(G4State_Idle);
105     
106     fTargetElementAbundance = new G4UIcmdWithADouble("/changeTarget/designedMaterial/IsotopeAbundanceInElement",this);
107     fTargetElementAbundance->SetGuidance("Abundance of the isotope in the target");
108     fTargetElementAbundance->SetParameterName("IsotopeAbundance",false);
109     fTargetElementAbundance->AvailableForStates(G4State_Idle);
110     
111     //Change material properties
112     fChangeTargetMaterialDensityCmd = new G4UIcmdWithADouble("/changeTarget/designedMaterial/materialDensity", this);
113     fChangeTargetMaterialDensityCmd -> SetGuidance("Change the density value of the Target Material."
114               "\nDefault value : 8.85 g/cm3.");
115     fChangeTargetMaterialDensityCmd -> SetParameterName("TargetMaterialDensity", true);
116     fChangeTargetMaterialDensityCmd -> SetDefaultValue(8.85);
117     fChangeTargetMaterialDensityCmd -> AvailableForStates(G4State_Idle);
118     
119     fTargetMaterialNComponents = new G4UIcmdWithAnInteger("/changeTarget/designedMaterial/MaterialNComponents",this);
120     fTargetMaterialNComponents->SetGuidance("Number of elements in the target material");
121     fTargetMaterialNComponents->SetParameterName("MaterialNComponents",false);
122     fTargetMaterialNComponents->AvailableForStates(G4State_PreInit,G4State_Idle);
123 
124     fTargetMaterialFractionMass= new G4UIcmdWithADouble("/changeTarget/designedMaterial/MaterialFractionMass",this);
125     fTargetMaterialFractionMass->SetGuidance("Fraction mass of the element in the material");
126     fTargetMaterialFractionMass->SetParameterName("MaterialFractionMass",false);
127     fTargetMaterialFractionMass->AvailableForStates(G4State_Idle);
128 
129     fTargetMaterialNaturalElement= new G4UIcmdWithAString("/changeTarget/designedMaterial/naturalElementName",this);
130     fTargetMaterialNaturalElement->SetGuidance("Add an element using NIST database");
131     fTargetMaterialNaturalElement->SetParameterName("NaturalElement",false);
132     fTargetMaterialNaturalElement->AvailableForStates(G4State_Idle);
133 
134     fTargetMaterialNaturalElementFractionMass= new G4UIcmdWithADouble("/changeTarget/designedMaterial/naturalElementFractionMass",this);
135     fTargetMaterialNaturalElementFractionMass->SetGuidance("Add the fraction mass of the natural element");
136     fTargetMaterialNaturalElementFractionMass->SetParameterName("NaturalElementFractionMass",false);
137     fTargetMaterialNaturalElementFractionMass->AvailableForStates(G4State_Idle);
138 
139 
140     fUpdateMaterial = new G4UIcmdWithoutParameter("/changeTarget/designedMaterial/update",this);
141     fUpdateMaterial->SetGuidance("Update the material once its components are defined");
142     fUpdateMaterial->AvailableForStates(G4State_Idle);
143 
144     //Change material using physics NIST
145     fChangeTargetMaterialCmd = new G4UIcmdWithAString("/changeTarget/materialNist", this);
146     fChangeTargetMaterialCmd -> SetGuidance("Change the material of your target using the NIST database."
147              "\nTo get the list of the available NIST materials, please select 'TargetMaterial->NistMaterialList'."
148              "\nExample of a NIST material : 'G4_Ni'.");
149     fChangeTargetMaterialCmd -> SetParameterName("TargetMaterial",false);
150     
151 
152     //Change Target thickness
153      fChangeTargetThicknessCmd = new G4UIcmdWithADoubleAndUnit("/changeTarget/thickness", this);
154      fChangeTargetThicknessCmd -> SetGuidance("Change the thickness value of the Target."
155               "\nDefault value : 0.6 mm.");
156     fChangeTargetThicknessCmd -> SetParameterName("TargetThickness", true);
157     fChangeTargetThicknessCmd -> SetDefaultValue(0.6*mm);
158     fChangeTargetThicknessCmd -> AvailableForStates(G4State_Idle);
159     fChangeTargetThicknessCmd -> SetDefaultUnit("mm");
160     fChangeTargetThicknessCmd -> SetUnitCandidates("mm");
161     
162 
163     //////////////////////////
164     //Change foil parameters//
165     //////////////////////////
166 
167     fChangeFoil = new G4UIdirectory("/changeFoil/");
168     fChangeFoil -> SetGuidance("Change the Foil thickness");
169 
170     // Change Foil Thickness
171     fChangeFoilThicknessCmd = new G4UIcmdWithADoubleAndUnit("/changeFoil/thickness", this);
172     fChangeFoilThicknessCmd -> SetGuidance("Change the thickness value of the foil "
173             "\nThe default value is 0.32 mm.");
174     fChangeFoilThicknessCmd -> SetParameterName("FoilThickness", true);
175     fChangeFoilThicknessCmd -> SetDefaultValue(.32*mm);
176     fChangeFoilThicknessCmd -> AvailableForStates(G4State_Idle);
177     fChangeFoilThicknessCmd -> SetDefaultUnit("mm");
178     fChangeFoilThicknessCmd -> SetUnitCandidates("mm");
179     
180     // Change Target material
181     fChangeFoilMaterial = new G4UIdirectory("/changeFoil/designedMaterial/");
182     fChangeFoilMaterial -> SetGuidance("Change the Foil material choosing isotopes and elements, and their abundance in the foil");
183     
184     //Change target material defining isotopes
185     fFoilIsotopeName = new G4UIcmdWithAString("/changeFoil/designedMaterial/isotopeName",this);
186     fFoilIsotopeName->SetGuidance("name of the isotope - ex : Ni64");
187     fFoilIsotopeName->SetParameterName("foilIsotopeName",false);
188     fFoilIsotopeName->AvailableForStates(G4State_Idle);
189     
190     fFoilIsotopeZ = new G4UIcmdWithADouble("/changeFoil/designedMaterial/isotopeZ",this);
191     fFoilIsotopeZ-> SetGuidance("Z of the isotope");
192     fFoilIsotopeZ->SetParameterName("foilIsotopeZ",false);
193     fFoilIsotopeZ->AvailableForStates(G4State_Idle);
194 
195     fFoilIsotopeN = new G4UIcmdWithAnInteger("/changeFoil/designedMaterial/isotopeN",this);
196     fFoilIsotopeN->SetGuidance("N (number of nucleons) of the isotope");
197     fFoilIsotopeN->SetParameterName("foilIsotopeN",false);
198     fFoilIsotopeN->AvailableForStates(G4State_Idle);
199 
200     fFoilIsotopeA = new G4UIcmdWithADouble("/changeFoil/designedMaterial/isotopeA",this);
201     fFoilIsotopeA->SetGuidance("A of the isotope, in g/cm3");
202     fFoilIsotopeA->SetParameterName("foilIsotopeA",false);
203     fFoilIsotopeA->AvailableForStates(G4State_Idle);
204     
205     //Define elements
206 
207     fFoilElementName= new G4UIcmdWithAString("/changeFoil/designedMaterial/ElementName",this);
208     fFoilElementName->SetGuidance("Name of the material - ex : PureNi64");
209     fFoilElementName->SetParameterName("foilElementName",false);
210     fFoilElementName->AvailableForStates(G4State_Idle);
211 
212     fFoilElementSymbole=new G4UIcmdWithAString("/changeFoil/designedMaterial/ElementSymbole",this);
213     fFoilElementSymbole->SetGuidance("Symbole of the element : ex 64Ni");
214     fFoilElementSymbole->SetParameterName("foilElementSymbole", false);
215     fFoilElementSymbole->AvailableForStates(G4State_Idle);
216 
217     fFoilElementNComponents = new G4UIcmdWithAnInteger("/changeFoil/designedMaterial/ElementNComponents",this);
218     fFoilElementNComponents->SetGuidance("Number of isotopes in the element");
219     fFoilElementNComponents->SetParameterName("foilElementNComponent", false);
220     fFoilElementNComponents->AvailableForStates(G4State_Idle);
221     
222     fFoilElementAbundance = new G4UIcmdWithADouble("/changeFoil/designedMaterial/IsotopeAbundanceInElement",this);
223     fFoilElementAbundance->SetGuidance("Abundance of the isotope in the foil");
224     fFoilElementAbundance->SetParameterName("foilIsotopeAbundance",false);
225     fFoilElementAbundance->AvailableForStates(G4State_Idle);
226     
227     //Change material properties
228     fChangeFoilMaterialDensityCmd = new G4UIcmdWithADouble("/changeFoil/designedMaterial/materialDensity", this);
229     fChangeFoilMaterialDensityCmd -> SetGuidance("Change the density value of the Target Material");
230     fChangeFoilMaterialDensityCmd -> SetParameterName("FoilMaterialDensity", true);
231     fChangeFoilMaterialDensityCmd -> AvailableForStates(G4State_Idle);
232     
233     fFoilMaterialNComponents = new G4UIcmdWithAnInteger("/changeFoil/designedMaterial/MaterialNComponents",this);
234     fFoilMaterialNComponents->SetGuidance("Number of elements in the target material");
235     fFoilMaterialNComponents->SetParameterName("foilMaterialNComponents",false);
236     fFoilMaterialNComponents->AvailableForStates(G4State_Idle);
237 
238     fFoilMaterialFractionMass= new G4UIcmdWithADouble("/changeFoil/designedMaterial/MaterialFractionMass",this);
239     fFoilMaterialFractionMass->SetGuidance("Fraction mass of the element in the material");
240     fFoilMaterialFractionMass->SetParameterName("foilMaterialFractionMass",false);
241     fFoilMaterialFractionMass->AvailableForStates(G4State_Idle);
242 
243     fFoilMaterialNaturalElement= new G4UIcmdWithAString("/changeFoil/designedMaterial/naturalElementName",this);
244     fFoilMaterialNaturalElement->SetGuidance("Add an element using NIST database");
245     fFoilMaterialNaturalElement->SetParameterName("foilNaturalElement",false);
246     fFoilMaterialNaturalElement->AvailableForStates(G4State_Idle);
247 
248     fFoilMaterialNaturalElementFractionMass= new G4UIcmdWithADouble("/changeFoil/designedMaterial/naturalElementFractionMass",this);
249     fFoilMaterialNaturalElementFractionMass->SetGuidance("Add the fraction mass of the natural element");
250     fFoilMaterialNaturalElementFractionMass->SetParameterName("foilNaturalElementFractionMass",false);
251     fFoilMaterialNaturalElementFractionMass->AvailableForStates(G4State_Idle);
252 
253 
254     fUpdateFoilMaterial = new G4UIcmdWithoutParameter("/changeFoil/designedMaterial/update",this);
255     fUpdateFoilMaterial->SetGuidance("Update the material once its components are defined");
256     fUpdateFoilMaterial->AvailableForStates(G4State_Idle);
257 
258     //Change foil material using physics NIST
259 
260     fChangeFoilMaterialCmd = new G4UIcmdWithAString("/changeFoil/materialNist", this);
261     fChangeFoilMaterialCmd -> SetGuidance("Change the material of your foil using the NIST database."
262            "\nTo get the list of the available NIST materials, please select 'TargetMaterial->NistMaterialList'."
263            "\nExample of a NIST material : 'G4_Ni'.");
264     fChangeFoilMaterialCmd -> SetParameterName("FoilMaterial",false);
265     
266    }
267 
268 STCyclotronDetectorMessenger::~STCyclotronDetectorMessenger()
269 {
270     delete fChangeTarget; 
271     delete fChangeTargetDiameterCmd; 
272     delete fChangeTargetMaterial;
273     delete fTargetIsotopeName;
274     delete fTargetIsotopeZ ;
275     delete fTargetIsotopeN;
276     delete fTargetIsotopeA;
277     delete fTargetElementName;
278     delete fTargetElementSymbole;
279     delete fTargetElementNComponents;
280     delete fTargetElementAbundance ;
281     delete fChangeTargetMaterialDensityCmd ;
282     delete fTargetMaterialNComponents;
283     delete fTargetMaterialFractionMass;
284     delete fTargetMaterialNaturalElement;
285     delete fTargetMaterialNaturalElementFractionMass;
286     delete fUpdateMaterial;
287     delete fChangeTargetMaterialCmd;
288     delete fChangeFoilMaterial;
289     delete fFoilIsotopeName;
290     delete fFoilIsotopeZ ;
291     delete fFoilIsotopeN;
292     delete fFoilIsotopeA;
293     delete fFoilElementName;
294     delete fFoilElementSymbole;
295     delete fFoilElementNComponents;
296     delete fFoilElementAbundance ;
297     delete fChangeFoilMaterialDensityCmd ;
298     delete fFoilMaterialNComponents;
299     delete fFoilMaterialFractionMass;
300     delete fFoilMaterialNaturalElement;
301     delete fFoilMaterialNaturalElementFractionMass;
302     delete fUpdateFoilMaterial;
303     delete fChangeFoilMaterialCmd;
304     delete fChangeTargetThicknessCmd;
305     delete fChangeFoil; 
306     delete fChangeFoilThicknessCmd;
307     
308 }
309 
310 void STCyclotronDetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
311 {
312   //TARGET
313   //DIAMETER
314   if( command == fChangeTargetDiameterCmd)
315     {
316       G4double updatedValue  = fChangeTargetDiameterCmd -> GetNewDoubleValue(newValue);
317       fDet -> SetTargetDiameter(updatedValue);
318     }
319  
320   //MATERIAL
321   else if(command == fTargetIsotopeName)
322     {
323       fDet -> SetTargetIsotopeName(newValue);
324     }
325 
326   else if(command == fTargetIsotopeZ)
327     {
328       fDet -> SetTargetIsotopeZ(fTargetIsotopeZ->GetNewDoubleValue(newValue));
329     }
330 
331   else if(command == fTargetIsotopeN)
332     {
333       fDet -> SetTargetIsotopeN(fTargetIsotopeN->GetNewIntValue(newValue));
334     }
335 
336   else if(command == fTargetIsotopeA)
337     {
338       fDet -> SetTargetIsotopeA(fTargetIsotopeA->GetNewDoubleValue(newValue));
339     }
340 
341   else if(command == fTargetElementName)
342     {
343       fDet -> SetTargetElementName(newValue);
344     }
345 
346   else if(command == fTargetElementSymbole)
347     {
348       fDet -> SetTargetElementSymbole(newValue);
349     }
350 
351   else if(command == fTargetElementNComponents)
352     {
353       fDet -> SetTargetElementNComponents(fTargetElementNComponents->GetNewIntValue(newValue));
354     }
355 
356   else if(command == fTargetElementAbundance)
357     {
358       fDet -> SetTargetElementAbundance(fTargetElementAbundance->GetNewDoubleValue(newValue));
359     }
360 
361 
362   else if (command == fChangeTargetMaterialDensityCmd )
363     {
364       G4double updatedValue = fChangeTargetMaterialDensityCmd -> GetNewDoubleValue(newValue);
365       fDet -> SetTargetMaterialDensity(updatedValue);
366     }
367 
368   else if(command == fTargetMaterialNComponents)
369     {
370       fDet -> SetTargetMaterialNComponents(fTargetMaterialNComponents->GetNewIntValue(newValue));
371     }
372 
373   else if(command == fTargetMaterialFractionMass)
374     {
375       fDet -> SetTargetMaterialFractionMass(fTargetMaterialFractionMass->GetNewDoubleValue(newValue));
376     }
377 
378   else if(command == fUpdateMaterial)
379     {
380       fDet -> UpdateMaterial();
381     }
382 
383            //NATURAL ELEMENT
384   else if(command == fTargetMaterialNaturalElement)
385     {
386       fDet ->SetTargetNaturalElement(newValue);
387     }
388 
389   else if(command == fTargetMaterialNaturalElementFractionMass)
390     {
391       fDet ->SetTargetNaturalMaterialFractionMass(fTargetMaterialNaturalElementFractionMass->GetNewDoubleValue(newValue));
392     }
393 
394 
395          //NATURAL MATERIAL
396   
397   else if (command == fChangeTargetMaterialCmd )
398     {
399       fDet -> SetTargetMaterial(newValue);
400     }
401 
402       //THICKNESS
403 
404   else if (command == fChangeTargetThicknessCmd )
405     {
406       G4double updatedValue = fChangeTargetThicknessCmd -> GetNewDoubleValue(newValue);
407       fDet -> SetTargetThickness(updatedValue);
408     }
409 
410   //FOIL
411 
412   else if (command == fChangeFoilThicknessCmd )
413     {
414       G4double updatedValue = fChangeFoilThicknessCmd -> GetNewDoubleValue(newValue);
415       fDet -> SetFoilThickness(updatedValue);
416     }
417 
418    //MATERIAL FOIL
419   else if(command == fFoilIsotopeName)
420     {
421       fDet -> SetFoilIsotopeName(newValue);
422     }
423 
424   else if(command == fFoilIsotopeZ)
425     {
426       fDet -> SetFoilIsotopeZ(fFoilIsotopeZ->GetNewDoubleValue(newValue));
427     }
428 
429   else if(command == fFoilIsotopeN)
430     {
431       fDet -> SetFoilIsotopeN(fFoilIsotopeN->GetNewIntValue(newValue));
432     }
433 
434   else if(command == fFoilIsotopeA)
435     {
436       fDet -> SetFoilIsotopeA(fFoilIsotopeA->GetNewDoubleValue(newValue));
437     }
438 
439   else if(command == fFoilElementName)
440     {
441       fDet -> SetFoilElementName(newValue);
442     }
443 
444   else if(command == fFoilElementSymbole)
445     {
446       fDet -> SetFoilElementSymbole(newValue);
447     }
448 
449   else if(command == fFoilElementNComponents)
450     {
451       fDet -> SetFoilElementNComponents(fFoilElementNComponents->GetNewIntValue(newValue));
452     }
453 
454   else if(command == fFoilElementAbundance)
455     {
456       fDet -> SetFoilElementAbundance(fFoilElementAbundance->GetNewDoubleValue(newValue));
457     }
458 
459 
460   else if (command == fChangeFoilMaterialDensityCmd )
461     {
462       G4double updatedValue = fChangeFoilMaterialDensityCmd -> GetNewDoubleValue(newValue);
463       fDet -> SetFoilMaterialDensity(updatedValue);
464     }
465 
466   else if(command == fFoilMaterialNComponents)
467     {
468       fDet -> SetFoilMaterialNComponents(fFoilMaterialNComponents->GetNewIntValue(newValue));
469     }
470 
471   else if(command == fFoilMaterialFractionMass)
472     {
473       fDet -> SetFoilMaterialFractionMass(fFoilMaterialFractionMass->GetNewDoubleValue(newValue));
474     }
475 
476   else if(command == fUpdateFoilMaterial)
477     {
478       fDet -> UpdateFoilMaterial();
479     }
480 
481   //NATURAL ELEMENT
482   else if(command == fFoilMaterialNaturalElement)
483     {
484       fDet ->SetFoilNaturalElement(newValue);
485     }
486 
487   else if(command == fFoilMaterialNaturalElementFractionMass)
488     {
489       fDet ->SetFoilNaturalMaterialFractionMass(fFoilMaterialNaturalElementFractionMass->GetNewDoubleValue(newValue));
490     }
491 
492  //NATURAL MATERIAL 
493   else if (command == fChangeFoilMaterialCmd )
494     {
495       fDet -> SetFoilMaterial(newValue);
496     }
497 }
498