Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/exoticphysics/saxs/src/SAXSDetectorConstructionMessenger.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 ]

Diff markup

Differences between /examples/extended/exoticphysics/saxs/src/SAXSDetectorConstructionMessenger.cc (Version 11.3.0) and /examples/extended/exoticphysics/saxs/src/SAXSDetectorConstructionMessenger.cc (Version 11.2.2)


  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 /// \file SAXSDetectorConstructionMessenger.cc     26 /// \file SAXSDetectorConstructionMessenger.cc
 27 /// \brief Implementation of the SAXSDetectorC     27 /// \brief Implementation of the SAXSDetectorConstructionMessenger class
 28 //                                                 28 //
 29 //....oooOO0OOooo........oooOO0OOooo........oo     29 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 30                                                    30 
 31 #include "SAXSDetectorConstructionMessenger.hh     31 #include "SAXSDetectorConstructionMessenger.hh"
 32                                                << 
 33 #include "SAXSDetectorConstruction.hh"             32 #include "SAXSDetectorConstruction.hh"
 34                                                    33 
 35 #include "G4RunManager.hh"                     <<  34 #include "G4UIdirectory.hh"
                                                   >>  35 #include "G4UIcmdWithADoubleAndUnit.hh"
                                                   >>  36 #include "G4UIcmdWithADouble.hh"
                                                   >>  37 #include "G4UIcmdWithAnInteger.hh"
 36 #include "G4UIcmdWith3VectorAndUnit.hh"            38 #include "G4UIcmdWith3VectorAndUnit.hh"
 37 #include "G4UIcmdWithABool.hh"                     39 #include "G4UIcmdWithABool.hh"
 38 #include "G4UIcmdWithADouble.hh"               << 
 39 #include "G4UIcmdWithADoubleAndUnit.hh"        << 
 40 #include "G4UIcmdWithAString.hh"                   40 #include "G4UIcmdWithAString.hh"
 41 #include "G4UIcmdWithAnInteger.hh"             <<  41 
 42 #include "G4UIdirectory.hh"                    <<  42 #include "G4RunManager.hh"
 43 #include "G4ios.hh"                                43 #include "G4ios.hh"
 44                                                    44 
 45 //....oooOO0OOooo........oooOO0OOooo........oo     45 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 46                                                    46 
 47 SAXSDetectorConstructionMessenger::SAXSDetecto <<  47 SAXSDetectorConstructionMessenger::SAXSDetectorConstructionMessenger
 48   SAXSDetectorConstruction* detconstr)         <<  48 (SAXSDetectorConstruction* detconstr):
 49   : G4UImessenger(), fDetector(detconstr)      <<  49   G4UImessenger(), fDetector(detconstr)
 50 {                                                  50 {
 51   fCmdDir = new G4UIdirectory("/det/");            51   fCmdDir = new G4UIdirectory("/det/");
 52   fCmdDir->SetGuidance("Detector Control");        52   fCmdDir->SetGuidance("Detector Control");
 53                                                    53 
 54   fSetCustomMatFFfilename = new G4UIcmdWithASt <<  54   fSetCustomMatFFfilename = new G4UIcmdWithAString("/det/SetCustomMatFF",this);  
 55   fSetCustomMatFFfilename->SetGuidance("Set Cu     55   fSetCustomMatFFfilename->SetGuidance("Set CustomMat FF filename");
 56   fSetCustomMatFFfilename->SetParameterName("m <<  56   fSetCustomMatFFfilename->SetParameterName("mmff",false);
 57   fSetCustomMatFFfilename->AvailableForStates(     57   fSetCustomMatFFfilename->AvailableForStates(G4State_PreInit);
 58                                                    58 
 59   fSetCustomMatDensityCmd = new G4UIcmdWithADo <<  59   fSetCustomMatDensityCmd = new G4UIcmdWithADouble("/det/setCustomMatDensity",
                                                   >>  60                                                    this);
 60   fSetCustomMatDensityCmd->SetGuidance("Set de     61   fSetCustomMatDensityCmd->SetGuidance("Set density for custom material");
 61   fSetCustomMatDensityCmd->SetParameterName("c <<  62   fSetCustomMatDensityCmd->SetParameterName("cmden",false);
 62   fSetCustomMatDensityCmd->SetRange("cmden>0."     63   fSetCustomMatDensityCmd->SetRange("cmden>0.");
 63   fSetCustomMatDensityCmd->AvailableForStates( <<  64   fSetCustomMatDensityCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
 64                                                    65 
 65   fSetCustomMatHmassfractCmd = new G4UIcmdWith <<  66   fSetCustomMatHmassfractCmd = new G4UIcmdWithADouble
 66   fSetCustomMatHmassfractCmd->SetGuidance("Set <<  67     ("/det/setCustomMatHmassfract",this);
 67   fSetCustomMatHmassfractCmd->SetParameterName <<  68   fSetCustomMatHmassfractCmd->
                                                   >>  69     SetGuidance("Set H mass fraction for custom material");
                                                   >>  70   fSetCustomMatHmassfractCmd->SetParameterName("cmHmf",false);
 68   fSetCustomMatHmassfractCmd->SetRange("cmHmf>     71   fSetCustomMatHmassfractCmd->SetRange("cmHmf>=0.");
 69   fSetCustomMatHmassfractCmd->AvailableForStat <<  72   fSetCustomMatHmassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
 70                                                    73 
 71   fSetCustomMatCmassfractCmd = new G4UIcmdWith <<  74   fSetCustomMatCmassfractCmd = new G4UIcmdWithADouble
 72   fSetCustomMatCmassfractCmd->SetGuidance("Set <<  75     ("/det/setCustomMatCmassfract",this);
 73   fSetCustomMatCmassfractCmd->SetParameterName <<  76   fSetCustomMatCmassfractCmd->
                                                   >>  77     SetGuidance("Set C mass fraction for custom material");
                                                   >>  78   fSetCustomMatCmassfractCmd->SetParameterName("cmCmf",false);
 74   fSetCustomMatCmassfractCmd->SetRange("cmCmf>     79   fSetCustomMatCmassfractCmd->SetRange("cmCmf>=0.");
 75   fSetCustomMatCmassfractCmd->AvailableForStat <<  80   fSetCustomMatCmassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
 76                                                    81 
 77   fSetCustomMatNmassfractCmd = new G4UIcmdWith <<  82   fSetCustomMatNmassfractCmd = new G4UIcmdWithADouble
 78   fSetCustomMatNmassfractCmd->SetGuidance("Set <<  83     ("/det/setCustomMatNmassfract",this);
 79   fSetCustomMatNmassfractCmd->SetParameterName <<  84   fSetCustomMatNmassfractCmd->SetGuidance
                                                   >>  85     ("Set N mass fraction for custom material");
                                                   >>  86   fSetCustomMatNmassfractCmd->SetParameterName("cmNmf",false);
 80   fSetCustomMatNmassfractCmd->SetRange("cmNmf>     87   fSetCustomMatNmassfractCmd->SetRange("cmNmf>=0.");
 81   fSetCustomMatNmassfractCmd->AvailableForStat <<  88   fSetCustomMatNmassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
 82                                                    89 
 83   fSetCustomMatOmassfractCmd = new G4UIcmdWith <<  90   fSetCustomMatOmassfractCmd = new G4UIcmdWithADouble
 84   fSetCustomMatOmassfractCmd->SetGuidance("Set <<  91     ("/det/setCustomMatOmassfract",this);
 85   fSetCustomMatOmassfractCmd->SetParameterName <<  92   fSetCustomMatOmassfractCmd->SetGuidance
                                                   >>  93     ("Set O mass fraction for custom material");
                                                   >>  94   fSetCustomMatOmassfractCmd->SetParameterName("cmOmf",false);
 86   fSetCustomMatOmassfractCmd->SetRange("cmOmf>     95   fSetCustomMatOmassfractCmd->SetRange("cmOmf>=0.");
 87   fSetCustomMatOmassfractCmd->AvailableForStat <<  96   fSetCustomMatOmassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
 88                                                    97 
 89   fSetCustomMatNamassfractCmd = new G4UIcmdWit <<  98   fSetCustomMatNamassfractCmd = new G4UIcmdWithADouble
 90   fSetCustomMatNamassfractCmd->SetGuidance("Se <<  99     ("/det/setCustomMatNamassfract",this);
 91   fSetCustomMatNamassfractCmd->SetParameterNam << 100   fSetCustomMatNamassfractCmd->
                                                   >> 101     SetGuidance("Set Na mass fraction for custom material");
                                                   >> 102   fSetCustomMatNamassfractCmd->SetParameterName("cmNamf",false);
 92   fSetCustomMatNamassfractCmd->SetRange("cmNam    103   fSetCustomMatNamassfractCmd->SetRange("cmNamf>=0.");
 93   fSetCustomMatNamassfractCmd->AvailableForSta << 104   fSetCustomMatNamassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
 94                                                   105 
 95   fSetCustomMatPmassfractCmd = new G4UIcmdWith << 106   fSetCustomMatPmassfractCmd = new G4UIcmdWithADouble
 96   fSetCustomMatPmassfractCmd->SetGuidance("Set << 107     ("/det/setCustomMatPmassfract",this);
 97   fSetCustomMatPmassfractCmd->SetParameterName << 108   fSetCustomMatPmassfractCmd->
                                                   >> 109     SetGuidance("Set P mass fraction for custom material");
                                                   >> 110   fSetCustomMatPmassfractCmd->SetParameterName("cmPmf",false);
 98   fSetCustomMatPmassfractCmd->SetRange("cmPmf>    111   fSetCustomMatPmassfractCmd->SetRange("cmPmf>=0.");
 99   fSetCustomMatPmassfractCmd->AvailableForStat << 112   fSetCustomMatPmassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
100                                                   113 
101   fSetCustomMatSmassfractCmd = new G4UIcmdWith << 114   fSetCustomMatSmassfractCmd = new G4UIcmdWithADouble
102   fSetCustomMatSmassfractCmd->SetGuidance("Set << 115     ("/det/setCustomMatSmassfract",this);
103   fSetCustomMatSmassfractCmd->SetParameterName << 116   fSetCustomMatSmassfractCmd->
                                                   >> 117     SetGuidance("Set S mass fraction for custom material");
                                                   >> 118   fSetCustomMatSmassfractCmd->SetParameterName("cmSmf",false);
104   fSetCustomMatSmassfractCmd->SetRange("cmSmf>    119   fSetCustomMatSmassfractCmd->SetRange("cmSmf>=0.");
105   fSetCustomMatSmassfractCmd->AvailableForStat << 120   fSetCustomMatSmassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
106                                                   121 
107   fSetCustomMatClmassfractCmd = new G4UIcmdWit << 122   fSetCustomMatClmassfractCmd =
108   fSetCustomMatClmassfractCmd->SetGuidance("Se << 123     new G4UIcmdWithADouble("/det/setCustomMatClmassfract",this);
109   fSetCustomMatClmassfractCmd->SetParameterNam << 124   fSetCustomMatClmassfractCmd->
                                                   >> 125     SetGuidance("Set Cl mass fraction for custom material");
                                                   >> 126   fSetCustomMatClmassfractCmd->SetParameterName("cmClmf",false);
110   fSetCustomMatClmassfractCmd->SetRange("cmClm    127   fSetCustomMatClmassfractCmd->SetRange("cmClmf>=0.");
111   fSetCustomMatClmassfractCmd->AvailableForSta << 128   fSetCustomMatClmassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);   
112                                                   129 
113   fSetCustomMatKmassfractCmd = new G4UIcmdWith << 130   fSetCustomMatKmassfractCmd = new G4UIcmdWithADouble
114   fSetCustomMatKmassfractCmd->SetGuidance("Set << 131     ("/det/setCustomMatKmassfract",this);
115   fSetCustomMatKmassfractCmd->SetParameterName << 132   fSetCustomMatKmassfractCmd->
                                                   >> 133     SetGuidance("Set K mass fraction for custom material");
                                                   >> 134   fSetCustomMatKmassfractCmd->SetParameterName("cmKmf",false);
116   fSetCustomMatKmassfractCmd->SetRange("cmKmf>    135   fSetCustomMatKmassfractCmd->SetRange("cmKmf>=0.");
117   fSetCustomMatKmassfractCmd->AvailableForStat << 136   fSetCustomMatKmassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
118                                                   137 
119   fSetCustomMatCamassfractCmd = new G4UIcmdWit << 138   fSetCustomMatCamassfractCmd = new G4UIcmdWithADouble
120   fSetCustomMatCamassfractCmd->SetGuidance("Se << 139     ("/det/setCustomMatCamassfract",this);
121   fSetCustomMatCamassfractCmd->SetParameterNam << 140   fSetCustomMatCamassfractCmd->
                                                   >> 141     SetGuidance("Set Ca mass fraction for custom material");
                                                   >> 142   fSetCustomMatCamassfractCmd->SetParameterName("cmCamf",false);
122   fSetCustomMatCamassfractCmd->SetRange("cmCam    143   fSetCustomMatCamassfractCmd->SetRange("cmCamf>=0.");
123   fSetCustomMatCamassfractCmd->AvailableForSta << 144   fSetCustomMatCamassfractCmd->AvailableForStates(G4State_PreInit,G4State_Idle);   
124                                                << 145     
125   fPhantomMaterialCmd = new G4UIcmdWithAnInteg << 146   fPhantomMaterialCmd = new G4UIcmdWithAnInteger("/det/setPhantomMaterial",this);
126   fPhantomMaterialCmd->SetGuidance("Set Phanto    147   fPhantomMaterialCmd->SetGuidance("Set Phantom material");
127   fPhantomMaterialCmd->SetParameterName("Phant << 148   fPhantomMaterialCmd->SetParameterName("PhantomMat",false);
128   fPhantomMaterialCmd->SetRange("PhantomMat>=1    149   fPhantomMaterialCmd->SetRange("PhantomMat>=1 && PhantomMat<=30");
129   fPhantomMaterialCmd->AvailableForStates(G4St << 150   fPhantomMaterialCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
130                                                << 151     
131   fPhantomDiameterCmd = new G4UIcmdWithADouble << 152   fPhantomDiameterCmd =
                                                   >> 153     new G4UIcmdWithADoubleAndUnit("/det/setPhantomDiameter",this);
132   fPhantomDiameterCmd->SetGuidance("Set Phanto    154   fPhantomDiameterCmd->SetGuidance("Set Phantom Diameter");
133   fPhantomDiameterCmd->SetParameterName("Phant << 155   fPhantomDiameterCmd->SetParameterName("PhantomDiameter",false);
134   fPhantomDiameterCmd->SetUnitCategory("Length    156   fPhantomDiameterCmd->SetUnitCategory("Length");
135   fPhantomDiameterCmd->SetRange("PhantomDiamet    157   fPhantomDiameterCmd->SetRange("PhantomDiameter>0.");
136   fPhantomDiameterCmd->AvailableForStates(G4St << 158   fPhantomDiameterCmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
137                                                << 159         
138   fPhantomHeightCmd = new G4UIcmdWithADoubleAn << 160   fPhantomHeightCmd = new G4UIcmdWithADoubleAndUnit("/det/setPhantomHeight",this);
139   fPhantomHeightCmd->SetGuidance("Set Phantom     161   fPhantomHeightCmd->SetGuidance("Set Phantom Thickness");
140   fPhantomHeightCmd->SetParameterName("Phantom << 162   fPhantomHeightCmd->SetParameterName("PhantomHeight",false);
141   fPhantomHeightCmd->SetUnitCategory("Length")    163   fPhantomHeightCmd->SetUnitCategory("Length");
142   fPhantomHeightCmd->SetRange("PhantomHeight>0    164   fPhantomHeightCmd->SetRange("PhantomHeight>0.");
143   fPhantomHeightCmd->AvailableForStates(G4Stat << 165   fPhantomHeightCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
144                                                << 166     
145   fPhantomZCmd = new G4UIcmdWithADoubleAndUnit << 167   fPhantomZCmd = new G4UIcmdWithADoubleAndUnit("/det/setPhantomZ",this);
146   fPhantomZCmd->SetGuidance("Set Phantom Z");     168   fPhantomZCmd->SetGuidance("Set Phantom Z");
147   fPhantomZCmd->SetParameterName("PhantomZ", f << 169   fPhantomZCmd->SetParameterName("PhantomZ",false);
148   fPhantomZCmd->SetUnitCategory("Length");        170   fPhantomZCmd->SetUnitCategory("Length");
149   fPhantomZCmd->SetRange("PhantomZ>=0.");         171   fPhantomZCmd->SetRange("PhantomZ>=0.");
150   fPhantomZCmd->AvailableForStates(G4State_Pre << 172   fPhantomZCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
151                                                << 173         
152   fSetComp0Cmd = new G4UIcmdWithADouble("/det/ << 174   fSetComp0Cmd = new G4UIcmdWithADouble("/det/setComp0",this);
153   fSetComp0Cmd->SetGuidance("Set Comp0 for med    175   fSetComp0Cmd->SetGuidance("Set Comp0 for medical material");
154   fSetComp0Cmd->SetParameterName("c0", false); << 176   fSetComp0Cmd->SetParameterName("c0",false);
155   fSetComp0Cmd->SetRange("c0>=0.");               177   fSetComp0Cmd->SetRange("c0>=0.");
156   fSetComp0Cmd->AvailableForStates(G4State_Pre << 178   fSetComp0Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
157                                                << 179               
158   fSetComp1Cmd = new G4UIcmdWithADouble("/det/ << 180   fSetComp1Cmd = new G4UIcmdWithADouble("/det/setComp1",this);
159   fSetComp1Cmd->SetGuidance("Set Comp1 for med    181   fSetComp1Cmd->SetGuidance("Set Comp1 for medical material");
160   fSetComp1Cmd->SetParameterName("c1", false); << 182   fSetComp1Cmd->SetParameterName("c1",false);
161   fSetComp1Cmd->SetRange("c1>=0.");               183   fSetComp1Cmd->SetRange("c1>=0.");
162   fSetComp1Cmd->AvailableForStates(G4State_Pre << 184   fSetComp1Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
163                                                << 185               
164   fSetComp2Cmd = new G4UIcmdWithADouble("/det/ << 186   fSetComp2Cmd = new G4UIcmdWithADouble("/det/setComp2",this);
165   fSetComp2Cmd->SetGuidance("Set Comp2 for med    187   fSetComp2Cmd->SetGuidance("Set Comp2 for medical material");
166   fSetComp2Cmd->SetParameterName("c2", false); << 188   fSetComp2Cmd->SetParameterName("c2",false);
167   fSetComp2Cmd->SetRange("c2>=0.");               189   fSetComp2Cmd->SetRange("c2>=0.");
168   fSetComp2Cmd->AvailableForStates(G4State_Pre << 190   fSetComp2Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
169                                                << 191     
170   fSetComp3Cmd = new G4UIcmdWithADouble("/det/ << 192   fSetComp3Cmd = new G4UIcmdWithADouble("/det/setComp3",this);
171   fSetComp3Cmd->SetGuidance("Set Comp3 for med    193   fSetComp3Cmd->SetGuidance("Set Comp3 for medical material");
172   fSetComp3Cmd->SetParameterName("c3", false); << 194   fSetComp3Cmd->SetParameterName("c3",false);
173   fSetComp3Cmd->SetRange("c3>=0.");               195   fSetComp3Cmd->SetRange("c3>=0.");
174   fSetComp3Cmd->AvailableForStates(G4State_Pre << 196   fSetComp3Cmd->AvailableForStates(G4State_PreInit,G4State_Idle);  
175                                                << 197     
176   fThetaSetupCmd = new G4UIcmdWithADouble("/de << 198   fThetaSetupCmd = new G4UIcmdWithADouble("/det/setThetaSetup",this);
177   fThetaSetupCmd->SetGuidance("Set theta setup    199   fThetaSetupCmd->SetGuidance("Set theta setup (rad)");
178   fThetaSetupCmd->SetParameterName("theta", fa << 200   fThetaSetupCmd->SetParameterName("theta",false);
179   fThetaSetupCmd->SetRange("theta>=0.");          201   fThetaSetupCmd->SetRange("theta>=0.");
180   fThetaSetupCmd->AvailableForStates(G4State_P << 202   fThetaSetupCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
181                                                << 203     
182   fSetSlitsCmd = new G4UIcmdWithABool("/det/se    204   fSetSlitsCmd = new G4UIcmdWithABool("/det/setSlits", this);
183   fSetSlitsCmd->SetGuidance("set Slits");      << 205   fSetSlitsCmd->SetGuidance("set Slits");          
184   fSetSlitsCmd->SetParameterName("fIWantSlits" << 206   fSetSlitsCmd->SetParameterName("fIWantSlits",true);
185   fSetSlitsCmd->SetDefaultValue(false);        << 207   fSetSlitsCmd->SetDefaultValue(false);  
186                                                << 208           
187   fSlit1ThicknessCmd = new G4UIcmdWithADoubleA << 209   fSlit1ThicknessCmd = new G4UIcmdWithADoubleAndUnit("/det/setSlit1Thickness",this);
188   fSlit1ThicknessCmd->SetGuidance("Set Slit1 T    210   fSlit1ThicknessCmd->SetGuidance("Set Slit1 Thickness");
189   fSlit1ThicknessCmd->SetParameterName("Slit1T << 211   fSlit1ThicknessCmd->SetParameterName("Slit1Thickness",false);
190   fSlit1ThicknessCmd->SetUnitCategory("Length"    212   fSlit1ThicknessCmd->SetUnitCategory("Length");
191   fSlit1ThicknessCmd->SetRange("Slit1Thickness    213   fSlit1ThicknessCmd->SetRange("Slit1Thickness>0.");
192   fSlit1ThicknessCmd->AvailableForStates(G4Sta << 214   fSlit1ThicknessCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
193                                                << 215     
194   fSlit2ThicknessCmd = new G4UIcmdWithADoubleA << 216   fSlit2ThicknessCmd = new G4UIcmdWithADoubleAndUnit("/det/setSlit2Thickness",this);
195   fSlit2ThicknessCmd->SetGuidance("Set Slit2 T    217   fSlit2ThicknessCmd->SetGuidance("Set Slit2 Thickness");
196   fSlit2ThicknessCmd->SetParameterName("Slit2T << 218   fSlit2ThicknessCmd->SetParameterName("Slit2Thickness",false);
197   fSlit2ThicknessCmd->SetUnitCategory("Length"    219   fSlit2ThicknessCmd->SetUnitCategory("Length");
198   fSlit2ThicknessCmd->SetRange("Slit2Thickness    220   fSlit2ThicknessCmd->SetRange("Slit2Thickness>0.");
199   fSlit2ThicknessCmd->AvailableForStates(G4Sta << 221   fSlit2ThicknessCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
200                                                << 222     
201   fSlit3ThicknessCmd = new G4UIcmdWithADoubleA << 223   fSlit3ThicknessCmd = new G4UIcmdWithADoubleAndUnit("/det/setSlit3Thickness",this);
202   fSlit3ThicknessCmd->SetGuidance("Set Slit3 T    224   fSlit3ThicknessCmd->SetGuidance("Set Slit3 Thickness");
203   fSlit3ThicknessCmd->SetParameterName("Slit3T << 225   fSlit3ThicknessCmd->SetParameterName("Slit3Thickness",false);
204   fSlit3ThicknessCmd->SetUnitCategory("Length"    226   fSlit3ThicknessCmd->SetUnitCategory("Length");
205   fSlit3ThicknessCmd->SetRange("Slit3Thickness    227   fSlit3ThicknessCmd->SetRange("Slit3Thickness>0.");
206   fSlit3ThicknessCmd->AvailableForStates(G4Sta << 228   fSlit3ThicknessCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
207                                                << 229     
208   fSlit4ThicknessCmd = new G4UIcmdWithADoubleA << 230   fSlit4ThicknessCmd = new G4UIcmdWithADoubleAndUnit("/det/setSlit4Thickness",this);
209   fSlit4ThicknessCmd->SetGuidance("Set Slit4 T    231   fSlit4ThicknessCmd->SetGuidance("Set Slit4 Thickness");
210   fSlit4ThicknessCmd->SetParameterName("Slit4T << 232   fSlit4ThicknessCmd->SetParameterName("Slit4Thickness",false);
211   fSlit4ThicknessCmd->SetUnitCategory("Length"    233   fSlit4ThicknessCmd->SetUnitCategory("Length");
212   fSlit4ThicknessCmd->SetRange("Slit4Thickness    234   fSlit4ThicknessCmd->SetRange("Slit4Thickness>0.");
213   fSlit4ThicknessCmd->AvailableForStates(G4Sta << 235   fSlit4ThicknessCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
214                                                << 236     
215   fSlit1DistanceCmd = new G4UIcmdWithADoubleAn << 237   fSlit1DistanceCmd =
                                                   >> 238     new G4UIcmdWithADoubleAndUnit("/det/setSlit1SampleDistance",this);
216   fSlit1DistanceCmd->SetGuidance("Set Slit1-to    239   fSlit1DistanceCmd->SetGuidance("Set Slit1-to-Sample Distance");
217   fSlit1DistanceCmd->SetParameterName("Slit1di << 240   fSlit1DistanceCmd->SetParameterName("Slit1dist",false);
218   fSlit1DistanceCmd->SetUnitCategory("Length")    241   fSlit1DistanceCmd->SetUnitCategory("Length");
219   fSlit1DistanceCmd->SetRange("Slit1dist>0.");    242   fSlit1DistanceCmd->SetRange("Slit1dist>0.");
220   fSlit1DistanceCmd->AvailableForStates(G4Stat << 243   fSlit1DistanceCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
221                                                << 244     
222   fSlit2DistanceCmd = new G4UIcmdWithADoubleAn << 245   fSlit2DistanceCmd =
                                                   >> 246     new G4UIcmdWithADoubleAndUnit("/det/setSlit2SampleDistance",this);
223   fSlit2DistanceCmd->SetGuidance("Set Slit2-to    247   fSlit2DistanceCmd->SetGuidance("Set Slit2-to-Sample Distance");
224   fSlit2DistanceCmd->SetParameterName("Slit2di << 248   fSlit2DistanceCmd->SetParameterName("Slit2dist",false);
225   fSlit2DistanceCmd->SetUnitCategory("Length")    249   fSlit2DistanceCmd->SetUnitCategory("Length");
226   fSlit2DistanceCmd->SetRange("Slit2dist>0.");    250   fSlit2DistanceCmd->SetRange("Slit2dist>0.");
227   fSlit2DistanceCmd->AvailableForStates(G4Stat << 251   fSlit2DistanceCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
228                                                << 252     
229   fSlit3DistanceCmd = new G4UIcmdWithADoubleAn << 253   fSlit3DistanceCmd =
                                                   >> 254     new G4UIcmdWithADoubleAndUnit("/det/setSlit3SampleDistance",this);
230   fSlit3DistanceCmd->SetGuidance("Set Slit3-to    255   fSlit3DistanceCmd->SetGuidance("Set Slit3-to-Sample Distance");
231   fSlit3DistanceCmd->SetParameterName("Slit3di << 256   fSlit3DistanceCmd->SetParameterName("Slit3dist",false);
232   fSlit3DistanceCmd->SetUnitCategory("Length")    257   fSlit3DistanceCmd->SetUnitCategory("Length");
233   fSlit3DistanceCmd->SetRange("Slit3dist>0.");    258   fSlit3DistanceCmd->SetRange("Slit3dist>0.");
234   fSlit3DistanceCmd->AvailableForStates(G4Stat << 259   fSlit3DistanceCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
235                                                << 260     
236   fSlit4DistanceCmd = new G4UIcmdWithADoubleAn << 261   fSlit4DistanceCmd =
                                                   >> 262     new G4UIcmdWithADoubleAndUnit("/det/setSlit4SampleDistance",this);
237   fSlit4DistanceCmd->SetGuidance("Set Slit4-to    263   fSlit4DistanceCmd->SetGuidance("Set Slit4-to-Sample Distance");
238   fSlit4DistanceCmd->SetParameterName("Slit4di << 264   fSlit4DistanceCmd->SetParameterName("Slit4dist",false);
239   fSlit4DistanceCmd->SetUnitCategory("Length")    265   fSlit4DistanceCmd->SetUnitCategory("Length");
240   fSlit4DistanceCmd->SetRange("Slit4dist>0.");    266   fSlit4DistanceCmd->SetRange("Slit4dist>0.");
241   fSlit4DistanceCmd->AvailableForStates(G4Stat << 267   fSlit4DistanceCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
242                                                << 268     
243   fSlit1xApertureCmd = new G4UIcmdWithADoubleA << 269   fSlit1xApertureCmd =
                                                   >> 270     new G4UIcmdWithADoubleAndUnit("/det/setSlit1xAperture",this);
244   fSlit1xApertureCmd->SetGuidance("Set Slit1 x    271   fSlit1xApertureCmd->SetGuidance("Set Slit1 x Aperture");
245   fSlit1xApertureCmd->SetParameterName("Slit1x << 272   fSlit1xApertureCmd->SetParameterName("Slit1xAp",false);
246   fSlit1xApertureCmd->SetUnitCategory("Length"    273   fSlit1xApertureCmd->SetUnitCategory("Length");
247   fSlit1xApertureCmd->SetRange("Slit1xAp>0.");    274   fSlit1xApertureCmd->SetRange("Slit1xAp>0.");
248   fSlit1xApertureCmd->AvailableForStates(G4Sta << 275   fSlit1xApertureCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
249                                                << 276     
250   fSlit2xApertureCmd = new G4UIcmdWithADoubleA << 277   fSlit2xApertureCmd =
                                                   >> 278     new G4UIcmdWithADoubleAndUnit("/det/setSlit2xAperture",this);
251   fSlit2xApertureCmd->SetGuidance("Set Slit2 x    279   fSlit2xApertureCmd->SetGuidance("Set Slit2 x Aperture");
252   fSlit2xApertureCmd->SetParameterName("Slit2x << 280   fSlit2xApertureCmd->SetParameterName("Slit2xAp",false);
253   fSlit2xApertureCmd->SetUnitCategory("Length"    281   fSlit2xApertureCmd->SetUnitCategory("Length");
254   fSlit2xApertureCmd->SetRange("Slit2xAp>0.");    282   fSlit2xApertureCmd->SetRange("Slit2xAp>0.");
255   fSlit2xApertureCmd->AvailableForStates(G4Sta << 283   fSlit2xApertureCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
256                                                << 284     
257   fSlit3xApertureCmd = new G4UIcmdWithADoubleA << 285   fSlit3xApertureCmd =
                                                   >> 286     new G4UIcmdWithADoubleAndUnit("/det/setSlit3xAperture",this);
258   fSlit3xApertureCmd->SetGuidance("Set Slit3 x    287   fSlit3xApertureCmd->SetGuidance("Set Slit3 x Aperture");
259   fSlit3xApertureCmd->SetParameterName("Slit3x << 288   fSlit3xApertureCmd->SetParameterName("Slit3xAp",false);
260   fSlit3xApertureCmd->SetUnitCategory("Length"    289   fSlit3xApertureCmd->SetUnitCategory("Length");
261   fSlit3xApertureCmd->SetRange("Slit3xAp>0.");    290   fSlit3xApertureCmd->SetRange("Slit3xAp>0.");
262   fSlit3xApertureCmd->AvailableForStates(G4Sta << 291   fSlit3xApertureCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
263                                                << 292     
264   fSlit4xApertureCmd = new G4UIcmdWithADoubleA << 293   fSlit4xApertureCmd =
                                                   >> 294     new G4UIcmdWithADoubleAndUnit("/det/setSlit4xAperture",this);
265   fSlit4xApertureCmd->SetGuidance("Set Slit4 x    295   fSlit4xApertureCmd->SetGuidance("Set Slit4 x Aperture");
266   fSlit4xApertureCmd->SetParameterName("Slit4x << 296   fSlit4xApertureCmd->SetParameterName("Slit4xAp",false);
267   fSlit4xApertureCmd->SetUnitCategory("Length"    297   fSlit4xApertureCmd->SetUnitCategory("Length");
268   fSlit4xApertureCmd->SetRange("Slit4xAp>0.");    298   fSlit4xApertureCmd->SetRange("Slit4xAp>0.");
269   fSlit4xApertureCmd->AvailableForStates(G4Sta << 299   fSlit4xApertureCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
270                                                << 300     
271   fSlit1yApertureCmd = new G4UIcmdWithADoubleA << 301   fSlit1yApertureCmd =
                                                   >> 302     new G4UIcmdWithADoubleAndUnit("/det/setSlit1yAperture",this);
272   fSlit1yApertureCmd->SetGuidance("Set Slit1 y    303   fSlit1yApertureCmd->SetGuidance("Set Slit1 y Aperture");
273   fSlit1yApertureCmd->SetParameterName("Slit1y << 304   fSlit1yApertureCmd->SetParameterName("Slit1yAp",false);
274   fSlit1yApertureCmd->SetUnitCategory("Length"    305   fSlit1yApertureCmd->SetUnitCategory("Length");
275   fSlit1yApertureCmd->SetRange("Slit1yAp>0.");    306   fSlit1yApertureCmd->SetRange("Slit1yAp>0.");
276   fSlit1yApertureCmd->AvailableForStates(G4Sta << 307   fSlit1yApertureCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
277                                                << 308     
278   fSlit2yApertureCmd = new G4UIcmdWithADoubleA << 309   fSlit2yApertureCmd =
                                                   >> 310     new G4UIcmdWithADoubleAndUnit("/det/setSlit2yAperture",this);
279   fSlit2yApertureCmd->SetGuidance("Set Slit2 y    311   fSlit2yApertureCmd->SetGuidance("Set Slit2 y Aperture");
280   fSlit2yApertureCmd->SetParameterName("Slit2y << 312   fSlit2yApertureCmd->SetParameterName("Slit2yAp",false);
281   fSlit2yApertureCmd->SetUnitCategory("Length"    313   fSlit2yApertureCmd->SetUnitCategory("Length");
282   fSlit2yApertureCmd->SetRange("Slit2yAp>0.");    314   fSlit2yApertureCmd->SetRange("Slit2yAp>0.");
283   fSlit2yApertureCmd->AvailableForStates(G4Sta << 315   fSlit2yApertureCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
284                                                << 316     
285   fSlit3yApertureCmd = new G4UIcmdWithADoubleA << 317   fSlit3yApertureCmd =
                                                   >> 318     new G4UIcmdWithADoubleAndUnit("/det/setSlit3yAperture",this);
286   fSlit3yApertureCmd->SetGuidance("Set Slit3 y    319   fSlit3yApertureCmd->SetGuidance("Set Slit3 y Aperture");
287   fSlit3yApertureCmd->SetParameterName("Slit3y << 320   fSlit3yApertureCmd->SetParameterName("Slit3yAp",false);
288   fSlit3yApertureCmd->SetUnitCategory("Length"    321   fSlit3yApertureCmd->SetUnitCategory("Length");
289   fSlit3yApertureCmd->SetRange("Slit3yAp>0.");    322   fSlit3yApertureCmd->SetRange("Slit3yAp>0.");
290   fSlit3yApertureCmd->AvailableForStates(G4Sta << 323   fSlit3yApertureCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
291                                                << 324     
292   fSlit4yApertureCmd = new G4UIcmdWithADoubleA << 325   fSlit4yApertureCmd =
                                                   >> 326     new G4UIcmdWithADoubleAndUnit("/det/setSlit4yAperture",this);
293   fSlit4yApertureCmd->SetGuidance("Set Slit4 y    327   fSlit4yApertureCmd->SetGuidance("Set Slit4 y Aperture");
294   fSlit4yApertureCmd->SetParameterName("Slit4y << 328   fSlit4yApertureCmd->SetParameterName("Slit4yAp",false);
295   fSlit4yApertureCmd->SetUnitCategory("Length"    329   fSlit4yApertureCmd->SetUnitCategory("Length");
296   fSlit4yApertureCmd->SetRange("Slit4yAp>0.");    330   fSlit4yApertureCmd->SetRange("Slit4yAp>0.");
297   fSlit4yApertureCmd->AvailableForStates(G4Sta << 331   fSlit4yApertureCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
298                                                   332 
299   fDetectorThicknessCmd = new G4UIcmdWithADoub << 333   fDetectorThicknessCmd = new G4UIcmdWithADoubleAndUnit
                                                   >> 334     ("/det/setDetectorThickness",this);
300   fDetectorThicknessCmd->SetGuidance("Set Dete    335   fDetectorThicknessCmd->SetGuidance("Set Detector Thickness");
301   fDetectorThicknessCmd->SetParameterName("Det << 336   fDetectorThicknessCmd->SetParameterName("DetectorThickness",false);
302   fDetectorThicknessCmd->SetUnitCategory("Leng    337   fDetectorThicknessCmd->SetUnitCategory("Length");
303   fDetectorThicknessCmd->SetRange("DetectorThi    338   fDetectorThicknessCmd->SetRange("DetectorThickness>0.");
304   fDetectorThicknessCmd->AvailableForStates(G4 << 339   fDetectorThicknessCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
305                                                << 340        
306   fDetectorSizeCmd = new G4UIcmdWithADoubleAnd << 341   fDetectorSizeCmd = new G4UIcmdWithADoubleAndUnit("/det/setDetectorSize",this);
307   fDetectorSizeCmd->SetGuidance("Set DetectorS    342   fDetectorSizeCmd->SetGuidance("Set DetectorSize");
308   fDetectorSizeCmd->SetParameterName("scrnsize << 343   fDetectorSizeCmd->SetParameterName("scrnsize",false);
309   fDetectorSizeCmd->SetUnitCategory("Length");    344   fDetectorSizeCmd->SetUnitCategory("Length");
310   fDetectorSizeCmd->SetRange("scrnsize>0.");      345   fDetectorSizeCmd->SetRange("scrnsize>0.");
311   fDetectorSizeCmd->AvailableForStates(G4State << 346   fDetectorSizeCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
312                                                << 347     
313   fDetectorDistanceCmd = new G4UIcmdWithADoubl << 348   fDetectorDistanceCmd = new G4UIcmdWithADoubleAndUnit
                                                   >> 349     ("/det/setDetectorSampleDistance",this);
314   fDetectorDistanceCmd->SetGuidance("Set Detec    350   fDetectorDistanceCmd->SetGuidance("Set Detector Distance");
315   fDetectorDistanceCmd->SetParameterName("detD << 351   fDetectorDistanceCmd->SetParameterName("detDist",false);
316   fDetectorDistanceCmd->SetUnitCategory("Lengt    352   fDetectorDistanceCmd->SetUnitCategory("Length");
317   fDetectorDistanceCmd->SetRange("detDist>0.")    353   fDetectorDistanceCmd->SetRange("detDist>0.");
318   fDetectorDistanceCmd->AvailableForStates(G4S << 354   fDetectorDistanceCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 
319 }                                                 355 }
320                                                   356 
321 //....oooOO0OOooo........oooOO0OOooo........oo    357 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
322                                                   358 
323 SAXSDetectorConstructionMessenger::~SAXSDetect    359 SAXSDetectorConstructionMessenger::~SAXSDetectorConstructionMessenger()
324 {                                                 360 {
325   delete fCmdDir;                                 361   delete fCmdDir;
326                                                << 362     
327   delete fSetCustomMatFFfilename;              << 363   delete fSetCustomMatFFfilename;        
328   delete fSetCustomMatDensityCmd;                 364   delete fSetCustomMatDensityCmd;
329   delete fSetCustomMatHmassfractCmd;              365   delete fSetCustomMatHmassfractCmd;
330   delete fSetCustomMatCmassfractCmd;              366   delete fSetCustomMatCmassfractCmd;
331   delete fSetCustomMatNmassfractCmd;              367   delete fSetCustomMatNmassfractCmd;
332   delete fSetCustomMatOmassfractCmd;              368   delete fSetCustomMatOmassfractCmd;
333   delete fSetCustomMatNamassfractCmd;             369   delete fSetCustomMatNamassfractCmd;
334   delete fSetCustomMatPmassfractCmd;              370   delete fSetCustomMatPmassfractCmd;
335   delete fSetCustomMatSmassfractCmd;              371   delete fSetCustomMatSmassfractCmd;
336   delete fSetCustomMatClmassfractCmd;             372   delete fSetCustomMatClmassfractCmd;
337   delete fSetCustomMatKmassfractCmd;              373   delete fSetCustomMatKmassfractCmd;
338   delete fSetCustomMatCamassfractCmd;             374   delete fSetCustomMatCamassfractCmd;
339                                                << 375         
340   delete fPhantomMaterialCmd;                     376   delete fPhantomMaterialCmd;
341   delete fPhantomDiameterCmd;                     377   delete fPhantomDiameterCmd;
342   delete fPhantomHeightCmd;                       378   delete fPhantomHeightCmd;
343   delete fPhantomZCmd;                         << 379   delete fPhantomZCmd; 
344                                                   380 
345   delete fSetComp0Cmd;                            381   delete fSetComp0Cmd;
346   delete fSetComp1Cmd;                            382   delete fSetComp1Cmd;
347   delete fSetComp2Cmd;                            383   delete fSetComp2Cmd;
348   delete fSetComp3Cmd;                            384   delete fSetComp3Cmd;
349                                                << 385     
350   delete fThetaSetupCmd;                       << 386   delete fThetaSetupCmd;   
351                                                << 387     
352   delete fSetSlitsCmd;                            388   delete fSetSlitsCmd;
353   delete fSlit1ThicknessCmd;                      389   delete fSlit1ThicknessCmd;
354   delete fSlit2ThicknessCmd;                      390   delete fSlit2ThicknessCmd;
355   delete fSlit3ThicknessCmd;                      391   delete fSlit3ThicknessCmd;
356   delete fSlit4ThicknessCmd;                      392   delete fSlit4ThicknessCmd;
357   delete fSlit1DistanceCmd;                       393   delete fSlit1DistanceCmd;
358   delete fSlit2DistanceCmd;                       394   delete fSlit2DistanceCmd;
359   delete fSlit3DistanceCmd;                       395   delete fSlit3DistanceCmd;
360   delete fSlit4DistanceCmd;                       396   delete fSlit4DistanceCmd;
361   delete fSlit1xApertureCmd;                      397   delete fSlit1xApertureCmd;
362   delete fSlit2xApertureCmd;                      398   delete fSlit2xApertureCmd;
363   delete fSlit3xApertureCmd;                      399   delete fSlit3xApertureCmd;
364   delete fSlit4xApertureCmd;                   << 400   delete fSlit4xApertureCmd;  
365   delete fSlit1yApertureCmd;                      401   delete fSlit1yApertureCmd;
366   delete fSlit2yApertureCmd;                      402   delete fSlit2yApertureCmd;
367   delete fSlit3yApertureCmd;                      403   delete fSlit3yApertureCmd;
368   delete fSlit4yApertureCmd;                   << 404   delete fSlit4yApertureCmd;  
369                                                   405 
370   delete fDetectorThicknessCmd;                << 406   delete fDetectorThicknessCmd;  
371   delete fDetectorSizeCmd;                        407   delete fDetectorSizeCmd;
372   delete fDetectorDistanceCmd;                 << 408   delete fDetectorDistanceCmd;    
373 }                                                 409 }
374                                                   410 
375 //....oooOO0OOooo........oooOO0OOooo........oo    411 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
376                                                   412 
377 void SAXSDetectorConstructionMessenger::SetNew << 413 void SAXSDetectorConstructionMessenger::SetNewValue(G4UIcommand* command,
                                                   >> 414                                                     G4String newValue)
378 {                                                 415 {
379   if (command == fSetCustomMatFFfilename) fDet << 416   if (command == fSetCustomMatFFfilename) 
380                                                << 417     fDetector->SetCustomMatFF(newValue);
381   if (command == fSetCustomMatDensityCmd)      << 418                 
382     fDetector->SetCustomMatDensity(fSetCustomM << 419   if (command == fSetCustomMatDensityCmd) 
383                                                << 420     fDetector->SetCustomMatDensity
384   if (command == fSetCustomMatHmassfractCmd)   << 421       (fSetCustomMatDensityCmd->GetNewDoubleValue(newValue));
385     fDetector->SetCustomMatHmassfract(fSetCust << 422                 
386                                                << 423   if (command == fSetCustomMatHmassfractCmd) 
387   if (command == fSetCustomMatCmassfractCmd)   << 424     fDetector->SetCustomMatHmassfract
388     fDetector->SetCustomMatCmassfract(fSetCust << 425       (fSetCustomMatHmassfractCmd->GetNewDoubleValue(newValue));
389   if (command == fSetCustomMatNmassfractCmd)   << 426         
390     fDetector->SetCustomMatNmassfract(fSetCust << 427   if (command == fSetCustomMatCmassfractCmd) 
391   if (command == fSetCustomMatOmassfractCmd)   << 428     fDetector->SetCustomMatCmassfract
392     fDetector->SetCustomMatOmassfract(fSetCust << 429       (fSetCustomMatCmassfractCmd->GetNewDoubleValue(newValue));
393   if (command == fSetCustomMatNamassfractCmd)  << 430   if (command == fSetCustomMatNmassfractCmd) 
394     fDetector->SetCustomMatNamassfract(fSetCus << 431     fDetector->SetCustomMatNmassfract
395   if (command == fSetCustomMatPmassfractCmd)   << 432       (fSetCustomMatNmassfractCmd->GetNewDoubleValue(newValue));
396     fDetector->SetCustomMatPmassfract(fSetCust << 433   if (command == fSetCustomMatOmassfractCmd) 
397   if (command == fSetCustomMatSmassfractCmd)   << 434     fDetector->SetCustomMatOmassfract
398     fDetector->SetCustomMatSmassfract(fSetCust << 435       (fSetCustomMatOmassfractCmd->GetNewDoubleValue(newValue));
399   if (command == fSetCustomMatClmassfractCmd)  << 436   if (command == fSetCustomMatNamassfractCmd) 
400     fDetector->SetCustomMatClmassfract(fSetCus << 437     fDetector->SetCustomMatNamassfract
401   if (command == fSetCustomMatKmassfractCmd)   << 438       (fSetCustomMatNamassfractCmd->GetNewDoubleValue(newValue));
402     fDetector->SetCustomMatKmassfract(fSetCust << 439   if (command == fSetCustomMatPmassfractCmd) 
403   if (command == fSetCustomMatCamassfractCmd)  << 440     fDetector->SetCustomMatPmassfract
404     fDetector->SetCustomMatCamassfract(fSetCus << 441       (fSetCustomMatPmassfractCmd->GetNewDoubleValue(newValue));
405                                                << 442   if (command == fSetCustomMatSmassfractCmd) 
                                                   >> 443     fDetector->SetCustomMatSmassfract
                                                   >> 444       (fSetCustomMatSmassfractCmd->GetNewDoubleValue(newValue));
                                                   >> 445   if (command == fSetCustomMatClmassfractCmd) 
                                                   >> 446     fDetector->SetCustomMatClmassfract
                                                   >> 447       (fSetCustomMatClmassfractCmd->GetNewDoubleValue(newValue));
                                                   >> 448   if (command == fSetCustomMatKmassfractCmd) 
                                                   >> 449     fDetector->SetCustomMatKmassfract
                                                   >> 450       (fSetCustomMatKmassfractCmd->GetNewDoubleValue(newValue));
                                                   >> 451   if  (command == fSetCustomMatCamassfractCmd) 
                                                   >> 452     fDetector->SetCustomMatCamassfract
                                                   >> 453       (fSetCustomMatCamassfractCmd->GetNewDoubleValue(newValue));
                                                   >> 454         
406   if (command == fPhantomMaterialCmd) {           455   if (command == fPhantomMaterialCmd) {
407     fDetector->SetPhantomMaterial(fPhantomMate << 456     fDetector->SetPhantomMaterial
408   }                                            << 457       (fPhantomMaterialCmd->GetNewIntValue(newValue));}
409   if (command == fPhantomDiameterCmd) {           458   if (command == fPhantomDiameterCmd) {
410     fDetector->SetPhantomDiameter(fPhantomDiam << 459     fDetector->SetPhantomDiameter
411   }                                            << 460       (fPhantomDiameterCmd->GetNewDoubleValue(newValue));}
412   if (command == fPhantomHeightCmd) {             461   if (command == fPhantomHeightCmd) {
413     fDetector->SetPhantomHeight(fPhantomHeight << 462     fDetector->SetPhantomHeight
414   }                                            << 463       (fPhantomHeightCmd->GetNewDoubleValue(newValue));}
415   if (command == fPhantomZCmd) {                  464   if (command == fPhantomZCmd) {
416     fDetector->SetPhantomZ(fPhantomZCmd->GetNe << 465     fDetector->SetPhantomZ
417   }                                            << 466       (fPhantomZCmd->GetNewDoubleValue(newValue));}
418                                                << 467         
419   if (command == fSetComp0Cmd) fDetector->SetC << 468   if (command == fSetComp0Cmd) 
420   if (command == fSetComp1Cmd) fDetector->SetC << 469     fDetector->SetComp0(fSetComp0Cmd->GetNewDoubleValue(newValue));
421   if (command == fSetComp2Cmd) fDetector->SetC << 470   if (command == fSetComp1Cmd) 
422   if (command == fSetComp3Cmd) fDetector->SetC << 471     fDetector->SetComp1(fSetComp1Cmd->GetNewDoubleValue(newValue));
423                                                << 472   if (command == fSetComp2Cmd) 
                                                   >> 473     fDetector->SetComp2(fSetComp2Cmd->GetNewDoubleValue(newValue));
                                                   >> 474   if (command == fSetComp3Cmd) 
                                                   >> 475     fDetector->SetComp3(fSetComp3Cmd->GetNewDoubleValue(newValue));
                                                   >> 476         
424   if (command == fThetaSetupCmd)                  477   if (command == fThetaSetupCmd)
425     fDetector->SetThetaSetup(fThetaSetupCmd->G << 478     fDetector->SetThetaSetup
426   if (command == fSetSlitsCmd) fDetector->SetS << 479       (fThetaSetupCmd->GetNewDoubleValue(newValue));          
427   if (command == fSlit1ThicknessCmd)           << 480   if (command == fSetSlitsCmd) 
428     fDetector->SetSlit1Thickness(fSlit1Thickne << 481     fDetector->SetSlits(fSetSlitsCmd->GetNewBoolValue(newValue));        
                                                   >> 482   if (command == fSlit1ThicknessCmd) 
                                                   >> 483     fDetector->SetSlit1Thickness
                                                   >> 484       (fSlit1ThicknessCmd->GetNewDoubleValue(newValue));
429   if (command == fSlit2ThicknessCmd)              485   if (command == fSlit2ThicknessCmd)
430     fDetector->SetSlit2Thickness(fSlit2Thickne << 486     fDetector->SetSlit2Thickness
                                                   >> 487       (fSlit2ThicknessCmd->GetNewDoubleValue(newValue));        
431   if (command == fSlit3ThicknessCmd)              488   if (command == fSlit3ThicknessCmd)
432     fDetector->SetSlit3Thickness(fSlit3Thickne << 489     fDetector->SetSlit3Thickness
433   if (command == fSlit4ThicknessCmd)           << 490       (fSlit3ThicknessCmd->GetNewDoubleValue(newValue));
434     fDetector->SetSlit4Thickness(fSlit4Thickne << 491   if (command == fSlit4ThicknessCmd) 
435   if (command == fSlit1DistanceCmd)            << 492     fDetector->SetSlit4Thickness
436     fDetector->SetSlit1SampleDistance(fSlit1Di << 493       (fSlit4ThicknessCmd->GetNewDoubleValue(newValue));                
437   if (command == fSlit2DistanceCmd)            << 494   if (command == fSlit1DistanceCmd) 
438     fDetector->SetSlit2SampleDistance(fSlit2Di << 495     fDetector->SetSlit1SampleDistance
439   if (command == fSlit3DistanceCmd)            << 496       (fSlit1DistanceCmd->GetNewDoubleValue(newValue));
440     fDetector->SetSlit3SampleDistance(fSlit3Di << 497   if (command == fSlit2DistanceCmd) 
441   if (command == fSlit4DistanceCmd)            << 498     fDetector->SetSlit2SampleDistance
442     fDetector->SetSlit4SampleDistance(fSlit4Di << 499       (fSlit2DistanceCmd->GetNewDoubleValue(newValue));
443   if (command == fSlit1xApertureCmd)           << 500   if (command == fSlit3DistanceCmd) 
444     fDetector->SetSlit1xAperture(fSlit1xApertu << 501     fDetector->SetSlit3SampleDistance
445   if (command == fSlit2xApertureCmd)           << 502       (fSlit3DistanceCmd->GetNewDoubleValue(newValue));
446     fDetector->SetSlit2xAperture(fSlit2xApertu << 503   if (command == fSlit4DistanceCmd) 
447   if (command == fSlit3xApertureCmd)           << 504     fDetector->SetSlit4SampleDistance
448     fDetector->SetSlit3xAperture(fSlit3xApertu << 505       (fSlit4DistanceCmd->GetNewDoubleValue(newValue));
449   if (command == fSlit4xApertureCmd)           << 506   if (command == fSlit1xApertureCmd) 
450     fDetector->SetSlit4xAperture(fSlit4xApertu << 507     fDetector->SetSlit1xAperture
451   if (command == fSlit1yApertureCmd)           << 508       (fSlit1xApertureCmd->GetNewDoubleValue(newValue));
452     fDetector->SetSlit1yAperture(fSlit1yApertu << 509   if (command == fSlit2xApertureCmd) 
453   if (command == fSlit2yApertureCmd)           << 510     fDetector->SetSlit2xAperture
454     fDetector->SetSlit2yAperture(fSlit2yApertu << 511       (fSlit2xApertureCmd->GetNewDoubleValue(newValue));
455   if (command == fSlit3yApertureCmd)           << 512   if (command == fSlit3xApertureCmd) 
456     fDetector->SetSlit3yAperture(fSlit3yApertu << 513     fDetector->SetSlit3xAperture
457   if (command == fSlit4yApertureCmd)           << 514       (fSlit3xApertureCmd->GetNewDoubleValue(newValue));
458     fDetector->SetSlit4yAperture(fSlit4yApertu << 515   if (command == fSlit4xApertureCmd) 
459   if (command == fDetectorThicknessCmd)        << 516     fDetector->SetSlit4xAperture
460     fDetector->SetDetectorThickness(fDetectorT << 517       (fSlit4xApertureCmd->GetNewDoubleValue(newValue));
461   if (command == fDetectorSizeCmd)             << 518   if (command == fSlit1yApertureCmd) 
462     fDetector->SetDetectorSize(fDetectorSizeCm << 519     fDetector->SetSlit1yAperture
                                                   >> 520       (fSlit1yApertureCmd->GetNewDoubleValue(newValue));
                                                   >> 521   if (command == fSlit2yApertureCmd) 
                                                   >> 522     fDetector->SetSlit2yAperture
                                                   >> 523       (fSlit2yApertureCmd->GetNewDoubleValue(newValue));
                                                   >> 524   if (command == fSlit3yApertureCmd) 
                                                   >> 525     fDetector->SetSlit3yAperture
                                                   >> 526       (fSlit3yApertureCmd->GetNewDoubleValue(newValue));
                                                   >> 527   if (command == fSlit4yApertureCmd) 
                                                   >> 528     fDetector->SetSlit4yAperture
                                                   >> 529       (fSlit4yApertureCmd->GetNewDoubleValue(newValue));          
                                                   >> 530   if (command == fDetectorThicknessCmd) 
                                                   >> 531     fDetector->SetDetectorThickness
                                                   >> 532       (fDetectorThicknessCmd->GetNewDoubleValue(newValue));
                                                   >> 533   if (command == fDetectorSizeCmd) 
                                                   >> 534     fDetector->SetDetectorSize
                                                   >> 535       (fDetectorSizeCmd->GetNewDoubleValue(newValue));        
463   if (command == fDetectorDistanceCmd)            536   if (command == fDetectorDistanceCmd)
464     fDetector->SetDetectorSampleDistance(fDete << 537     fDetector->SetDetectorSampleDistance
                                                   >> 538       (fDetectorDistanceCmd->GetNewDoubleValue(newValue));
465 }                                                 539 }
466                                                   540 
467 //....oooOO0OOooo........oooOO0OOooo........oo    541 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
                                                   >> 542 
468                                                   543