G4UIcmdWith3VectorAndUnit.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 //
00029 //
00030 
00031 #ifndef G4UIcmdWith3VectorAndUnit_H
00032 #define G4UIcmdWith3VectorAndUnit_H 1
00033 
00034 #include "G4UIcommand.hh"
00035 #include "G4ThreeVector.hh"
00036 
00037 // class description:
00038 //  A concrete class of G4UIcommand. The command defined by this class
00039 // takes three double values and a unit.
00040 //  General information of G4UIcommand is given in G4UIcommand.hh.
00041 
00042 class G4UIcmdWith3VectorAndUnit : public G4UIcommand
00043 {
00044   public: // with description
00045     G4UIcmdWith3VectorAndUnit
00046     (const char * theCommandPath,G4UImessenger * theMessenger);
00047     //  Constructor. The command string with full path directory
00048     // and the pointer to the messenger must be given.
00049     virtual G4int DoIt(G4String parameterList);
00050     static G4ThreeVector GetNew3VectorValue(const char* paramString);
00051     //  Convert string which represents three double values and a unit to
00052     // G4ThreeVector. Values are converted to the Geant4 internal unit.
00053     static G4ThreeVector GetNew3VectorRawValue(const char* paramString);
00054     //  Convert string which represents three double values and a unit to
00055     // G4ThreeVector. Values are NOT converted to the Geant4 internal unit
00056     // but just as the given string.
00057     static G4double GetNewUnitValue(const char* paramString);
00058     //  Convert the unit string to the value of the unit. "paramString"
00059     // must contain three double values AND a unit string.
00060     G4String ConvertToStringWithBestUnit(G4ThreeVector vec);
00061     //  Convert a 3 vector value to a string of digits and unit. Best unit is
00062     // chosen from the unit category of default unit (in case SetDefaultUnit()
00063     //  is defined) or category defined by SetUnitCategory().
00064     G4String ConvertToStringWithDefaultUnit(G4ThreeVector vec);
00065     //  Convert a 3 vector value to a string of digits and unit. Best unit is
00066     // chosen from the category defined by SetUnitCategory() in case default
00067     // unit is not defined.
00068     void SetParameterName(const char * theNameX,const char * theNameY,
00069       const char * theNameZ,G4bool omittable,G4bool currentAsDefault=false);
00070     //  Set the parameter names for three parameters. Names are used by
00071     // the range checking routine.
00072     //  If "omittable" is set as true, the user of this command can ommit
00073     // the value(s) when he/she applies the command. If "omittable" is false,
00074     // the user must supply all three values.
00075     //  "currentAsDefault" flag is valid only if "omittable" is true. If this
00076     // flag is true, the current values are used as the default values when the
00077     // user ommit some of the parameters. If this flag is false, the values
00078     // given by the next SetDefaultValue() method are used.
00079     void SetDefaultValue(G4ThreeVector defVal);
00080     //  Set the default values of the parameters. These default values are used
00081     // when the user of this command ommits some of the parameter values, and
00082     // "ommitable" is true and "currentAsDefault" is false.
00083     void SetUnitCategory(const char * unitCategory);
00084     void SetUnitCandidates(const char * candidateList);
00085     void SetDefaultUnit(const char * defUnit);
00086     //  These three methods must be used alternatively.
00087     //  The user cannot ommit the unit as the fourth parameter of the command if
00088     // SetUnitCategory() or SetUnitCandidates() is used, while the unit defined
00089     // by SetDefaultUnit() method is used as the default unit so that the user can
00090     // ommits the fourth parameter.
00091     //  SetUnitCategory() defines the category of the units which will be accepted.
00092     // The available categories can be found in G4SystemOfUnits.hh in global category.
00093     // Only the units categorized in the given category are accepted as the fourth
00094     // parameter of the command.
00095     //  SetUnitCandidates() defines the candidates of units. Units listed in the
00096     // argument of this method must be separated by space(s). Only the units listed
00097     // in the candidate list are accepted as the fourth parameter of the command.
00098     //  SetDefaultUnit() defines the default unit and also it defines the category
00099     // of the allowed units. Thus only the units categorized as the given default
00100     // unit will be accepted.
00101 };
00102 
00103 #endif

Generated on Mon May 27 17:50:05 2013 for Geant4 by  doxygen 1.4.7