Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 /* 27 * =========================================== 28 * 29 * Filename: CexmcScenePrimitivesMessen 30 * 31 * Description: draw auxiliary scene primi 32 * 33 * Version: 1.0 34 * Created: 03.01.2011 12:42:03 35 * Revision: none 36 * Compiler: gcc 37 * 38 * Author: Alexey Radkov (), 39 * Company: PNPI 40 * 41 * =========================================== 42 */ 43 44 #include <sstream> 45 #include <cctype> 46 #include <G4UIparameter.hh> 47 #include <G4UIcommand.hh> 48 #include <G4UIcmdWith3Vector.hh> 49 #include <G4UIcmdWithABool.hh> 50 #include <G4UIcmdWithoutParameter.hh> 51 #include <G4Colour.hh> 52 #include "CexmcScenePrimitives.hh" 53 #include "CexmcScenePrimitivesMessenger.hh" 54 #include "CexmcMessenger.hh" 55 56 57 CexmcScenePrimitivesMessenger::CexmcScenePrimi 58 CexmcScene 59 scenePrimitives( scenePrimitives_ ), drawR 60 clearRadialLines( NULL ), markTargetCenter 61 highlightInnerCrystals( NULL ), setColour( 62 { 63 drawRadialLine = new G4UIcmdWith3Vector( 64 ( CexmcMessenger::visDirName + "drawRa 65 drawRadialLine->SetGuidance( "Draw radial 66 "(both in deg 67 drawRadialLine->SetParameterName( "RadialL 68 "RadialL 69 drawRadialLine->SetRange( "RadialLineLengt 70 drawRadialLine->SetDefaultValue( G4ThreeVe 71 drawRadialLine->AvailableForStates( G4Stat 72 73 clearRadialLines = new G4UIcmdWithoutParam 74 ( CexmcMessenger::visDirName + "clearR 75 clearRadialLines->SetGuidance( "Clear all 76 clearRadialLines->AvailableForStates( G4St 77 78 markTargetCenter = new G4UIcmdWithABool( 79 ( CexmcMessenger::visDirName + "markTa 80 markTargetCenter->SetGuidance( "Mark/unmar 81 markTargetCenter->SetParameterName( "MarkT 82 markTargetCenter->SetDefaultValue( true ); 83 markTargetCenter->AvailableForStates( G4St 84 85 highlightInnerCrystals = new G4UIcmdWithAB 86 ( CexmcMessenger::visDirName + "hlIC" 87 highlightInnerCrystals->SetGuidance( "High 88 "calo 89 highlightInnerCrystals->SetParameterName( 90 highlightInnerCrystals->SetDefaultValue( t 91 highlightInnerCrystals->AvailableForStates 92 93 setColour = new G4UIcommand( 94 ( CexmcMessenger::visDirName + "setCol 95 setColour->SetGuidance( "Set colour of spe 96 G4UIparameter * parameter( new G4UIparame 97 98 parameter->SetGuidance( "Scene primitive, 99 " tc - target center mark,\n" 100 " rl - radial lines,\n" 101 " ic - inner crystal highlights" ); 102 parameter->SetParameterCandidates( "tc rl 103 setColour->SetParameter( parameter ); 104 parameter = new G4UIparameter( "red", 's', 105 parameter->SetGuidance( "Red component or 106 "case succeeding colour\n component 107 parameter->SetDefaultValue( "1.0" ); 108 setColour->SetParameter( parameter ); 109 parameter = new G4UIparameter( "green", 'd 110 parameter->SetGuidance( "Green component" 111 parameter->SetDefaultValue( 1.0 ); 112 setColour->SetParameter( parameter ); 113 parameter = new G4UIparameter( "blue", 'd' 114 parameter->SetGuidance( "Blue component" ) 115 parameter->SetDefaultValue( 1.0 ); 116 setColour->SetParameter( parameter ); 117 parameter = new G4UIparameter( "opacity", 118 parameter->SetGuidance( "Opacity" ); 119 parameter->SetDefaultValue( 1.0 ); 120 setColour->SetParameter( parameter ); 121 setColour->AvailableForStates( G4State_Pre 122 } 123 124 125 CexmcScenePrimitivesMessenger::~CexmcScenePrim 126 { 127 delete drawRadialLine; 128 delete clearRadialLines; 129 delete markTargetCenter; 130 delete highlightInnerCrystals; 131 delete setColour; 132 } 133 134 135 void CexmcScenePrimitivesMessenger::SetNewVal 136 137 { 138 do 139 { 140 if ( cmd == drawRadialLine ) 141 { 142 G4ThreeVector line( G4UIcmdWith3V 143 144 scenePrimitives->DrawRadialLine( l 145 break; 146 } 147 if ( cmd == clearRadialLines ) 148 { 149 scenePrimitives->ClearRadialLines( 150 break; 151 } 152 if ( cmd == markTargetCenter ) 153 { 154 scenePrimitives->MarkTargetCenter( 155 G4UIcmdWithABo 156 break; 157 } 158 if ( cmd == highlightInnerCrystals ) 159 { 160 scenePrimitives->HighlightInnerCry 161 G4UIcmdWithABo 162 break; 163 } 164 if ( cmd == setColour ) 165 { 166 G4String name; 167 G4String redOrString; 168 G4double green( 1 ); 169 G4double blue( 1 ); 170 G4double opacity( 1 ); 171 G4Colour colour( 1, gre 172 std::istringstream iss( value ); 173 174 iss >> name >> redOrString >> gree 175 176 if ( std::isalpha( redOrString[ si 177 { 178 G4Colour::GetColour( redOrStri 179 } 180 else 181 { 182 colour = G4Colour( G4UIcommand 183 green, blue 184 } 185 colour = G4Colour( colour.GetRed() 186 colour.GetBlue( 187 188 CexmcSPType primitive( CexmcTarge 189 do 190 { 191 if ( name == "tc" ) 192 { 193 primitive = CexmcTargetCen 194 break; 195 } 196 if ( name == "rl" ) 197 { 198 primitive = CexmcRadialLin 199 break; 200 } 201 if ( name == "ic" ) 202 { 203 primitive = CexmcInnerCrys 204 break; 205 } 206 return; 207 } while ( false ); 208 209 scenePrimitives->SetColour( primit 210 break; 211 } 212 } while ( false ); 213 } 214 215