File indexing completed on 2025-02-23 09:22:00
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");
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("Rotations are optional and in degrees");
0052 fpSavePlotData->SetGuidance("Save plot data to specified file");
0053 }
0054
0055
0056
0057 void ChromosomeMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0058 {
0059 if (command == fpAddChromosome.get()) {
0060 std::vector<G4String> values = utility::Split(newValue, ' ');
0061 G4String key = values[0];
0062 std::vector<G4String> commands;
0063 for (auto it = (values.begin() + 1); it != values.end(); it++) {
0064 commands.emplace_back(*it);
0065 }
0066 fpChromosomeMapper->AddChromosome(key, commands);
0067 }
0068 else if (command == fpSavePlotData.get()) {
0069 fpChromosomeMapper->SavePlotData(newValue);
0070 }
0071 }
0072