File indexing completed on 2025-12-16 09:29:08
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