00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027
00028
00029
00030
00031
00032
00033
00034
00035
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00049
00050
00051 #include "G4GeneralParticleSourceMessenger.hh"
00052
00053 #include "G4PhysicalConstants.hh"
00054 #include "G4SystemOfUnits.hh"
00055 #include "G4Geantino.hh"
00056 #include "G4ThreeVector.hh"
00057 #include "G4ParticleTable.hh"
00058 #include "G4UIdirectory.hh"
00059 #include "G4UIcmdWithoutParameter.hh"
00060 #include "G4UIcmdWithAString.hh"
00061 #include "G4UIcmdWithADoubleAndUnit.hh"
00062 #include "G4UIcmdWith3Vector.hh"
00063 #include "G4UIcmdWith3VectorAndUnit.hh"
00064 #include "G4UIcmdWithAnInteger.hh"
00065 #include "G4UIcmdWithADouble.hh"
00066 #include "G4UIcmdWithABool.hh"
00067 #include "G4ios.hh"
00068
00069 #include "G4Tokenizer.hh"
00070 #include "G4SingleParticleSource.hh"
00071 #include "G4GeneralParticleSource.hh"
00072
00074
00075 G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger
00076 (G4GeneralParticleSource *fPtclGun)
00077 : fGPS(fPtclGun),fShootIon(false)
00078 {
00079 particleTable = G4ParticleTable::GetParticleTable();
00080 histtype = "biasx";
00081
00082 gpsDirectory = new G4UIdirectory("/gps/");
00083 gpsDirectory->SetGuidance("General Paricle Source control commands.");
00084
00085
00086
00087 sourceDirectory = new G4UIdirectory("/gps/source/");
00088 sourceDirectory->SetGuidance("Multiple source control sub-directory");
00089
00090 addsourceCmd = new G4UIcmdWithADouble("/gps/source/add",this);
00091 addsourceCmd->SetGuidance("add a new source defintion to the particle gun with the specified intensity");
00092 addsourceCmd->SetParameterName("addsource",false,false);
00093 addsourceCmd->SetRange("addsource > 0.");
00094
00095 listsourceCmd = new G4UIcmdWithoutParameter("/gps/source/list",this);
00096 listsourceCmd->SetGuidance("List the defined particle sources");
00097
00098 clearsourceCmd = new G4UIcmdWithoutParameter("/gps/source/clear",this);
00099 clearsourceCmd->SetGuidance("Remove all the defined particle sources");
00100
00101 getsourceCmd = new G4UIcmdWithoutParameter("/gps/source/show",this);
00102 getsourceCmd->SetGuidance("Show the current source index and intensity");
00103
00104 setsourceCmd = new G4UIcmdWithAnInteger("/gps/source/set",this);
00105 setsourceCmd->SetGuidance("set the indexed source as the current one");
00106 setsourceCmd->SetGuidance(" so one can change its source definition");
00107 setsourceCmd->SetParameterName("setsource",false,false);
00108 setsourceCmd->SetRange("setsource >= 0");
00109
00110 deletesourceCmd = new G4UIcmdWithAnInteger("/gps/source/delete",this);
00111 deletesourceCmd->SetGuidance("delete the indexed source from the list");
00112 deletesourceCmd->SetParameterName("deletesource",false,false);
00113 deletesourceCmd->SetRange("deletesource > 0");
00114
00115 setintensityCmd = new G4UIcmdWithADouble("/gps/source/intensity",this);
00116 setintensityCmd->SetGuidance("reset the current source to the specified intensity");
00117 setintensityCmd->SetParameterName("setintensity",false,false);
00118 setintensityCmd->SetRange("setintensity > 0.");
00119
00120 multiplevertexCmd = new G4UIcmdWithABool("/gps/source/multiplevertex",this);
00121 multiplevertexCmd->SetGuidance("true for simulaneous generation mutiple vertex");
00122 multiplevertexCmd->SetGuidance("Default is false");
00123 multiplevertexCmd->SetParameterName("multiplevertex",true);
00124 multiplevertexCmd->SetDefaultValue(false);
00125
00126 flatsamplingCmd = new G4UIcmdWithABool("/gps/source/flatsampling",this);
00127 flatsamplingCmd->SetGuidance("true for appling flat (biased) sampling among the sources");
00128 flatsamplingCmd->SetGuidance("Default is false");
00129 flatsamplingCmd->SetParameterName("flatsampling",true);
00130 flatsamplingCmd->SetDefaultValue(false);
00131
00132
00133
00134 listCmd = new G4UIcmdWithoutParameter("/gps/List",this);
00135 listCmd->SetGuidance("List available particles.");
00136 listCmd->SetGuidance(" Invoke G4ParticleTable.");
00137
00138 particleCmd = new G4UIcmdWithAString("/gps/particle",this);
00139 particleCmd->SetGuidance("Set particle to be generated.");
00140 particleCmd->SetGuidance(" (geantino is default)");
00141 particleCmd->SetGuidance(" (ion can be specified for shooting ions)");
00142 particleCmd->SetParameterName("particleName",true);
00143 particleCmd->SetDefaultValue("geantino");
00144 G4String candidateList;
00145 G4int nPtcl = particleTable->entries();
00146 for(G4int i=0;i<nPtcl;i++)
00147 {
00148 candidateList += particleTable->GetParticleName(i);
00149 candidateList += " ";
00150 }
00151 candidateList += "ion ";
00152 particleCmd->SetCandidates(candidateList);
00153
00154 directionCmd = new G4UIcmdWith3Vector("/gps/direction",this);
00155 directionCmd->SetGuidance("Set momentum direction.");
00156 directionCmd->SetGuidance("Direction needs not to be a unit vector.");
00157 directionCmd->SetParameterName("Px","Py","Pz",false,false);
00158 directionCmd->SetRange("Px != 0 || Py != 0 || Pz != 0");
00159
00160 energyCmd = new G4UIcmdWithADoubleAndUnit("/gps/energy",this);
00161 energyCmd->SetGuidance("Set kinetic energy.");
00162 energyCmd->SetParameterName("Energy",false,false);
00163 energyCmd->SetDefaultUnit("GeV");
00164
00165
00166
00167 positionCmd = new G4UIcmdWith3VectorAndUnit("/gps/position",this);
00168 positionCmd->SetGuidance("Set starting position of the particle.");
00169 positionCmd->SetParameterName("X","Y","Z",false,false);
00170 positionCmd->SetDefaultUnit("cm");
00171
00172
00173
00174 ionCmd = new G4UIcommand("/gps/ion",this);
00175 ionCmd->SetGuidance("Set properties of ion to be generated.");
00176 ionCmd->SetGuidance("[usage] /gps/ion Z A Q E");
00177 ionCmd->SetGuidance(" Z:(int) AtomicNumber");
00178 ionCmd->SetGuidance(" A:(int) AtomicMass");
00179 ionCmd->SetGuidance(" Q:(int) Charge of Ion (in unit of e)");
00180 ionCmd->SetGuidance(" E:(double) Excitation energy (in keV)");
00181
00182 G4UIparameter* param;
00183 param = new G4UIparameter("Z",'i',false);
00184 param->SetDefaultValue("1");
00185 ionCmd->SetParameter(param);
00186 param = new G4UIparameter("A",'i',false);
00187 param->SetDefaultValue("1");
00188 ionCmd->SetParameter(param);
00189 param = new G4UIparameter("Q",'i',true);
00190 param->SetDefaultValue("0");
00191 ionCmd->SetParameter(param);
00192 param = new G4UIparameter("E",'d',true);
00193 param->SetDefaultValue("0.0");
00194 ionCmd->SetParameter(param);
00195
00196
00197 timeCmd = new G4UIcmdWithADoubleAndUnit("/gps/time",this);
00198 timeCmd->SetGuidance("Set initial time of the particle.");
00199 timeCmd->SetParameterName("t0",false,false);
00200 timeCmd->SetDefaultUnit("ns");
00201
00202
00203
00204 polCmd = new G4UIcmdWith3Vector("/gps/polarization",this);
00205 polCmd->SetGuidance("Set polarization.");
00206 polCmd->SetParameterName("Px","Py","Pz",false,false);
00207 polCmd->SetRange("Px>=-1.&&Px<=1.&&Py>=-1.&&Py<=1.&&Pz>=-1.&&Pz<=1.");
00208
00209 numberCmd = new G4UIcmdWithAnInteger("/gps/number",this);
00210 numberCmd->SetGuidance("Set number of particles to be generated per vertex.");
00211 numberCmd->SetParameterName("N",false,false);
00212 numberCmd->SetRange("N>0");
00213
00214
00215 verbosityCmd = new G4UIcmdWithAnInteger("/gps/verbose",this);
00216 verbosityCmd->SetGuidance("Set Verbose level for GPS");
00217 verbosityCmd->SetGuidance(" 0 : Silent");
00218 verbosityCmd->SetGuidance(" 1 : Limited information");
00219 verbosityCmd->SetGuidance(" 2 : Detailed information");
00220 verbosityCmd->SetParameterName("level",false);
00221 verbosityCmd->SetRange("level>=0 && level <=2");
00222
00223
00224
00225 positionDirectory = new G4UIdirectory("/gps/pos/");
00226 positionDirectory->SetGuidance("Positional commands sub-directory");
00227
00228 typeCmd1 = new G4UIcmdWithAString("/gps/pos/type",this);
00229 typeCmd1->SetGuidance("Sets source distribution type.");
00230 typeCmd1->SetGuidance("Either Point, Beam, Plane, Surface or Volume");
00231 typeCmd1->SetParameterName("DisType",false,false);
00232 typeCmd1->SetDefaultValue("Point");
00233 typeCmd1->SetCandidates("Point Beam Plane Surface Volume");
00234
00235 shapeCmd1 = new G4UIcmdWithAString("/gps/pos/shape",this);
00236 shapeCmd1->SetGuidance("Sets source shape for Plan, Surface or Volume type source.");
00237 shapeCmd1->SetParameterName("Shape",false,false);
00238 shapeCmd1->SetDefaultValue("NULL");
00239 shapeCmd1->SetCandidates("Circle Annulus Ellipse Square Rectangle Sphere Ellipsoid Cylinder Para");
00240
00241 centreCmd1 = new G4UIcmdWith3VectorAndUnit("/gps/pos/centre",this);
00242 centreCmd1->SetGuidance("Set centre coordinates of source.");
00243 centreCmd1->SetGuidance(" same effect as the /gps/position command");
00244 centreCmd1->SetParameterName("X","Y","Z",false,false);
00245 centreCmd1->SetDefaultUnit("cm");
00246
00247
00248 posrot1Cmd1 = new G4UIcmdWith3Vector("/gps/pos/rot1",this);
00249 posrot1Cmd1->SetGuidance("Set the 1st vector defining the rotation matrix'.");
00250 posrot1Cmd1->SetGuidance("It does not need to be a unit vector.");
00251 posrot1Cmd1->SetParameterName("R1x","R1y","R1z",false,false);
00252 posrot1Cmd1->SetRange("R1x != 0 || R1y != 0 || R1z != 0");
00253
00254 posrot2Cmd1 = new G4UIcmdWith3Vector("/gps/pos/rot2",this);
00255 posrot2Cmd1->SetGuidance("Set the 2nd vector defining the rotation matrix'.");
00256 posrot2Cmd1->SetGuidance("It does not need to be a unit vector.");
00257 posrot2Cmd1->SetParameterName("R2x","R2y","R2z",false,false);
00258 posrot2Cmd1->SetRange("R2x != 0 || R2y != 0 || R2z != 0");
00259
00260 halfxCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/halfx",this);
00261 halfxCmd1->SetGuidance("Set x half length of source.");
00262 halfxCmd1->SetParameterName("Halfx",false,false);
00263 halfxCmd1->SetDefaultUnit("cm");
00264
00265
00266 halfyCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/halfy",this);
00267 halfyCmd1->SetGuidance("Set y half length of source.");
00268 halfyCmd1->SetParameterName("Halfy",false,false);
00269 halfyCmd1->SetDefaultUnit("cm");
00270
00271
00272 halfzCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/halfz",this);
00273 halfzCmd1->SetGuidance("Set z half length of source.");
00274 halfzCmd1->SetParameterName("Halfz",false,false);
00275 halfzCmd1->SetDefaultUnit("cm");
00276
00277
00278 radiusCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/radius",this);
00279 radiusCmd1->SetGuidance("Set radius of source.");
00280 radiusCmd1->SetParameterName("Radius",false,false);
00281 radiusCmd1->SetDefaultUnit("cm");
00282
00283
00284 radius0Cmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/inner_radius",this);
00285 radius0Cmd1->SetGuidance("Set inner radius of source when required.");
00286 radius0Cmd1->SetParameterName("Radius0",false,false);
00287 radius0Cmd1->SetDefaultUnit("cm");
00288
00289
00290 possigmarCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/sigma_r",this);
00291 possigmarCmd1->SetGuidance("Set standard deviation in radial of the beam positional profile");
00292 possigmarCmd1->SetGuidance(" applicable to Beam type source only");
00293 possigmarCmd1->SetParameterName("Sigmar",false,false);
00294 possigmarCmd1->SetDefaultUnit("cm");
00295
00296
00297 possigmaxCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/sigma_x",this);
00298 possigmaxCmd1->SetGuidance("Set standard deviation of beam positional profile in x-dir");
00299 possigmaxCmd1->SetGuidance(" applicable to Beam type source only");
00300 possigmaxCmd1->SetParameterName("Sigmax",false,false);
00301 possigmaxCmd1->SetDefaultUnit("cm");
00302
00303
00304 possigmayCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/sigma_y",this);
00305 possigmayCmd1->SetGuidance("Set standard deviation of beam positional profile in y-dir");
00306 possigmayCmd1->SetGuidance(" applicable to Beam type source only");
00307 possigmayCmd1->SetParameterName("Sigmay",false,false);
00308 possigmayCmd1->SetDefaultUnit("cm");
00309
00310
00311 paralpCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/paralp",this);
00312 paralpCmd1->SetGuidance("Angle from y-axis of y' in Para");
00313 paralpCmd1->SetParameterName("paralp",false,false);
00314 paralpCmd1->SetDefaultUnit("rad");
00315
00316
00317 partheCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/parthe",this);
00318 partheCmd1->SetGuidance("Polar angle through centres of z faces");
00319 partheCmd1->SetParameterName("parthe",false,false);
00320 partheCmd1->SetDefaultUnit("rad");
00321
00322
00323 parphiCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/pos/parphi",this);
00324 parphiCmd1->SetGuidance("Azimuth angle through centres of z faces");
00325 parphiCmd1->SetParameterName("parphi",false,false);
00326 parphiCmd1->SetDefaultUnit("rad");
00327
00328
00329 confineCmd1 = new G4UIcmdWithAString("/gps/pos/confine",this);
00330 confineCmd1->SetGuidance("Confine source to volume (NULL to unset).");
00331 confineCmd1->SetGuidance("usage: confine VolName");
00332 confineCmd1->SetParameterName("VolName",false,false);
00333 confineCmd1->SetDefaultValue("NULL");
00334
00335
00336 typeCmd = new G4UIcmdWithAString("/gps/type",this);
00337 typeCmd->SetGuidance("Sets source distribution type. (obsolete!)");
00338 typeCmd->SetGuidance("Either Point, Beam, Plane, Surface or Volume");
00339 typeCmd->SetParameterName("DisType",false,false);
00340 typeCmd->SetDefaultValue("Point");
00341 typeCmd->SetCandidates("Point Beam Plane Surface Volume");
00342
00343 shapeCmd = new G4UIcmdWithAString("/gps/shape",this);
00344 shapeCmd->SetGuidance("Sets source shape type.(obsolete!)");
00345 shapeCmd->SetParameterName("Shape",false,false);
00346 shapeCmd->SetDefaultValue("NULL");
00347 shapeCmd->SetCandidates("Circle Annulus Ellipse Square Rectangle Sphere Ellipsoid Cylinder Para");
00348
00349 centreCmd = new G4UIcmdWith3VectorAndUnit("/gps/centre",this);
00350 centreCmd->SetGuidance("Set centre coordinates of source.(obsolete!)");
00351 centreCmd->SetParameterName("X","Y","Z",false,false);
00352 centreCmd->SetDefaultUnit("cm");
00353
00354
00355 posrot1Cmd = new G4UIcmdWith3Vector("/gps/posrot1",this);
00356 posrot1Cmd->SetGuidance("Set rotation matrix of x'.(obsolete!)");
00357 posrot1Cmd->SetGuidance("Posrot1 does not need to be a unit vector.");
00358 posrot1Cmd->SetParameterName("R1x","R1y","R1z",false,false);
00359 posrot1Cmd->SetRange("R1x != 0 || R1y != 0 || R1z != 0");
00360
00361 posrot2Cmd = new G4UIcmdWith3Vector("/gps/posrot2",this);
00362 posrot2Cmd->SetGuidance("Set rotation matrix of y'.(obsolete!)");
00363 posrot2Cmd->SetGuidance("Posrot2 does not need to be a unit vector.");
00364 posrot2Cmd->SetParameterName("R2x","R2y","R2z",false,false);
00365 posrot2Cmd->SetRange("R2x != 0 || R2y != 0 || R2z != 0");
00366
00367 halfxCmd = new G4UIcmdWithADoubleAndUnit("/gps/halfx",this);
00368 halfxCmd->SetGuidance("Set x half length of source.(obsolete!)");
00369 halfxCmd->SetParameterName("Halfx",false,false);
00370 halfxCmd->SetDefaultUnit("cm");
00371
00372
00373 halfyCmd = new G4UIcmdWithADoubleAndUnit("/gps/halfy",this);
00374 halfyCmd->SetGuidance("Set y half length of source.(obsolete!)");
00375 halfyCmd->SetParameterName("Halfy",false,false);
00376 halfyCmd->SetDefaultUnit("cm");
00377
00378
00379 halfzCmd = new G4UIcmdWithADoubleAndUnit("/gps/halfz",this);
00380 halfzCmd->SetGuidance("Set z half length of source.(obsolete!)");
00381 halfzCmd->SetParameterName("Halfz",false,false);
00382 halfzCmd->SetDefaultUnit("cm");
00383
00384
00385 radiusCmd = new G4UIcmdWithADoubleAndUnit("/gps/radius",this);
00386 radiusCmd->SetGuidance("Set radius of source.(obsolete!)");
00387 radiusCmd->SetParameterName("Radius",false,false);
00388 radiusCmd->SetDefaultUnit("cm");
00389
00390
00391 radius0Cmd = new G4UIcmdWithADoubleAndUnit("/gps/radius0",this);
00392 radius0Cmd->SetGuidance("Set inner radius of source.(obsolete!)");
00393 radius0Cmd->SetParameterName("Radius0",false,false);
00394 radius0Cmd->SetDefaultUnit("cm");
00395
00396
00397 possigmarCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaposr",this);
00398 possigmarCmd->SetGuidance("Set standard deviation of beam position in radial(obsolete!)");
00399 possigmarCmd->SetParameterName("Sigmar",false,false);
00400 possigmarCmd->SetDefaultUnit("cm");
00401
00402
00403 possigmaxCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaposx",this);
00404 possigmaxCmd->SetGuidance("Set standard deviation of beam position in x-dir(obsolete!)");
00405 possigmaxCmd->SetParameterName("Sigmax",false,false);
00406 possigmaxCmd->SetDefaultUnit("cm");
00407
00408
00409 possigmayCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaposy",this);
00410 possigmayCmd->SetGuidance("Set standard deviation of beam position in y-dir(obsolete!)");
00411 possigmayCmd->SetParameterName("Sigmay",false,false);
00412 possigmayCmd->SetDefaultUnit("cm");
00413
00414
00415 paralpCmd = new G4UIcmdWithADoubleAndUnit("/gps/paralp",this);
00416 paralpCmd->SetGuidance("Angle from y-axis of y' in Para(obsolete!)");
00417 paralpCmd->SetParameterName("paralp",false,false);
00418 paralpCmd->SetDefaultUnit("rad");
00419
00420
00421 partheCmd = new G4UIcmdWithADoubleAndUnit("/gps/parthe",this);
00422 partheCmd->SetGuidance("Polar angle through centres of z faces(obsolete!)");
00423 partheCmd->SetParameterName("parthe",false,false);
00424 partheCmd->SetDefaultUnit("rad");
00425
00426
00427 parphiCmd = new G4UIcmdWithADoubleAndUnit("/gps/parphi",this);
00428 parphiCmd->SetGuidance("Azimuth angle through centres of z faces(obsolete!)");
00429 parphiCmd->SetParameterName("parphi",false,false);
00430 parphiCmd->SetDefaultUnit("rad");
00431
00432
00433 confineCmd = new G4UIcmdWithAString("/gps/confine",this);
00434 confineCmd->SetGuidance("Confine source to volume (NULL to unset)(obsolete!) .");
00435 confineCmd->SetGuidance("usage: confine VolName");
00436 confineCmd->SetParameterName("VolName",false,false);
00437 confineCmd->SetDefaultValue("NULL");
00438
00439
00440 angularDirectory = new G4UIdirectory("/gps/ang/");
00441 angularDirectory->SetGuidance("Angular commands sub-directory");
00442
00443 angtypeCmd1 = new G4UIcmdWithAString("/gps/ang/type",this);
00444 angtypeCmd1->SetGuidance("Sets angular source distribution type");
00445 angtypeCmd1->SetGuidance("Possible variables are: iso, cos, planar, beam1d, beam2d, focused or user");
00446 angtypeCmd1->SetParameterName("AngDis",false,false);
00447 angtypeCmd1->SetDefaultValue("iso");
00448 angtypeCmd1->SetCandidates("iso cos planar beam1d beam2d focused user");
00449
00450 angrot1Cmd1 = new G4UIcmdWith3Vector("/gps/ang/rot1",this);
00451 angrot1Cmd1->SetGuidance("Sets the 1st vector for angular distribution rotation matrix");
00452 angrot1Cmd1->SetGuidance("Need not be a unit vector");
00453 angrot1Cmd1->SetParameterName("AR1x","AR1y","AR1z",false,false);
00454 angrot1Cmd1->SetRange("AR1x != 0 || AR1y != 0 || AR1z != 0");
00455
00456 angrot2Cmd1 = new G4UIcmdWith3Vector("/gps/ang/rot2",this);
00457 angrot2Cmd1->SetGuidance("Sets the 2nd vector for angular distribution rotation matrix");
00458 angrot2Cmd1->SetGuidance("Need not be a unit vector");
00459 angrot2Cmd1->SetParameterName("AR2x","AR2y","AR2z",false,false);
00460 angrot2Cmd1->SetRange("AR2x != 0 || AR2y != 0 || AR2z != 0");
00461
00462 minthetaCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ang/mintheta",this);
00463 minthetaCmd1->SetGuidance("Set minimum theta");
00464 minthetaCmd1->SetParameterName("MinTheta",false,false);
00465 minthetaCmd1->SetDefaultValue(0.);
00466 minthetaCmd1->SetDefaultUnit("rad");
00467
00468
00469 maxthetaCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ang/maxtheta",this);
00470 maxthetaCmd1->SetGuidance("Set maximum theta");
00471 maxthetaCmd1->SetParameterName("MaxTheta",false,false);
00472 maxthetaCmd1->SetDefaultValue(pi);
00473 maxthetaCmd1->SetDefaultUnit("rad");
00474
00475
00476 minphiCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ang/minphi",this);
00477 minphiCmd1->SetGuidance("Set minimum phi");
00478 minphiCmd1->SetParameterName("MinPhi",false,false);
00479 minphiCmd1->SetDefaultUnit("rad");
00480
00481
00482 maxphiCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ang/maxphi",this);
00483 maxphiCmd1->SetGuidance("Set maximum phi");
00484 maxphiCmd1->SetParameterName("MaxPhi",false,false);
00485 maxphiCmd1->SetDefaultValue(pi);
00486 maxphiCmd1->SetDefaultUnit("rad");
00487
00488
00489 angsigmarCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ang/sigma_r",this);
00490 angsigmarCmd1->SetGuidance("Set standard deviation in direction for 1D beam.");
00491 angsigmarCmd1->SetParameterName("Sigmara",false,false);
00492 angsigmarCmd1->SetDefaultUnit("rad");
00493
00494
00495 angsigmaxCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ang/sigma_x",this);
00496 angsigmaxCmd1->SetGuidance("Set standard deviation in direction in x-direc. for 2D beam");
00497 angsigmaxCmd1->SetParameterName("Sigmaxa",false,false);
00498 angsigmaxCmd1->SetDefaultUnit("rad");
00499
00500
00501 angsigmayCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ang/sigma_y",this);
00502 angsigmayCmd1->SetGuidance("Set standard deviation in direction in y-direc. for 2D beam");
00503 angsigmayCmd1->SetParameterName("Sigmaya",false,false);
00504 angsigmayCmd1->SetDefaultUnit("rad");
00505
00506
00507 angfocusCmd = new G4UIcmdWith3VectorAndUnit("/gps/ang/focuspoint",this);
00508 angfocusCmd->SetGuidance("Set the focusing point for the beam");
00509 angfocusCmd->SetParameterName("x","y","z",false,false);
00510 angfocusCmd->SetDefaultUnit("cm");
00511
00512
00513 useuserangaxisCmd1 = new G4UIcmdWithABool("/gps/ang/user_coor",this);
00514 useuserangaxisCmd1->SetGuidance("true for using user defined angular co-ordinates");
00515 useuserangaxisCmd1->SetGuidance("Default is false");
00516 useuserangaxisCmd1->SetParameterName("useuserangaxis",true);
00517 useuserangaxisCmd1->SetDefaultValue(false);
00518
00519 surfnormCmd1 = new G4UIcmdWithABool("/gps/ang/surfnorm",this);
00520 surfnormCmd1->SetGuidance("Makes a user-defined distribution with respect to surface normals rather than x,y,z axes.");
00521 surfnormCmd1->SetGuidance("Default is false");
00522 surfnormCmd1->SetParameterName("surfnorm",true);
00523 surfnormCmd1->SetDefaultValue(false);
00524
00525
00526 angtypeCmd = new G4UIcmdWithAString("/gps/angtype",this);
00527 angtypeCmd->SetGuidance("Sets angular source distribution type (obsolete!)");
00528 angtypeCmd->SetGuidance("Possible variables are: iso, cos planar beam1d beam2d or user");
00529 angtypeCmd->SetParameterName("AngDis",false,false);
00530 angtypeCmd->SetDefaultValue("iso");
00531 angtypeCmd->SetCandidates("iso cos planar beam1d beam2d user");
00532
00533 angrot1Cmd = new G4UIcmdWith3Vector("/gps/angrot1",this);
00534 angrot1Cmd->SetGuidance("Sets the x' vector for angular distribution(obsolete!) ");
00535 angrot1Cmd->SetGuidance("Need not be a unit vector");
00536 angrot1Cmd->SetParameterName("AR1x","AR1y","AR1z",false,false);
00537 angrot1Cmd->SetRange("AR1x != 0 || AR1y != 0 || AR1z != 0");
00538
00539 angrot2Cmd = new G4UIcmdWith3Vector("/gps/angrot2",this);
00540 angrot2Cmd->SetGuidance("Sets the y' vector for angular distribution (obsolete!)");
00541 angrot2Cmd->SetGuidance("Need not be a unit vector");
00542 angrot2Cmd->SetParameterName("AR2x","AR2y","AR2z",false,false);
00543 angrot2Cmd->SetRange("AR2x != 0 || AR2y != 0 || AR2z != 0");
00544
00545 minthetaCmd = new G4UIcmdWithADoubleAndUnit("/gps/mintheta",this);
00546 minthetaCmd->SetGuidance("Set minimum theta (obsolete!)");
00547 minthetaCmd->SetParameterName("MinTheta",false,false);
00548 minthetaCmd->SetDefaultUnit("rad");
00549
00550
00551 maxthetaCmd = new G4UIcmdWithADoubleAndUnit("/gps/maxtheta",this);
00552 maxthetaCmd->SetGuidance("Set maximum theta (obsolete!)");
00553 maxthetaCmd->SetParameterName("MaxTheta",false,false);
00554 maxthetaCmd->SetDefaultValue(3.1416);
00555 maxthetaCmd->SetDefaultUnit("rad");
00556
00557
00558 minphiCmd = new G4UIcmdWithADoubleAndUnit("/gps/minphi",this);
00559 minphiCmd->SetGuidance("Set minimum phi (obsolete!)");
00560 minphiCmd->SetParameterName("MinPhi",false,false);
00561 minphiCmd->SetDefaultUnit("rad");
00562
00563
00564 maxphiCmd = new G4UIcmdWithADoubleAndUnit("/gps/maxphi",this);
00565 maxphiCmd->SetGuidance("Set maximum phi(obsolete!)");
00566 maxphiCmd->SetParameterName("MaxPhi",false,false);
00567 maxphiCmd->SetDefaultUnit("rad");
00568
00569
00570 angsigmarCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaangr",this);
00571 angsigmarCmd->SetGuidance("Set standard deviation of beam direction in radial(obsolete!).");
00572 angsigmarCmd->SetParameterName("Sigmara",false,false);
00573 angsigmarCmd->SetDefaultUnit("rad");
00574
00575
00576 angsigmaxCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaangx",this);
00577 angsigmaxCmd->SetGuidance("Set standard deviation of beam direction in x-direc(obsolete!).");
00578 angsigmaxCmd->SetParameterName("Sigmaxa",false,false);
00579 angsigmaxCmd->SetDefaultUnit("rad");
00580
00581
00582 angsigmayCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaangy",this);
00583 angsigmayCmd->SetGuidance("Set standard deviation of beam direction in y-direc.(obsolete!)");
00584 angsigmayCmd->SetParameterName("Sigmaya",false,false);
00585 angsigmayCmd->SetDefaultUnit("rad");
00586
00587
00588 useuserangaxisCmd = new G4UIcmdWithABool("/gps/useuserangaxis",this);
00589 useuserangaxisCmd->SetGuidance("true for using user defined angular co-ordinates(obsolete!)");
00590 useuserangaxisCmd->SetGuidance("Default is false");
00591 useuserangaxisCmd->SetParameterName("useuserangaxis",true);
00592 useuserangaxisCmd->SetDefaultValue(false);
00593
00594 surfnormCmd = new G4UIcmdWithABool("/gps/surfnorm",this);
00595 surfnormCmd->SetGuidance("Makes a user-defined distribution with respect to surface normals rather than x,y,z axes (obsolete!).");
00596 surfnormCmd->SetGuidance("Default is false");
00597 surfnormCmd->SetParameterName("surfnorm",true);
00598 surfnormCmd->SetDefaultValue(false);
00599
00600
00601
00602 energyDirectory = new G4UIdirectory("/gps/ene/");
00603 energyDirectory->SetGuidance("Spectral commands sub-directory");
00604
00605 energytypeCmd1 = new G4UIcmdWithAString("/gps/ene/type",this);
00606 energytypeCmd1->SetGuidance("Sets energy distribution type");
00607 energytypeCmd1->SetParameterName("EnergyDis",false,false);
00608 energytypeCmd1->SetDefaultValue("Mono");
00609 energytypeCmd1->SetCandidates("Mono Lin Pow Exp Gauss Brem Bbody Cdg User Arb Epn");
00610
00611 eminCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ene/min",this);
00612 eminCmd1->SetGuidance("Sets minimum energy");
00613 eminCmd1->SetParameterName("emin",false,false);
00614 eminCmd1->SetDefaultUnit("keV");
00615
00616
00617 emaxCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ene/max",this);
00618 emaxCmd1->SetGuidance("Sets maximum energy");
00619 emaxCmd1->SetParameterName("emax",false,false);
00620 emaxCmd1->SetDefaultUnit("keV");
00621
00622
00623 monoenergyCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ene/mono",this);
00624 monoenergyCmd1->SetGuidance("Sets a monocromatic energy (same as gps/energy)");
00625 monoenergyCmd1->SetParameterName("monoenergy",false,false);
00626 monoenergyCmd1->SetDefaultUnit("keV");
00627
00628
00629 engsigmaCmd1 = new G4UIcmdWithADoubleAndUnit("/gps/ene/sigma",this);
00630 engsigmaCmd1->SetGuidance("Sets the standard deviation for Gaussian energy dist.");
00631 engsigmaCmd1->SetParameterName("Sigmae",false,false);
00632 engsigmaCmd1->SetDefaultUnit("keV");
00633
00634
00635 alphaCmd1 = new G4UIcmdWithADouble("/gps/ene/alpha",this);
00636 alphaCmd1->SetGuidance("Sets Alpha (index) for power-law energy dist.");
00637 alphaCmd1->SetParameterName("alpha",false,false);
00638
00639 tempCmd1 = new G4UIcmdWithADouble("/gps/ene/temp",this);
00640 tempCmd1->SetGuidance("Sets the temperature for Brem and BBody distributions (in Kelvin)");
00641 tempCmd1->SetParameterName("temp",false,false);
00642
00643 ezeroCmd1 = new G4UIcmdWithADouble("/gps/ene/ezero",this);
00644 ezeroCmd1->SetGuidance("Sets E_0 for exponential distribution (in MeV)");
00645 ezeroCmd1->SetParameterName("ezero",false,false);
00646
00647 gradientCmd1 = new G4UIcmdWithADouble("/gps/ene/gradient",this);
00648 gradientCmd1->SetGuidance("Sets the gradient for Lin distribution (in 1/MeV)");
00649 gradientCmd1->SetParameterName("gradient",false,false);
00650
00651 interceptCmd1 = new G4UIcmdWithADouble("/gps/ene/intercept",this);
00652 interceptCmd1->SetGuidance("Sets the intercept for Lin distributions (in MeV)");
00653 interceptCmd1->SetParameterName("intercept",false,false);
00654
00655 arbeintCmd1 = new G4UIcmdWithADouble("/gps/ene/biasAlpha",this);
00656 arbeintCmd1->SetGuidance("Set the power-law index for the energy sampling distri. )");
00657 arbeintCmd1->SetParameterName("arbeint",false,false);
00658
00659 calculateCmd1 = new G4UIcmdWithoutParameter("/gps/ene/calculate",this);
00660 calculateCmd1->SetGuidance("Calculates the distributions for Cdg and BBody");
00661
00662 energyspecCmd1 = new G4UIcmdWithABool("/gps/ene/emspec",this);
00663 energyspecCmd1->SetGuidance("True for energy and false for momentum spectra");
00664 energyspecCmd1->SetParameterName("energyspec",true);
00665 energyspecCmd1->SetDefaultValue(true);
00666
00667 diffspecCmd1 = new G4UIcmdWithABool("/gps/ene/diffspec",this);
00668 diffspecCmd1->SetGuidance("True for differential and flase for integral spectra");
00669 diffspecCmd1->SetParameterName("diffspec",true);
00670 diffspecCmd1->SetDefaultValue(true);
00671
00672
00673 energytypeCmd = new G4UIcmdWithAString("/gps/energytype",this);
00674 energytypeCmd->SetGuidance("Sets energy distribution type (obsolete!)");
00675 energytypeCmd->SetParameterName("EnergyDis",false,false);
00676 energytypeCmd->SetDefaultValue("Mono");
00677 energytypeCmd->SetCandidates("Mono Lin Pow Exp Gauss Brem Bbody Cdg User Arb Epn");
00678
00679 eminCmd = new G4UIcmdWithADoubleAndUnit("/gps/emin",this);
00680 eminCmd->SetGuidance("Sets Emin (obsolete!)");
00681 eminCmd->SetParameterName("emin",false,false);
00682 eminCmd->SetDefaultUnit("keV");
00683
00684
00685 emaxCmd = new G4UIcmdWithADoubleAndUnit("/gps/emax",this);
00686 emaxCmd->SetGuidance("Sets Emax (obsolete!)");
00687 emaxCmd->SetParameterName("emax",false,false);
00688 emaxCmd->SetDefaultUnit("keV");
00689
00690
00691 monoenergyCmd = new G4UIcmdWithADoubleAndUnit("/gps/monoenergy",this);
00692 monoenergyCmd->SetGuidance("Sets Monoenergy (obsolete, use gps/energy instead!)");
00693 monoenergyCmd->SetParameterName("monoenergy",false,false);
00694 monoenergyCmd->SetDefaultUnit("keV");
00695
00696
00697 engsigmaCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmae",this);
00698 engsigmaCmd->SetGuidance("Sets the standard deviation for Gaussian energy dist.(obsolete!)");
00699 engsigmaCmd->SetParameterName("Sigmae",false,false);
00700 engsigmaCmd->SetDefaultUnit("keV");
00701
00702
00703 alphaCmd = new G4UIcmdWithADouble("/gps/alpha",this);
00704 alphaCmd->SetGuidance("Sets Alpha (index) for power-law energy dist(obsolete!).");
00705 alphaCmd->SetParameterName("alpha",false,false);
00706
00707 tempCmd = new G4UIcmdWithADouble("/gps/temp",this);
00708 tempCmd->SetGuidance("Sets the temperature for Brem and BBody (in Kelvin)(obsolete!)");
00709 tempCmd->SetParameterName("temp",false,false);
00710
00711 ezeroCmd = new G4UIcmdWithADouble("/gps/ezero",this);
00712 ezeroCmd->SetGuidance("Sets ezero exponential distributions (in MeV)(obsolete!)");
00713 ezeroCmd->SetParameterName("ezero",false,false);
00714
00715 gradientCmd = new G4UIcmdWithADouble("/gps/gradient",this);
00716 gradientCmd->SetGuidance("Sets the gradient for Lin distributions (in 1/MeV)(obsolete!)");
00717 gradientCmd->SetParameterName("gradient",false,false);
00718
00719 interceptCmd = new G4UIcmdWithADouble("/gps/intercept",this);
00720 interceptCmd->SetGuidance("Sets the intercept for Lin distributions (in MeV)(obsolete!)");
00721 interceptCmd->SetParameterName("intercept",false,false);
00722
00723 calculateCmd = new G4UIcmdWithoutParameter("/gps/calculate",this);
00724 calculateCmd->SetGuidance("Calculates distributions for Cdg and BBody(obsolete!)");
00725
00726 energyspecCmd = new G4UIcmdWithABool("/gps/energyspec",this);
00727 energyspecCmd->SetGuidance("True for energy and false for momentum spectra(obsolete!)");
00728 energyspecCmd->SetParameterName("energyspec",true);
00729 energyspecCmd->SetDefaultValue(true);
00730
00731 diffspecCmd = new G4UIcmdWithABool("/gps/diffspec",this);
00732 diffspecCmd->SetGuidance("True for differential and flase for integral spectra(obsolete!)");
00733 diffspecCmd->SetParameterName("diffspec",true);
00734 diffspecCmd->SetDefaultValue(true);
00735
00736
00737 histDirectory = new G4UIdirectory("/gps/hist/");
00738 histDirectory->SetGuidance("Histogram, biasing commands sub-directory");
00739
00740 histnameCmd1 = new G4UIcmdWithAString("/gps/hist/type",this);
00741 histnameCmd1->SetGuidance("Sets histogram type");
00742 histnameCmd1->SetParameterName("HistType",false,false);
00743 histnameCmd1->SetDefaultValue("biasx");
00744 histnameCmd1->SetCandidates("biasx biasy biasz biast biasp biase biaspt biaspp theta phi energy arb epn");
00745
00746 resethistCmd1 = new G4UIcmdWithAString("/gps/hist/reset",this);
00747 resethistCmd1->SetGuidance("Reset (clean) the histogram ");
00748 resethistCmd1->SetParameterName("HistType",false,false);
00749 resethistCmd1->SetDefaultValue("energy");
00750 resethistCmd1->SetCandidates("biasx biasy biasz biast biasp biase biaspt biaspp theta phi energy arb epn");
00751
00752 histpointCmd1 = new G4UIcmdWith3Vector("/gps/hist/point",this);
00753 histpointCmd1->SetGuidance("Allows user to define a histogram");
00754 histpointCmd1->SetGuidance("Enter: Ehi Weight");
00755 histpointCmd1->SetParameterName("Ehi","Weight","Junk",true,true);
00756 histpointCmd1->SetRange("Ehi >= 0. && Weight >= 0.");
00757
00758 histfileCmd1 = new G4UIcmdWithAString("/gps/hist/file",this);
00759 histfileCmd1->SetGuidance("import the arb energy hist in an ASCII file");
00760 histfileCmd1->SetParameterName("HistFile",false,false);
00761
00762 arbintCmd1 = new G4UIcmdWithAString("/gps/hist/inter",this);
00763 arbintCmd1->SetGuidance("Sets the interpolation method for arbitrary distribution.");
00764 arbintCmd1->SetParameterName("int",false,false);
00765 arbintCmd1->SetDefaultValue("Lin");
00766 arbintCmd1->SetCandidates("Lin Log Exp Spline");
00767
00768
00769 histnameCmd = new G4UIcmdWithAString("/gps/histname",this);
00770 histnameCmd->SetGuidance("Sets histogram type (obsolete!)");
00771 histnameCmd->SetParameterName("HistType",false,false);
00772 histnameCmd->SetDefaultValue("biasx");
00773 histnameCmd->SetCandidates("biasx biasy biasz biast biasp biase biaspt biaspp theta phi energy arb epn");
00774
00775
00776 resethistCmd = new G4UIcmdWithAString("/gps/resethist",this);
00777 resethistCmd->SetGuidance("Re-Set the histogram (obsolete!)");
00778 resethistCmd->SetParameterName("HistType",false,false);
00779 resethistCmd->SetDefaultValue("energy");
00780 resethistCmd->SetCandidates("biasx biasy biasz biast biasp biase biaspt biaspp theta phi energy arb epn");
00781
00782 histpointCmd = new G4UIcmdWith3Vector("/gps/histpoint",this);
00783 histpointCmd->SetGuidance("Allows user to define a histogram (obsolete!)");
00784 histpointCmd->SetGuidance("Enter: Ehi Weight");
00785 histpointCmd->SetParameterName("Ehi","Weight","Junk",false,false);
00786 histpointCmd->SetRange("Ehi >= 0. && Weight >= 0.");
00787
00788 arbintCmd = new G4UIcmdWithAString("/gps/arbint",this);
00789 arbintCmd->SetGuidance("Sets Arbitrary Interpolation type.(obsolete!) ");
00790 arbintCmd->SetParameterName("int",false,false);
00791 arbintCmd->SetDefaultValue("NULL");
00792 arbintCmd->SetCandidates("Lin Log Exp Spline");
00793
00794 }
00795
00796 G4GeneralParticleSourceMessenger::~G4GeneralParticleSourceMessenger()
00797 {
00798 delete positionDirectory;
00799 delete typeCmd;
00800 delete shapeCmd;
00801 delete centreCmd;
00802 delete posrot1Cmd;
00803 delete posrot2Cmd;
00804 delete halfxCmd;
00805 delete halfyCmd;
00806 delete halfzCmd;
00807 delete radiusCmd;
00808 delete radius0Cmd;
00809 delete possigmarCmd;
00810 delete possigmaxCmd;
00811 delete possigmayCmd;
00812 delete paralpCmd;
00813 delete partheCmd;
00814 delete parphiCmd;
00815 delete confineCmd;
00816 delete typeCmd1;
00817 delete shapeCmd1;
00818 delete centreCmd1;
00819 delete posrot1Cmd1;
00820 delete posrot2Cmd1;
00821 delete halfxCmd1;
00822 delete halfyCmd1;
00823 delete halfzCmd1;
00824 delete radiusCmd1;
00825 delete radius0Cmd1;
00826 delete possigmarCmd1;
00827 delete possigmaxCmd1;
00828 delete possigmayCmd1;
00829 delete paralpCmd1;
00830 delete partheCmd1;
00831 delete parphiCmd1;
00832 delete confineCmd1;
00833
00834 delete angularDirectory;
00835 delete angtypeCmd;
00836 delete angrot1Cmd;
00837 delete angrot2Cmd;
00838 delete minthetaCmd;
00839 delete maxthetaCmd;
00840 delete minphiCmd;
00841 delete maxphiCmd;
00842 delete angsigmarCmd;
00843 delete angsigmaxCmd;
00844 delete angsigmayCmd;
00845 delete useuserangaxisCmd;
00846 delete surfnormCmd;
00847 delete angtypeCmd1;
00848 delete angrot1Cmd1;
00849 delete angrot2Cmd1;
00850 delete minthetaCmd1;
00851 delete maxthetaCmd1;
00852 delete minphiCmd1;
00853 delete maxphiCmd1;
00854 delete angsigmarCmd1;
00855 delete angsigmaxCmd1;
00856 delete angsigmayCmd1;
00857 delete angfocusCmd;
00858 delete useuserangaxisCmd1;
00859 delete surfnormCmd1;
00860
00861 delete energyDirectory;
00862 delete energytypeCmd;
00863 delete eminCmd;
00864 delete emaxCmd;
00865 delete monoenergyCmd;
00866 delete engsigmaCmd;
00867 delete alphaCmd;
00868 delete tempCmd;
00869 delete ezeroCmd;
00870 delete gradientCmd;
00871 delete interceptCmd;
00872 delete calculateCmd;
00873 delete energyspecCmd;
00874 delete diffspecCmd;
00875 delete energytypeCmd1;
00876 delete eminCmd1;
00877 delete emaxCmd1;
00878 delete monoenergyCmd1;
00879 delete engsigmaCmd1;
00880 delete alphaCmd1;
00881 delete tempCmd1;
00882 delete ezeroCmd1;
00883 delete gradientCmd1;
00884 delete interceptCmd1;
00885 delete arbeintCmd1;
00886 delete calculateCmd1;
00887 delete energyspecCmd1;
00888 delete diffspecCmd1;
00889
00890 delete histDirectory;
00891 delete histnameCmd;
00892 delete resethistCmd;
00893 delete histpointCmd;
00894 delete arbintCmd;
00895 delete histnameCmd1;
00896 delete resethistCmd1;
00897 delete histpointCmd1;
00898 delete histfileCmd1;
00899 delete arbintCmd1;
00900
00901 delete verbosityCmd;
00902 delete ionCmd;
00903 delete particleCmd;
00904 delete timeCmd;
00905 delete polCmd;
00906 delete numberCmd;
00907 delete positionCmd;
00908 delete directionCmd;
00909 delete energyCmd;
00910 delete listCmd;
00911
00912 delete sourceDirectory;
00913 delete addsourceCmd;
00914 delete listsourceCmd;
00915 delete clearsourceCmd;
00916 delete getsourceCmd;
00917 delete setsourceCmd;
00918 delete setintensityCmd;
00919 delete deletesourceCmd;
00920 delete multiplevertexCmd;
00921 delete flatsamplingCmd;
00922
00923 delete gpsDirectory;
00924
00925 }
00926
00927 void G4GeneralParticleSourceMessenger::SetNewValue(G4UIcommand *command, G4String newValues)
00928 {
00929 if(command == typeCmd)
00930 {
00931 fParticleGun->GetPosDist()->SetPosDisType(newValues);
00932 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00933 << " The command is obsolete and will be removed soon." << G4endl
00934 << " Please try to use the new structured commands!" << G4endl;
00935 }
00936 else if(command == shapeCmd)
00937 {
00938 fParticleGun->GetPosDist()->SetPosDisShape(newValues);
00939 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00940 << " The command is obsolete and will be removed soon." << G4endl
00941 << " Please try to use the new structured commands!" << G4endl;
00942 }
00943 else if(command == centreCmd)
00944 {
00945 fParticleGun->GetPosDist()->SetCentreCoords(centreCmd->GetNew3VectorValue(newValues));
00946 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00947 << " The command is obsolete and will be removed soon." << G4endl
00948 << " Please try to use the new structured commands!" << G4endl;
00949 }
00950 else if(command == posrot1Cmd)
00951 {
00952 fParticleGun->GetPosDist()->SetPosRot1(posrot1Cmd->GetNew3VectorValue(newValues));
00953 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00954 << " The command is obsolete and will be removed soon." << G4endl
00955 << " Please try to use the new structured commands!" << G4endl;
00956 }
00957 else if(command == posrot2Cmd)
00958 {
00959 fParticleGun->GetPosDist()->SetPosRot2(posrot2Cmd->GetNew3VectorValue(newValues));
00960 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00961 << " The command is obsolete and will be removed soon." << G4endl
00962 << " Please try to use the new structured commands!" << G4endl;
00963 }
00964 else if(command == halfxCmd)
00965 {
00966 fParticleGun->GetPosDist()->SetHalfX(halfxCmd->GetNewDoubleValue(newValues));
00967 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00968 << " The command is obsolete and will be removed soon." << G4endl
00969 << " Please try to use the new structured commands!" << G4endl;
00970 }
00971 else if(command == halfyCmd)
00972 {
00973 fParticleGun->GetPosDist()->SetHalfY(halfyCmd->GetNewDoubleValue(newValues));
00974 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00975 << " The command is obsolete and will be removed soon." << G4endl
00976 << " Please try to use the new structured commands!" << G4endl;
00977 }
00978 else if(command == halfzCmd)
00979 {
00980 fParticleGun->GetPosDist()->SetHalfZ(halfzCmd->GetNewDoubleValue(newValues));
00981 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00982 << " The command is obsolete and will be removed soon." << G4endl
00983 << " Please try to use the new structured commands!" << G4endl;
00984 }
00985 else if(command == radiusCmd)
00986 {
00987 fParticleGun->GetPosDist()->SetRadius(radiusCmd->GetNewDoubleValue(newValues));
00988 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00989 << " The command is obsolete and will be removed soon." << G4endl
00990 << " Please try to use the new structured commands!" << G4endl;
00991 }
00992 else if(command == radius0Cmd)
00993 {
00994 fParticleGun->GetPosDist()->SetRadius0(radius0Cmd->GetNewDoubleValue(newValues));
00995 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
00996 << " The command is obsolete and will be removed soon." << G4endl
00997 << " Please try to use the new structured commands!" << G4endl;
00998 }
00999 else if(command == possigmarCmd)
01000 {
01001 fParticleGun->GetPosDist()->SetBeamSigmaInR(possigmarCmd->GetNewDoubleValue(newValues));
01002 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01003 << " The command is obsolete and will be removed soon." << G4endl
01004 << " Please try to use the new structured commands!" << G4endl;
01005 }
01006 else if(command == possigmaxCmd)
01007 {
01008 fParticleGun->GetPosDist()->SetBeamSigmaInX(possigmaxCmd->GetNewDoubleValue(newValues));
01009 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01010 << " The command is obsolete and will be removed soon." << G4endl
01011 << " Please try to use the new structured commands!" << G4endl;
01012 }
01013 else if(command == possigmayCmd)
01014 {
01015 fParticleGun->GetPosDist()->SetBeamSigmaInY(possigmayCmd->GetNewDoubleValue(newValues));
01016 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01017 << " The command is obsolete and will be removed soon." << G4endl
01018 << " Please try to use the new structured commands!" << G4endl;
01019 }
01020 else if(command == paralpCmd)
01021 {
01022 fParticleGun->GetPosDist()->SetParAlpha(paralpCmd->GetNewDoubleValue(newValues));
01023 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01024 << " The command is obsolete and will be removed soon." << G4endl
01025 << " Please try to use the new structured commands!" << G4endl;
01026 }
01027 else if(command == partheCmd)
01028 {
01029 fParticleGun->GetPosDist()->SetParTheta(partheCmd->GetNewDoubleValue(newValues));
01030 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01031 << " The command is obsolete and will be removed soon." << G4endl
01032 << " Please try to use the new structured commands!" << G4endl;
01033 }
01034 else if(command == parphiCmd)
01035 {
01036 fParticleGun->GetPosDist()->SetParPhi(parphiCmd->GetNewDoubleValue(newValues));
01037 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01038 << " The command is obsolete and will be removed soon." << G4endl
01039 << " Please try to use the new structured commands!" << G4endl;
01040 }
01041 else if(command == confineCmd)
01042 {
01043 fParticleGun->GetPosDist()->ConfineSourceToVolume(newValues);
01044 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01045 << " The command is obsolete and will be removed soon." << G4endl
01046 << " Please try to use the new structured commands!" << G4endl;
01047 }
01048 else if(command == angtypeCmd)
01049 {
01050 fParticleGun->GetAngDist()->SetAngDistType(newValues);
01051 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01052 << " The command is obsolete and will be removed soon." << G4endl
01053 << " Please try to use the new structured commands!" << G4endl;
01054 }
01055 else if(command == angrot1Cmd)
01056 {
01057 G4String a = "angref1";
01058 fParticleGun->GetAngDist()->DefineAngRefAxes(a,angrot1Cmd->GetNew3VectorValue(newValues));
01059 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01060 << " The command is obsolete and will be removed soon." << G4endl
01061 << " Please try to use the new structured commands!" << G4endl;
01062 }
01063 else if(command == angrot2Cmd)
01064 {
01065 G4String a = "angref2";
01066 fParticleGun->GetAngDist()->DefineAngRefAxes(a,angrot2Cmd->GetNew3VectorValue(newValues));
01067 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01068 << " The command is obsolete and will be removed soon." << G4endl
01069 << " Please try to use the new structured commands!" << G4endl;
01070 }
01071 else if(command == minthetaCmd)
01072 {
01073 fParticleGun->GetAngDist()->SetMinTheta(minthetaCmd->GetNewDoubleValue(newValues));
01074 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01075 << " The command is obsolete and will be removed soon." << G4endl
01076 << " Please try to use the new structured commands!" << G4endl;
01077 }
01078 else if(command == minphiCmd)
01079 {
01080 fParticleGun->GetAngDist()->SetMinPhi(minphiCmd->GetNewDoubleValue(newValues));
01081 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01082 << " The command is obsolete and will be removed soon." << G4endl
01083 << " Please try to use the new structured commands!" << G4endl;
01084 }
01085 else if(command == maxthetaCmd)
01086 {
01087 fParticleGun->GetAngDist()->SetMaxTheta(maxthetaCmd->GetNewDoubleValue(newValues));
01088 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01089 << " The command is obsolete and will be removed soon." << G4endl
01090 << " Please try to use the new structured commands!" << G4endl;
01091 }
01092 else if(command == maxphiCmd)
01093 {
01094 fParticleGun->GetAngDist()->SetMaxPhi(maxphiCmd->GetNewDoubleValue(newValues));
01095 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01096 << " The command is obsolete and will be removed soon." << G4endl
01097 << " Please try to use the new structured commands!" << G4endl;
01098 }
01099 else if(command == angsigmarCmd)
01100 {
01101 fParticleGun->GetAngDist()->SetBeamSigmaInAngR(angsigmarCmd->GetNewDoubleValue(newValues));
01102 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01103 << " The command is obsolete and will be removed soon." << G4endl
01104 << " Please try to use the new structured commands!" << G4endl;
01105 }
01106 else if(command == angsigmaxCmd)
01107 {
01108 fParticleGun->GetAngDist()->SetBeamSigmaInAngX(angsigmaxCmd->GetNewDoubleValue(newValues));
01109 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01110 << " The command is obsolete and will be removed soon." << G4endl
01111 << " Please try to use the new structured commands!" << G4endl;
01112 }
01113 else if(command == angsigmayCmd)
01114 {
01115 fParticleGun->GetAngDist()->SetBeamSigmaInAngY(angsigmayCmd->GetNewDoubleValue(newValues));
01116 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01117 << " The command is obsolete and will be removed soon." << G4endl
01118 << " Please try to use the new structured commands!" << G4endl;
01119 }
01120 else if(command == useuserangaxisCmd)
01121 {
01122 fParticleGun->GetAngDist()->SetUseUserAngAxis(useuserangaxisCmd->GetNewBoolValue(newValues));
01123 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01124 << " The command is obsolete and will be removed soon." << G4endl
01125 << " Please try to use the new structured commands!" << G4endl;
01126 }
01127 else if(command == surfnormCmd)
01128 {
01129 fParticleGun->GetAngDist()->SetUserWRTSurface(surfnormCmd->GetNewBoolValue(newValues));
01130 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01131 << " The command is obsolete and will be removed soon." << G4endl
01132 << " Please try to use the new structured commands!" << G4endl;
01133 }
01134 else if(command == energytypeCmd)
01135 {
01136 fParticleGun->GetEneDist()->SetEnergyDisType(newValues);
01137 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01138 << " The command is obsolete and will be removed soon." << G4endl
01139 << " Please try to use the new structured commands!" << G4endl;
01140 }
01141 else if(command == eminCmd)
01142 {
01143 fParticleGun->GetEneDist()->SetEmin(eminCmd->GetNewDoubleValue(newValues));
01144 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01145 << " The command is obsolete and will be removed soon." << G4endl
01146 << " Please try to use the new structured commands!" << G4endl;
01147 }
01148 else if(command == emaxCmd)
01149 {
01150 fParticleGun->GetEneDist()->SetEmax(emaxCmd->GetNewDoubleValue(newValues));
01151 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01152 << " The command is obsolete and will be removed soon." << G4endl
01153 << " Please try to use the new structured commands!" << G4endl;
01154 }
01155 else if(command == monoenergyCmd)
01156 {
01157 fParticleGun->GetEneDist()->SetMonoEnergy(monoenergyCmd->GetNewDoubleValue(newValues));
01158 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01159 << " The command is obsolete and will be removed soon." << G4endl
01160 << " Please try to use the new structured commands!" << G4endl;
01161 }
01162 else if(command == engsigmaCmd)
01163 {
01164 fParticleGun->GetEneDist()->SetBeamSigmaInE(engsigmaCmd->GetNewDoubleValue(newValues));
01165 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01166 << " The command is obsolete and will be removed soon." << G4endl
01167 << " Please try to use the new structured commands!" << G4endl;
01168 }
01169 else if(command == alphaCmd)
01170 {
01171 fParticleGun->GetEneDist()->SetAlpha(alphaCmd->GetNewDoubleValue(newValues));
01172 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01173 << " The command is obsolete and will be removed soon." << G4endl
01174 << " Please try to use the new structured commands!" << G4endl;
01175 }
01176 else if(command == tempCmd)
01177 {
01178 fParticleGun->GetEneDist()->SetTemp(tempCmd->GetNewDoubleValue(newValues));
01179 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01180 << " The command is obsolete and will be removed soon." << G4endl
01181 << " Please try to use the new structured commands!" << G4endl;
01182 }
01183 else if(command == ezeroCmd)
01184 {
01185 fParticleGun->GetEneDist()->SetEzero(ezeroCmd->GetNewDoubleValue(newValues));
01186 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01187 << " The command is obsolete and will be removed soon." << G4endl
01188 << " Please try to use the new structured commands!" << G4endl;
01189 }
01190 else if(command == gradientCmd)
01191 {
01192 fParticleGun->GetEneDist()->SetGradient(gradientCmd->GetNewDoubleValue(newValues));
01193 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01194 << " The command is obsolete and will be removed soon." << G4endl
01195 << " Please try to use the new structured commands!" << G4endl;
01196 }
01197 else if(command == interceptCmd)
01198 {
01199 fParticleGun->GetEneDist()->SetInterCept(interceptCmd->GetNewDoubleValue(newValues));
01200 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01201 << " The command is obsolete and will be removed soon." << G4endl
01202 << " Please try to use the new structured commands!" << G4endl;
01203 }
01204 else if(command == calculateCmd)
01205 {
01206 fParticleGun->GetEneDist()->Calculate();
01207 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01208 << " The command is obsolete and will be removed soon." << G4endl
01209 << " Please try to use the new structured commands!" << G4endl;
01210 }
01211 else if(command == energyspecCmd)
01212 {
01213 fParticleGun->GetEneDist()->InputEnergySpectra(energyspecCmd->GetNewBoolValue(newValues));
01214 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01215 << " The command is obsolete and will be removed soon." << G4endl
01216 << " Please try to use the new structured commands!" << G4endl;
01217 }
01218 else if(command == diffspecCmd)
01219 {
01220 fParticleGun->GetEneDist()->InputDifferentialSpectra(diffspecCmd->GetNewBoolValue(newValues));
01221 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01222 << " The command is obsolete and will be removed soon." << G4endl
01223 << " Please try to use the new structured commands!" << G4endl;
01224 }
01225 else if(command == histnameCmd)
01226 {
01227 histtype = newValues;
01228 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01229 << " The command is obsolete and will be removed soon." << G4endl
01230 << " Please try to use the new structured commands!" << G4endl;
01231 }
01232 else if(command == histpointCmd)
01233 {
01234 if(histtype == "biasx")
01235 fParticleGun->GetBiasRndm()->SetXBias(histpointCmd->GetNew3VectorValue(newValues));
01236 if(histtype == "biasy")
01237 fParticleGun->GetBiasRndm()->SetYBias(histpointCmd->GetNew3VectorValue(newValues));
01238 if(histtype == "biasz")
01239 fParticleGun->GetBiasRndm()->SetZBias(histpointCmd->GetNew3VectorValue(newValues));
01240 if(histtype == "biast")
01241 fParticleGun->GetBiasRndm()->SetThetaBias(histpointCmd->GetNew3VectorValue(newValues));
01242 if(histtype == "biasp")
01243 fParticleGun->GetBiasRndm()->SetPhiBias(histpointCmd->GetNew3VectorValue(newValues));
01244 if(histtype == "biase")
01245 fParticleGun->GetBiasRndm()->SetEnergyBias(histpointCmd->GetNew3VectorValue(newValues));
01246 if(histtype == "theta")
01247 fParticleGun->GetAngDist()->UserDefAngTheta(histpointCmd->GetNew3VectorValue(newValues));
01248 if(histtype == "phi")
01249 fParticleGun->GetAngDist()->UserDefAngPhi(histpointCmd->GetNew3VectorValue(newValues));
01250 if(histtype == "energy")
01251 fParticleGun->GetEneDist()->UserEnergyHisto(histpointCmd->GetNew3VectorValue(newValues));
01252 if(histtype == "arb")
01253 fParticleGun->GetEneDist()->ArbEnergyHisto(histpointCmd->GetNew3VectorValue(newValues));
01254 if(histtype == "epn")
01255 fParticleGun->GetEneDist()->EpnEnergyHisto(histpointCmd->GetNew3VectorValue(newValues));
01256 G4cout << " G4GeneralParticleSourceMessenger - Warning: The command is obsolete and will be removed soon. Please try to use the new structured commands!" << G4endl;
01257 }
01258 else if(command == resethistCmd)
01259 {
01260 if(newValues == "theta" || newValues == "phi") {
01261 fParticleGun->GetAngDist()->ReSetHist(newValues);
01262 } else if (newValues == "energy" || newValues == "arb" || newValues == "epn") {
01263 fParticleGun->GetEneDist()->ReSetHist(newValues);
01264 } else {
01265 fParticleGun->GetBiasRndm()->ReSetHist(newValues);
01266 }
01267 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01268 << " The command is obsolete and will be removed soon." << G4endl
01269 << " Please try to use the new structured commands!" << G4endl;
01270 }
01271 else if(command == arbintCmd)
01272 {
01273 fParticleGun->GetEneDist()->ArbInterpolate(newValues);
01274 G4cout << " G4GeneralParticleSourceMessenger - Warning:" << G4endl
01275 << " The command is obsolete and will be removed soon." << G4endl
01276 << " Please try to use the new structured commands!" << G4endl;
01277 }
01278 else if( command==directionCmd )
01279 {
01280 fParticleGun->GetAngDist()->SetAngDistType("planar");
01281 fParticleGun->GetAngDist()->SetParticleMomentumDirection(directionCmd->GetNew3VectorValue(newValues));
01282 }
01283 else if( command==energyCmd )
01284 {
01285 fParticleGun->GetEneDist()->SetEnergyDisType("Mono");
01286 fParticleGun->GetEneDist()->SetMonoEnergy(energyCmd->GetNewDoubleValue(newValues));
01287 }
01288 else if( command==positionCmd )
01289 {
01290 fParticleGun->GetPosDist()->SetPosDisType("Point");
01291 fParticleGun->GetPosDist()->SetCentreCoords(positionCmd->GetNew3VectorValue(newValues));
01292 }
01293 else if(command == verbosityCmd)
01294 {
01295 fParticleGun->SetVerbosity(verbosityCmd->GetNewIntValue(newValues));
01296 }
01297 else if( command==particleCmd )
01298 {
01299 if (newValues =="ion") {
01300 fShootIon = true;
01301 } else {
01302 fShootIon = false;
01303 G4ParticleDefinition* pd = particleTable->FindParticle(newValues);
01304 if(pd != NULL)
01305 { fParticleGun->SetParticleDefinition( pd ); }
01306 }
01307 }
01308 else if( command==timeCmd )
01309 { fParticleGun->SetParticleTime(timeCmd->GetNewDoubleValue(newValues)); }
01310 else if( command==polCmd )
01311 { fParticleGun->SetParticlePolarization(polCmd->GetNew3VectorValue(newValues)); }
01312 else if( command==numberCmd )
01313 { fParticleGun->SetNumberOfParticles(numberCmd->GetNewIntValue(newValues)); }
01314 else if( command==ionCmd )
01315 { IonCommand(newValues); }
01316 else if( command==listCmd ){
01317 particleTable->DumpTable();
01318 }
01319 else if( command==addsourceCmd )
01320 {
01321 fGPS->AddaSource(addsourceCmd->GetNewDoubleValue(newValues));
01322 }
01323 else if( command==listsourceCmd )
01324 {
01325 fGPS->ListSource();
01326 }
01327 else if( command==clearsourceCmd )
01328 {
01329 fGPS->ClearAll();
01330 }
01331 else if( command==getsourceCmd )
01332 {
01333 G4cout << " Current source index:" << fGPS->GetCurrentSourceIndex()
01334 << " ; Intensity:" << fGPS->GetCurrentSourceIntensity() << G4endl;
01335 }
01336 else if( command==setsourceCmd )
01337 {
01338 fGPS->SetCurrentSourceto(setsourceCmd->GetNewIntValue(newValues));
01339 }
01340 else if( command==setintensityCmd )
01341 {
01342 fGPS->SetCurrentSourceIntensity(setintensityCmd->GetNewDoubleValue(newValues));
01343 }
01344 else if( command==deletesourceCmd )
01345 {
01346 fGPS->DeleteaSource(deletesourceCmd->GetNewIntValue(newValues));
01347 }
01348 else if(command == multiplevertexCmd)
01349 {
01350 fGPS->SetMultipleVertex(multiplevertexCmd->GetNewBoolValue(newValues));
01351 }
01352 else if(command == flatsamplingCmd)
01353 {
01354 fGPS->SetFlatSampling(flatsamplingCmd->GetNewBoolValue(newValues));
01355 }
01356
01357
01358
01359
01360 else if(command == typeCmd1)
01361 {
01362 fParticleGun->GetPosDist()->SetPosDisType(newValues);
01363 }
01364 else if(command == shapeCmd1)
01365 {
01366 fParticleGun->GetPosDist()->SetPosDisShape(newValues);
01367 }
01368 else if(command == centreCmd1)
01369 {
01370 fParticleGun->GetPosDist()->SetCentreCoords(centreCmd1->GetNew3VectorValue(newValues));
01371 }
01372 else if(command == posrot1Cmd1)
01373 {
01374 fParticleGun->GetPosDist()->SetPosRot1(posrot1Cmd1->GetNew3VectorValue(newValues));
01375 }
01376 else if(command == posrot2Cmd1)
01377 {
01378 fParticleGun->GetPosDist()->SetPosRot2(posrot2Cmd1->GetNew3VectorValue(newValues));
01379 }
01380 else if(command == halfxCmd1)
01381 {
01382 fParticleGun->GetPosDist()->SetHalfX(halfxCmd1->GetNewDoubleValue(newValues));
01383 }
01384 else if(command == halfyCmd1)
01385 {
01386 fParticleGun->GetPosDist()->SetHalfY(halfyCmd1->GetNewDoubleValue(newValues));
01387 }
01388 else if(command == halfzCmd1)
01389 {
01390 fParticleGun->GetPosDist()->SetHalfZ(halfzCmd1->GetNewDoubleValue(newValues));
01391 }
01392 else if(command == radiusCmd1)
01393 {
01394 fParticleGun->GetPosDist()->SetRadius(radiusCmd1->GetNewDoubleValue(newValues));
01395 }
01396 else if(command == radius0Cmd1)
01397 {
01398 fParticleGun->GetPosDist()->SetRadius0(radius0Cmd1->GetNewDoubleValue(newValues));
01399 }
01400 else if(command == possigmarCmd1)
01401 {
01402 fParticleGun->GetPosDist()->SetBeamSigmaInR(possigmarCmd1->GetNewDoubleValue(newValues));
01403 }
01404 else if(command == possigmaxCmd1)
01405 {
01406 fParticleGun->GetPosDist()->SetBeamSigmaInX(possigmaxCmd1->GetNewDoubleValue(newValues));
01407 }
01408 else if(command == possigmayCmd1)
01409 {
01410 fParticleGun->GetPosDist()->SetBeamSigmaInY(possigmayCmd1->GetNewDoubleValue(newValues));
01411 }
01412 else if(command == paralpCmd1)
01413 {
01414 fParticleGun->GetPosDist()->SetParAlpha(paralpCmd1->GetNewDoubleValue(newValues));
01415 }
01416 else if(command == partheCmd1)
01417 {
01418 fParticleGun->GetPosDist()->SetParTheta(partheCmd1->GetNewDoubleValue(newValues));
01419 }
01420 else if(command == parphiCmd1)
01421 {
01422 fParticleGun->GetPosDist()->SetParPhi(parphiCmd1->GetNewDoubleValue(newValues));
01423 }
01424 else if(command == confineCmd1)
01425 {
01426 fParticleGun->GetPosDist()->ConfineSourceToVolume(newValues);
01427 }
01428 else if(command == angtypeCmd1)
01429 {
01430 fParticleGun->GetAngDist()->SetAngDistType(newValues);
01431 }
01432 else if(command == angrot1Cmd1)
01433 {
01434 G4String a = "angref1";
01435 fParticleGun->GetAngDist()->DefineAngRefAxes(a,angrot1Cmd1->GetNew3VectorValue(newValues));
01436 }
01437 else if(command == angrot2Cmd1)
01438 {
01439 G4String a = "angref2";
01440 fParticleGun->GetAngDist()->DefineAngRefAxes(a,angrot2Cmd1->GetNew3VectorValue(newValues));
01441 }
01442 else if(command == minthetaCmd1)
01443 {
01444 fParticleGun->GetAngDist()->SetMinTheta(minthetaCmd1->GetNewDoubleValue(newValues));
01445 }
01446 else if(command == minphiCmd1)
01447 {
01448 fParticleGun->GetAngDist()->SetMinPhi(minphiCmd1->GetNewDoubleValue(newValues));
01449 }
01450 else if(command == maxthetaCmd1)
01451 {
01452 fParticleGun->GetAngDist()->SetMaxTheta(maxthetaCmd1->GetNewDoubleValue(newValues));
01453 }
01454 else if(command == maxphiCmd1)
01455 {
01456 fParticleGun->GetAngDist()->SetMaxPhi(maxphiCmd1->GetNewDoubleValue(newValues));
01457 }
01458 else if(command == angsigmarCmd1)
01459 {
01460 fParticleGun->GetAngDist()->SetBeamSigmaInAngR(angsigmarCmd1->GetNewDoubleValue(newValues));
01461 }
01462 else if(command == angsigmaxCmd1)
01463 {
01464 fParticleGun->GetAngDist()->SetBeamSigmaInAngX(angsigmaxCmd1->GetNewDoubleValue(newValues));
01465 }
01466 else if(command == angsigmayCmd1)
01467 {
01468 fParticleGun->GetAngDist()->SetBeamSigmaInAngY(angsigmayCmd1->GetNewDoubleValue(newValues));
01469 }
01470 else if(command == angfocusCmd)
01471 {
01472 fParticleGun->GetAngDist()->SetFocusPoint(angfocusCmd->GetNew3VectorValue(newValues));
01473 }
01474 else if(command == useuserangaxisCmd1)
01475 {
01476 fParticleGun->GetAngDist()->SetUseUserAngAxis(useuserangaxisCmd1->GetNewBoolValue(newValues));
01477 }
01478 else if(command == surfnormCmd1)
01479 {
01480 fParticleGun->GetAngDist()->SetUserWRTSurface(surfnormCmd1->GetNewBoolValue(newValues));
01481 }
01482 else if(command == energytypeCmd1)
01483 {
01484 fParticleGun->GetEneDist()->SetEnergyDisType(newValues);
01485 }
01486 else if(command == eminCmd1)
01487 {
01488 fParticleGun->GetEneDist()->SetEmin(eminCmd1->GetNewDoubleValue(newValues));
01489 }
01490 else if(command == emaxCmd1)
01491 {
01492 fParticleGun->GetEneDist()->SetEmax(emaxCmd1->GetNewDoubleValue(newValues));
01493 }
01494 else if(command == monoenergyCmd1)
01495 {
01496 fParticleGun->GetEneDist()->SetMonoEnergy(monoenergyCmd1->GetNewDoubleValue(newValues));
01497 }
01498 else if(command == engsigmaCmd1)
01499 {
01500 fParticleGun->GetEneDist()->SetBeamSigmaInE(engsigmaCmd1->GetNewDoubleValue(newValues));
01501 }
01502 else if(command == alphaCmd1)
01503 {
01504 fParticleGun->GetEneDist()->SetAlpha(alphaCmd1->GetNewDoubleValue(newValues));
01505 }
01506 else if(command == tempCmd1)
01507 {
01508 fParticleGun->GetEneDist()->SetTemp(tempCmd1->GetNewDoubleValue(newValues));
01509 }
01510 else if(command == ezeroCmd1)
01511 {
01512 fParticleGun->GetEneDist()->SetEzero(ezeroCmd1->GetNewDoubleValue(newValues));
01513 }
01514 else if(command == gradientCmd1)
01515 {
01516 fParticleGun->GetEneDist()->SetGradient(gradientCmd1->GetNewDoubleValue(newValues));
01517 }
01518 else if(command == interceptCmd1)
01519 {
01520 fParticleGun->GetEneDist()->SetInterCept(interceptCmd1->GetNewDoubleValue(newValues));
01521 }
01522 else if(command == arbeintCmd1)
01523 {
01524 fParticleGun->GetEneDist()->SetBiasAlpha(arbeintCmd1->GetNewDoubleValue(newValues));
01525 }
01526 else if(command == calculateCmd1)
01527 {
01528 fParticleGun->GetEneDist()->Calculate();
01529 }
01530 else if(command == energyspecCmd1)
01531 {
01532 fParticleGun->GetEneDist()->InputEnergySpectra(energyspecCmd1->GetNewBoolValue(newValues));
01533 }
01534 else if(command == diffspecCmd1)
01535 {
01536 fParticleGun->GetEneDist()->InputDifferentialSpectra(diffspecCmd1->GetNewBoolValue(newValues));
01537 }
01538 else if(command == histnameCmd1)
01539 {
01540 histtype = newValues;
01541 }
01542 else if(command == histfileCmd1)
01543 {
01544 histtype = "arb";
01545 fParticleGun->GetEneDist()->ArbEnergyHistoFile(newValues);
01546 }
01547 else if(command == histpointCmd1)
01548 {
01549 if(histtype == "biasx")
01550 fParticleGun->GetBiasRndm()->SetXBias(histpointCmd1->GetNew3VectorValue(newValues));
01551 if(histtype == "biasy")
01552 fParticleGun->GetBiasRndm()->SetYBias(histpointCmd1->GetNew3VectorValue(newValues));
01553 if(histtype == "biasz")
01554 fParticleGun->GetBiasRndm()->SetZBias(histpointCmd1->GetNew3VectorValue(newValues));
01555 if(histtype == "biast")
01556 fParticleGun->GetBiasRndm()->SetThetaBias(histpointCmd1->GetNew3VectorValue(newValues));
01557 if(histtype == "biasp")
01558 fParticleGun->GetBiasRndm()->SetPhiBias(histpointCmd1->GetNew3VectorValue(newValues));
01559 if(histtype == "biaspt")
01560 fParticleGun->GetBiasRndm()->SetPosThetaBias(histpointCmd1->GetNew3VectorValue(newValues));
01561 if(histtype == "biaspp")
01562 fParticleGun->GetBiasRndm()->SetPosPhiBias(histpointCmd1->GetNew3VectorValue(newValues));
01563 if(histtype == "biase")
01564 fParticleGun->GetBiasRndm()->SetEnergyBias(histpointCmd1->GetNew3VectorValue(newValues));
01565 if(histtype == "theta")
01566 fParticleGun->GetAngDist()->UserDefAngTheta(histpointCmd1->GetNew3VectorValue(newValues));
01567 if(histtype == "phi")
01568 fParticleGun->GetAngDist()->UserDefAngPhi(histpointCmd1->GetNew3VectorValue(newValues));
01569 if(histtype == "energy")
01570 fParticleGun->GetEneDist()->UserEnergyHisto(histpointCmd1->GetNew3VectorValue(newValues));
01571 if(histtype == "arb")
01572 fParticleGun->GetEneDist()->ArbEnergyHisto(histpointCmd1->GetNew3VectorValue(newValues));
01573 if(histtype == "epn")
01574 fParticleGun->GetEneDist()->EpnEnergyHisto(histpointCmd1->GetNew3VectorValue(newValues));
01575 }
01576 else if(command == resethistCmd1)
01577 {
01578 if(newValues == "theta" || newValues == "phi") {
01579 fParticleGun->GetAngDist()->ReSetHist(newValues);
01580 } else if (newValues == "energy" || newValues == "arb" || newValues == "epn") {
01581 fParticleGun->GetEneDist()->ReSetHist(newValues);
01582 } else {
01583 fParticleGun->GetBiasRndm()->ReSetHist(newValues);
01584 }
01585 }
01586 else if(command == arbintCmd1)
01587 {
01588 fParticleGun->GetEneDist()->ArbInterpolate(newValues);
01589 }
01590 else
01591 {
01592 G4cout << "Error entering command" << G4endl;
01593 }
01594 }
01595
01596 G4String G4GeneralParticleSourceMessenger::GetCurrentValue(G4UIcommand *)
01597 {
01598 G4String cv;
01599
01600
01601
01602
01603
01604
01605
01606
01607
01608
01609
01610
01611
01612
01613 cv = "Not implemented yet";
01614
01615 return cv;
01616 }
01617
01618 void G4GeneralParticleSourceMessenger::IonCommand(G4String newValues)
01619 {
01620 fShootIon = true;
01621
01622 if (fShootIon)
01623 {
01624 G4Tokenizer next( newValues );
01625
01626 fAtomicNumber = StoI(next());
01627 fAtomicMass = StoI(next());
01628 G4String sQ = next();
01629 if (sQ.isNull())
01630 {
01631 fIonCharge = fAtomicNumber;
01632 }
01633 else
01634 {
01635 fIonCharge = StoI(sQ);
01636 sQ = next();
01637 if (sQ.isNull())
01638 {
01639 fIonExciteEnergy = 0.0;
01640 }
01641 else
01642 {
01643 fIonExciteEnergy = StoD(sQ) * keV;
01644 }
01645 }
01646 G4ParticleDefinition* ion;
01647 ion = particleTable->GetIon( fAtomicNumber, fAtomicMass, fIonExciteEnergy);
01648 if (ion==0)
01649 {
01650 G4cout << "Ion with Z=" << fAtomicNumber;
01651 G4cout << " A=" << fAtomicMass << "is not be defined" << G4endl;
01652 }
01653 else
01654 {
01655 fParticleGun->SetParticleDefinition(ion);
01656 fParticleGun->SetParticleCharge(fIonCharge*eplus);
01657 }
01658 }
01659 else
01660 {
01661 G4cout << "Set /gps/particle to ion before using /gps/ion command";
01662 G4cout << G4endl;
01663 }
01664 }