Warning, file /geant4/examples/advanced/dna/moleculardna/src/ChromosomeMessenger.cc was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #include "ChromosomeMessenger.hh"
0028
0029 #include "ChromosomeMapper.hh"
0030 #include "UtilityFunctions.hh"
0031
0032 #include "G4UIcmdWithAString.hh"
0033 #include "G4UIdirectory.hh"
0034
0035
0036
0037 ChromosomeMessenger::ChromosomeMessenger(ChromosomeMapper* mapper)
0038 : fpChromosomeMapper(mapper),
0039 fpChromosomeDirectory(new G4UIdirectory("/chromosome/")),
0040 fpAddChromosome(new G4UIcmdWithAString("/chromosome/add", this)),
0041 fpSavePlotData(new G4UIcmdWithAString("/chromosome/plotData", this))
0042 {
0043
0044 fpChromosomeDirectory->SetGuidance("Commands for chromosome geometry.");
0045 fpAddChromosome->SetGuidance("Add a chromosomal region");
0046 fpAddChromosome->SetGuidance("format: shape name geometry-commands");
0047 fpAddChromosome->SetGuidance("shape: sphere || cyl || rod || ellipse || box");
0048 fpAddChromosome->SetGuidance("geometry-commands:");
0049 fpAddChromosome->SetGuidance("sphere: rad x y z unit [rx ry rz]");
0050 fpAddChromosome->SetGuidance("cyl: rad height x y z unit [rx ry rz]");
0051 fpAddChromosome->SetGuidance("rod: rad height x y z unit [rx ry rz]");
0052 fpAddChromosome->SetGuidance("box: x y z unit [rx ry rz]");
0053
0054 fpAddChromosome->SetGuidance
0055 ("ellipse: x-half-axis y-half-axis z-half-axis x y z unit [rx ry rz]");
0056 fpAddChromosome->SetGuidance("Rotations are optional and in degrees");
0057 fpSavePlotData->SetGuidance("Save plot data to specified file");
0058 }
0059
0060
0061
0062 void ChromosomeMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0063 {
0064 if (command == fpAddChromosome.get()) {
0065 std::vector<G4String> values = utility::Split(newValue, ' ');
0066 G4String key = values[0];
0067 std::vector<G4String> commands;
0068 for (auto it = (values.begin() + 1); it != values.end(); it++) {
0069 commands.emplace_back(*it);
0070 }
0071 fpChromosomeMapper->AddChromosome(key, commands);
0072 }
0073 else if (command == fpSavePlotData.get()) {
0074 fpChromosomeMapper->SavePlotData(newValue);
0075 }
0076 }
0077