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 /// \file SAXSDetectorConstructionMessenger.cc 27 /// \brief Implementation of the SAXSDetectorC 28 // 29 //....oooOO0OOooo........oooOO0OOooo........oo 30 31 #include "SAXSDetectorConstructionMessenger.hh 32 33 #include "SAXSDetectorConstruction.hh" 34 35 #include "G4RunManager.hh" 36 #include "G4UIcmdWith3VectorAndUnit.hh" 37 #include "G4UIcmdWithABool.hh" 38 #include "G4UIcmdWithADouble.hh" 39 #include "G4UIcmdWithADoubleAndUnit.hh" 40 #include "G4UIcmdWithAString.hh" 41 #include "G4UIcmdWithAnInteger.hh" 42 #include "G4UIdirectory.hh" 43 #include "G4ios.hh" 44 45 //....oooOO0OOooo........oooOO0OOooo........oo 46 47 SAXSDetectorConstructionMessenger::SAXSDetecto 48 SAXSDetectorConstruction* detconstr) 49 : G4UImessenger(), fDetector(detconstr) 50 { 51 fCmdDir = new G4UIdirectory("/det/"); 52 fCmdDir->SetGuidance("Detector Control"); 53 54 fSetCustomMatFFfilename = new G4UIcmdWithASt 55 fSetCustomMatFFfilename->SetGuidance("Set Cu 56 fSetCustomMatFFfilename->SetParameterName("m 57 fSetCustomMatFFfilename->AvailableForStates( 58 59 fSetCustomMatDensityCmd = new G4UIcmdWithADo 60 fSetCustomMatDensityCmd->SetGuidance("Set de 61 fSetCustomMatDensityCmd->SetParameterName("c 62 fSetCustomMatDensityCmd->SetRange("cmden>0." 63 fSetCustomMatDensityCmd->AvailableForStates( 64 65 fSetCustomMatHmassfractCmd = new G4UIcmdWith 66 fSetCustomMatHmassfractCmd->SetGuidance("Set 67 fSetCustomMatHmassfractCmd->SetParameterName 68 fSetCustomMatHmassfractCmd->SetRange("cmHmf> 69 fSetCustomMatHmassfractCmd->AvailableForStat 70 71 fSetCustomMatCmassfractCmd = new G4UIcmdWith 72 fSetCustomMatCmassfractCmd->SetGuidance("Set 73 fSetCustomMatCmassfractCmd->SetParameterName 74 fSetCustomMatCmassfractCmd->SetRange("cmCmf> 75 fSetCustomMatCmassfractCmd->AvailableForStat 76 77 fSetCustomMatNmassfractCmd = new G4UIcmdWith 78 fSetCustomMatNmassfractCmd->SetGuidance("Set 79 fSetCustomMatNmassfractCmd->SetParameterName 80 fSetCustomMatNmassfractCmd->SetRange("cmNmf> 81 fSetCustomMatNmassfractCmd->AvailableForStat 82 83 fSetCustomMatOmassfractCmd = new G4UIcmdWith 84 fSetCustomMatOmassfractCmd->SetGuidance("Set 85 fSetCustomMatOmassfractCmd->SetParameterName 86 fSetCustomMatOmassfractCmd->SetRange("cmOmf> 87 fSetCustomMatOmassfractCmd->AvailableForStat 88 89 fSetCustomMatNamassfractCmd = new G4UIcmdWit 90 fSetCustomMatNamassfractCmd->SetGuidance("Se 91 fSetCustomMatNamassfractCmd->SetParameterNam 92 fSetCustomMatNamassfractCmd->SetRange("cmNam 93 fSetCustomMatNamassfractCmd->AvailableForSta 94 95 fSetCustomMatPmassfractCmd = new G4UIcmdWith 96 fSetCustomMatPmassfractCmd->SetGuidance("Set 97 fSetCustomMatPmassfractCmd->SetParameterName 98 fSetCustomMatPmassfractCmd->SetRange("cmPmf> 99 fSetCustomMatPmassfractCmd->AvailableForStat 100 101 fSetCustomMatSmassfractCmd = new G4UIcmdWith 102 fSetCustomMatSmassfractCmd->SetGuidance("Set 103 fSetCustomMatSmassfractCmd->SetParameterName 104 fSetCustomMatSmassfractCmd->SetRange("cmSmf> 105 fSetCustomMatSmassfractCmd->AvailableForStat 106 107 fSetCustomMatClmassfractCmd = new G4UIcmdWit 108 fSetCustomMatClmassfractCmd->SetGuidance("Se 109 fSetCustomMatClmassfractCmd->SetParameterNam 110 fSetCustomMatClmassfractCmd->SetRange("cmClm 111 fSetCustomMatClmassfractCmd->AvailableForSta 112 113 fSetCustomMatKmassfractCmd = new G4UIcmdWith 114 fSetCustomMatKmassfractCmd->SetGuidance("Set 115 fSetCustomMatKmassfractCmd->SetParameterName 116 fSetCustomMatKmassfractCmd->SetRange("cmKmf> 117 fSetCustomMatKmassfractCmd->AvailableForStat 118 119 fSetCustomMatCamassfractCmd = new G4UIcmdWit 120 fSetCustomMatCamassfractCmd->SetGuidance("Se 121 fSetCustomMatCamassfractCmd->SetParameterNam 122 fSetCustomMatCamassfractCmd->SetRange("cmCam 123 fSetCustomMatCamassfractCmd->AvailableForSta 124 125 fPhantomMaterialCmd = new G4UIcmdWithAnInteg 126 fPhantomMaterialCmd->SetGuidance("Set Phanto 127 fPhantomMaterialCmd->SetParameterName("Phant 128 fPhantomMaterialCmd->SetRange("PhantomMat>=1 129 fPhantomMaterialCmd->AvailableForStates(G4St 130 131 fPhantomDiameterCmd = new G4UIcmdWithADouble 132 fPhantomDiameterCmd->SetGuidance("Set Phanto 133 fPhantomDiameterCmd->SetParameterName("Phant 134 fPhantomDiameterCmd->SetUnitCategory("Length 135 fPhantomDiameterCmd->SetRange("PhantomDiamet 136 fPhantomDiameterCmd->AvailableForStates(G4St 137 138 fPhantomHeightCmd = new G4UIcmdWithADoubleAn 139 fPhantomHeightCmd->SetGuidance("Set Phantom 140 fPhantomHeightCmd->SetParameterName("Phantom 141 fPhantomHeightCmd->SetUnitCategory("Length") 142 fPhantomHeightCmd->SetRange("PhantomHeight>0 143 fPhantomHeightCmd->AvailableForStates(G4Stat 144 145 fPhantomZCmd = new G4UIcmdWithADoubleAndUnit 146 fPhantomZCmd->SetGuidance("Set Phantom Z"); 147 fPhantomZCmd->SetParameterName("PhantomZ", f 148 fPhantomZCmd->SetUnitCategory("Length"); 149 fPhantomZCmd->SetRange("PhantomZ>=0."); 150 fPhantomZCmd->AvailableForStates(G4State_Pre 151 152 fSetComp0Cmd = new G4UIcmdWithADouble("/det/ 153 fSetComp0Cmd->SetGuidance("Set Comp0 for med 154 fSetComp0Cmd->SetParameterName("c0", false); 155 fSetComp0Cmd->SetRange("c0>=0."); 156 fSetComp0Cmd->AvailableForStates(G4State_Pre 157 158 fSetComp1Cmd = new G4UIcmdWithADouble("/det/ 159 fSetComp1Cmd->SetGuidance("Set Comp1 for med 160 fSetComp1Cmd->SetParameterName("c1", false); 161 fSetComp1Cmd->SetRange("c1>=0."); 162 fSetComp1Cmd->AvailableForStates(G4State_Pre 163 164 fSetComp2Cmd = new G4UIcmdWithADouble("/det/ 165 fSetComp2Cmd->SetGuidance("Set Comp2 for med 166 fSetComp2Cmd->SetParameterName("c2", false); 167 fSetComp2Cmd->SetRange("c2>=0."); 168 fSetComp2Cmd->AvailableForStates(G4State_Pre 169 170 fSetComp3Cmd = new G4UIcmdWithADouble("/det/ 171 fSetComp3Cmd->SetGuidance("Set Comp3 for med 172 fSetComp3Cmd->SetParameterName("c3", false); 173 fSetComp3Cmd->SetRange("c3>=0."); 174 fSetComp3Cmd->AvailableForStates(G4State_Pre 175 176 fThetaSetupCmd = new G4UIcmdWithADouble("/de 177 fThetaSetupCmd->SetGuidance("Set theta setup 178 fThetaSetupCmd->SetParameterName("theta", fa 179 fThetaSetupCmd->SetRange("theta>=0."); 180 fThetaSetupCmd->AvailableForStates(G4State_P 181 182 fSetSlitsCmd = new G4UIcmdWithABool("/det/se 183 fSetSlitsCmd->SetGuidance("set Slits"); 184 fSetSlitsCmd->SetParameterName("fIWantSlits" 185 fSetSlitsCmd->SetDefaultValue(false); 186 187 fSlit1ThicknessCmd = new G4UIcmdWithADoubleA 188 fSlit1ThicknessCmd->SetGuidance("Set Slit1 T 189 fSlit1ThicknessCmd->SetParameterName("Slit1T 190 fSlit1ThicknessCmd->SetUnitCategory("Length" 191 fSlit1ThicknessCmd->SetRange("Slit1Thickness 192 fSlit1ThicknessCmd->AvailableForStates(G4Sta 193 194 fSlit2ThicknessCmd = new G4UIcmdWithADoubleA 195 fSlit2ThicknessCmd->SetGuidance("Set Slit2 T 196 fSlit2ThicknessCmd->SetParameterName("Slit2T 197 fSlit2ThicknessCmd->SetUnitCategory("Length" 198 fSlit2ThicknessCmd->SetRange("Slit2Thickness 199 fSlit2ThicknessCmd->AvailableForStates(G4Sta 200 201 fSlit3ThicknessCmd = new G4UIcmdWithADoubleA 202 fSlit3ThicknessCmd->SetGuidance("Set Slit3 T 203 fSlit3ThicknessCmd->SetParameterName("Slit3T 204 fSlit3ThicknessCmd->SetUnitCategory("Length" 205 fSlit3ThicknessCmd->SetRange("Slit3Thickness 206 fSlit3ThicknessCmd->AvailableForStates(G4Sta 207 208 fSlit4ThicknessCmd = new G4UIcmdWithADoubleA 209 fSlit4ThicknessCmd->SetGuidance("Set Slit4 T 210 fSlit4ThicknessCmd->SetParameterName("Slit4T 211 fSlit4ThicknessCmd->SetUnitCategory("Length" 212 fSlit4ThicknessCmd->SetRange("Slit4Thickness 213 fSlit4ThicknessCmd->AvailableForStates(G4Sta 214 215 fSlit1DistanceCmd = new G4UIcmdWithADoubleAn 216 fSlit1DistanceCmd->SetGuidance("Set Slit1-to 217 fSlit1DistanceCmd->SetParameterName("Slit1di 218 fSlit1DistanceCmd->SetUnitCategory("Length") 219 fSlit1DistanceCmd->SetRange("Slit1dist>0."); 220 fSlit1DistanceCmd->AvailableForStates(G4Stat 221 222 fSlit2DistanceCmd = new G4UIcmdWithADoubleAn 223 fSlit2DistanceCmd->SetGuidance("Set Slit2-to 224 fSlit2DistanceCmd->SetParameterName("Slit2di 225 fSlit2DistanceCmd->SetUnitCategory("Length") 226 fSlit2DistanceCmd->SetRange("Slit2dist>0."); 227 fSlit2DistanceCmd->AvailableForStates(G4Stat 228 229 fSlit3DistanceCmd = new G4UIcmdWithADoubleAn 230 fSlit3DistanceCmd->SetGuidance("Set Slit3-to 231 fSlit3DistanceCmd->SetParameterName("Slit3di 232 fSlit3DistanceCmd->SetUnitCategory("Length") 233 fSlit3DistanceCmd->SetRange("Slit3dist>0."); 234 fSlit3DistanceCmd->AvailableForStates(G4Stat 235 236 fSlit4DistanceCmd = new G4UIcmdWithADoubleAn 237 fSlit4DistanceCmd->SetGuidance("Set Slit4-to 238 fSlit4DistanceCmd->SetParameterName("Slit4di 239 fSlit4DistanceCmd->SetUnitCategory("Length") 240 fSlit4DistanceCmd->SetRange("Slit4dist>0."); 241 fSlit4DistanceCmd->AvailableForStates(G4Stat 242 243 fSlit1xApertureCmd = new G4UIcmdWithADoubleA 244 fSlit1xApertureCmd->SetGuidance("Set Slit1 x 245 fSlit1xApertureCmd->SetParameterName("Slit1x 246 fSlit1xApertureCmd->SetUnitCategory("Length" 247 fSlit1xApertureCmd->SetRange("Slit1xAp>0."); 248 fSlit1xApertureCmd->AvailableForStates(G4Sta 249 250 fSlit2xApertureCmd = new G4UIcmdWithADoubleA 251 fSlit2xApertureCmd->SetGuidance("Set Slit2 x 252 fSlit2xApertureCmd->SetParameterName("Slit2x 253 fSlit2xApertureCmd->SetUnitCategory("Length" 254 fSlit2xApertureCmd->SetRange("Slit2xAp>0."); 255 fSlit2xApertureCmd->AvailableForStates(G4Sta 256 257 fSlit3xApertureCmd = new G4UIcmdWithADoubleA 258 fSlit3xApertureCmd->SetGuidance("Set Slit3 x 259 fSlit3xApertureCmd->SetParameterName("Slit3x 260 fSlit3xApertureCmd->SetUnitCategory("Length" 261 fSlit3xApertureCmd->SetRange("Slit3xAp>0."); 262 fSlit3xApertureCmd->AvailableForStates(G4Sta 263 264 fSlit4xApertureCmd = new G4UIcmdWithADoubleA 265 fSlit4xApertureCmd->SetGuidance("Set Slit4 x 266 fSlit4xApertureCmd->SetParameterName("Slit4x 267 fSlit4xApertureCmd->SetUnitCategory("Length" 268 fSlit4xApertureCmd->SetRange("Slit4xAp>0."); 269 fSlit4xApertureCmd->AvailableForStates(G4Sta 270 271 fSlit1yApertureCmd = new G4UIcmdWithADoubleA 272 fSlit1yApertureCmd->SetGuidance("Set Slit1 y 273 fSlit1yApertureCmd->SetParameterName("Slit1y 274 fSlit1yApertureCmd->SetUnitCategory("Length" 275 fSlit1yApertureCmd->SetRange("Slit1yAp>0."); 276 fSlit1yApertureCmd->AvailableForStates(G4Sta 277 278 fSlit2yApertureCmd = new G4UIcmdWithADoubleA 279 fSlit2yApertureCmd->SetGuidance("Set Slit2 y 280 fSlit2yApertureCmd->SetParameterName("Slit2y 281 fSlit2yApertureCmd->SetUnitCategory("Length" 282 fSlit2yApertureCmd->SetRange("Slit2yAp>0."); 283 fSlit2yApertureCmd->AvailableForStates(G4Sta 284 285 fSlit3yApertureCmd = new G4UIcmdWithADoubleA 286 fSlit3yApertureCmd->SetGuidance("Set Slit3 y 287 fSlit3yApertureCmd->SetParameterName("Slit3y 288 fSlit3yApertureCmd->SetUnitCategory("Length" 289 fSlit3yApertureCmd->SetRange("Slit3yAp>0."); 290 fSlit3yApertureCmd->AvailableForStates(G4Sta 291 292 fSlit4yApertureCmd = new G4UIcmdWithADoubleA 293 fSlit4yApertureCmd->SetGuidance("Set Slit4 y 294 fSlit4yApertureCmd->SetParameterName("Slit4y 295 fSlit4yApertureCmd->SetUnitCategory("Length" 296 fSlit4yApertureCmd->SetRange("Slit4yAp>0."); 297 fSlit4yApertureCmd->AvailableForStates(G4Sta 298 299 fDetectorThicknessCmd = new G4UIcmdWithADoub 300 fDetectorThicknessCmd->SetGuidance("Set Dete 301 fDetectorThicknessCmd->SetParameterName("Det 302 fDetectorThicknessCmd->SetUnitCategory("Leng 303 fDetectorThicknessCmd->SetRange("DetectorThi 304 fDetectorThicknessCmd->AvailableForStates(G4 305 306 fDetectorSizeCmd = new G4UIcmdWithADoubleAnd 307 fDetectorSizeCmd->SetGuidance("Set DetectorS 308 fDetectorSizeCmd->SetParameterName("scrnsize 309 fDetectorSizeCmd->SetUnitCategory("Length"); 310 fDetectorSizeCmd->SetRange("scrnsize>0."); 311 fDetectorSizeCmd->AvailableForStates(G4State 312 313 fDetectorDistanceCmd = new G4UIcmdWithADoubl 314 fDetectorDistanceCmd->SetGuidance("Set Detec 315 fDetectorDistanceCmd->SetParameterName("detD 316 fDetectorDistanceCmd->SetUnitCategory("Lengt 317 fDetectorDistanceCmd->SetRange("detDist>0.") 318 fDetectorDistanceCmd->AvailableForStates(G4S 319 } 320 321 //....oooOO0OOooo........oooOO0OOooo........oo 322 323 SAXSDetectorConstructionMessenger::~SAXSDetect 324 { 325 delete fCmdDir; 326 327 delete fSetCustomMatFFfilename; 328 delete fSetCustomMatDensityCmd; 329 delete fSetCustomMatHmassfractCmd; 330 delete fSetCustomMatCmassfractCmd; 331 delete fSetCustomMatNmassfractCmd; 332 delete fSetCustomMatOmassfractCmd; 333 delete fSetCustomMatNamassfractCmd; 334 delete fSetCustomMatPmassfractCmd; 335 delete fSetCustomMatSmassfractCmd; 336 delete fSetCustomMatClmassfractCmd; 337 delete fSetCustomMatKmassfractCmd; 338 delete fSetCustomMatCamassfractCmd; 339 340 delete fPhantomMaterialCmd; 341 delete fPhantomDiameterCmd; 342 delete fPhantomHeightCmd; 343 delete fPhantomZCmd; 344 345 delete fSetComp0Cmd; 346 delete fSetComp1Cmd; 347 delete fSetComp2Cmd; 348 delete fSetComp3Cmd; 349 350 delete fThetaSetupCmd; 351 352 delete fSetSlitsCmd; 353 delete fSlit1ThicknessCmd; 354 delete fSlit2ThicknessCmd; 355 delete fSlit3ThicknessCmd; 356 delete fSlit4ThicknessCmd; 357 delete fSlit1DistanceCmd; 358 delete fSlit2DistanceCmd; 359 delete fSlit3DistanceCmd; 360 delete fSlit4DistanceCmd; 361 delete fSlit1xApertureCmd; 362 delete fSlit2xApertureCmd; 363 delete fSlit3xApertureCmd; 364 delete fSlit4xApertureCmd; 365 delete fSlit1yApertureCmd; 366 delete fSlit2yApertureCmd; 367 delete fSlit3yApertureCmd; 368 delete fSlit4yApertureCmd; 369 370 delete fDetectorThicknessCmd; 371 delete fDetectorSizeCmd; 372 delete fDetectorDistanceCmd; 373 } 374 375 //....oooOO0OOooo........oooOO0OOooo........oo 376 377 void SAXSDetectorConstructionMessenger::SetNew 378 { 379 if (command == fSetCustomMatFFfilename) fDet 380 381 if (command == fSetCustomMatDensityCmd) 382 fDetector->SetCustomMatDensity(fSetCustomM 383 384 if (command == fSetCustomMatHmassfractCmd) 385 fDetector->SetCustomMatHmassfract(fSetCust 386 387 if (command == fSetCustomMatCmassfractCmd) 388 fDetector->SetCustomMatCmassfract(fSetCust 389 if (command == fSetCustomMatNmassfractCmd) 390 fDetector->SetCustomMatNmassfract(fSetCust 391 if (command == fSetCustomMatOmassfractCmd) 392 fDetector->SetCustomMatOmassfract(fSetCust 393 if (command == fSetCustomMatNamassfractCmd) 394 fDetector->SetCustomMatNamassfract(fSetCus 395 if (command == fSetCustomMatPmassfractCmd) 396 fDetector->SetCustomMatPmassfract(fSetCust 397 if (command == fSetCustomMatSmassfractCmd) 398 fDetector->SetCustomMatSmassfract(fSetCust 399 if (command == fSetCustomMatClmassfractCmd) 400 fDetector->SetCustomMatClmassfract(fSetCus 401 if (command == fSetCustomMatKmassfractCmd) 402 fDetector->SetCustomMatKmassfract(fSetCust 403 if (command == fSetCustomMatCamassfractCmd) 404 fDetector->SetCustomMatCamassfract(fSetCus 405 406 if (command == fPhantomMaterialCmd) { 407 fDetector->SetPhantomMaterial(fPhantomMate 408 } 409 if (command == fPhantomDiameterCmd) { 410 fDetector->SetPhantomDiameter(fPhantomDiam 411 } 412 if (command == fPhantomHeightCmd) { 413 fDetector->SetPhantomHeight(fPhantomHeight 414 } 415 if (command == fPhantomZCmd) { 416 fDetector->SetPhantomZ(fPhantomZCmd->GetNe 417 } 418 419 if (command == fSetComp0Cmd) fDetector->SetC 420 if (command == fSetComp1Cmd) fDetector->SetC 421 if (command == fSetComp2Cmd) fDetector->SetC 422 if (command == fSetComp3Cmd) fDetector->SetC 423 424 if (command == fThetaSetupCmd) 425 fDetector->SetThetaSetup(fThetaSetupCmd->G 426 if (command == fSetSlitsCmd) fDetector->SetS 427 if (command == fSlit1ThicknessCmd) 428 fDetector->SetSlit1Thickness(fSlit1Thickne 429 if (command == fSlit2ThicknessCmd) 430 fDetector->SetSlit2Thickness(fSlit2Thickne 431 if (command == fSlit3ThicknessCmd) 432 fDetector->SetSlit3Thickness(fSlit3Thickne 433 if (command == fSlit4ThicknessCmd) 434 fDetector->SetSlit4Thickness(fSlit4Thickne 435 if (command == fSlit1DistanceCmd) 436 fDetector->SetSlit1SampleDistance(fSlit1Di 437 if (command == fSlit2DistanceCmd) 438 fDetector->SetSlit2SampleDistance(fSlit2Di 439 if (command == fSlit3DistanceCmd) 440 fDetector->SetSlit3SampleDistance(fSlit3Di 441 if (command == fSlit4DistanceCmd) 442 fDetector->SetSlit4SampleDistance(fSlit4Di 443 if (command == fSlit1xApertureCmd) 444 fDetector->SetSlit1xAperture(fSlit1xApertu 445 if (command == fSlit2xApertureCmd) 446 fDetector->SetSlit2xAperture(fSlit2xApertu 447 if (command == fSlit3xApertureCmd) 448 fDetector->SetSlit3xAperture(fSlit3xApertu 449 if (command == fSlit4xApertureCmd) 450 fDetector->SetSlit4xAperture(fSlit4xApertu 451 if (command == fSlit1yApertureCmd) 452 fDetector->SetSlit1yAperture(fSlit1yApertu 453 if (command == fSlit2yApertureCmd) 454 fDetector->SetSlit2yAperture(fSlit2yApertu 455 if (command == fSlit3yApertureCmd) 456 fDetector->SetSlit3yAperture(fSlit3yApertu 457 if (command == fSlit4yApertureCmd) 458 fDetector->SetSlit4yAperture(fSlit4yApertu 459 if (command == fDetectorThicknessCmd) 460 fDetector->SetDetectorThickness(fDetectorT 461 if (command == fDetectorSizeCmd) 462 fDetector->SetDetectorSize(fDetectorSizeCm 463 if (command == fDetectorDistanceCmd) 464 fDetector->SetDetectorSampleDistance(fDete 465 } 466 467 //....oooOO0OOooo........oooOO0OOooo........oo 468