- Timestamp:
- Apr 6, 2009, 12:21:12 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/utils/include/G4VEmModel.hh
r819 r961 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEmModel.hh,v 1. 48 2007/10/29 08:38:58vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 1-patch-02 $26 // $Id: G4VEmModel.hh,v 1.66 2009/02/19 09:57:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02-ref-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 61 61 // 29-06-06 Add member currentElement and Get/Set methods (V.Ivanchenko) 62 62 // 29-10-07 Added SampleScattering (V.Ivanchenko) 63 // 15-07-08 Reorder class members and improve comments (VI) 64 // 21-07-08 Added vector of G4ElementSelector and methods to use it (VI) 65 // 12-09-08 Added methods GetParticleCharge, GetChargeSquareRatio, 66 // CorrectionsAlongStep, ActivateNuclearStopping (VI) 67 // 16-02-09 Move implementations of virtual methods to source (VI) 63 68 // 64 69 // Class Description: … … 81 86 #include "G4DataVector.hh" 82 87 #include "G4VEmFluctuationModel.hh" 88 #include "G4EmElementSelector.hh" 83 89 #include "Randomize.hh" 90 #include <vector> 84 91 85 92 class G4PhysicsTable; … … 98 105 99 106 //------------------------------------------------------------------------ 100 // Virtual methods to be implemented for theconcrete model101 //------------------------------------------------------------------------ 102 103 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&) = 0;104 107 // Virtual methods to be implemented for any concrete model 108 //------------------------------------------------------------------------ 109 110 virtual void Initialise(const G4ParticleDefinition*, 111 const G4DataVector&) = 0; 105 112 106 113 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, … … 114 121 //------------------------------------------------------------------------ 115 122 116 virtual G4double MinEnergyCut(const G4ParticleDefinition*, 117 const G4MaterialCutsCouple*); 118 119 virtual G4double ComputeDEDX(const G4MaterialCutsCouple*, 120 const G4ParticleDefinition*, 121 G4double kineticEnergy, 122 G4double cutEnergy = DBL_MAX); 123 124 virtual G4double CrossSection(const G4MaterialCutsCouple*, 125 const G4ParticleDefinition*, 126 G4double kineticEnergy, 127 G4double cutEnergy = 0.0, 128 G4double maxEnergy = DBL_MAX); 129 123 // main method to compute dEdx 130 124 virtual G4double ComputeDEDXPerVolume(const G4Material*, 131 125 const G4ParticleDefinition*, … … 133 127 G4double cutEnergy = DBL_MAX); 134 128 135 136 virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, 137 G4double kinEnergy, 138 G4double Z, 139 G4double A = 0., 140 G4double cutEnergy = 0.0, 141 G4double maxEnergy = DBL_MAX); 142 143 virtual G4double ComputeMeanFreePath(const G4ParticleDefinition*, 144 G4double kineticEnergy, 145 const G4Material*, 146 G4double cutEnergy = 0.0, 147 G4double maxEnergy = DBL_MAX); 148 129 // main method to compute cross section per Volume 149 130 virtual G4double CrossSectionPerVolume(const G4Material*, 150 131 const G4ParticleDefinition*, … … 153 134 G4double maxEnergy = DBL_MAX); 154 135 136 // main method to compute cross section depending on atom 137 virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, 138 G4double kinEnergy, 139 G4double Z, 140 G4double A = 0., /* amu */ 141 G4double cutEnergy = 0.0, 142 G4double maxEnergy = DBL_MAX); 143 144 // min cut in kinetic energy allowed by the model 145 virtual G4double MinEnergyCut(const G4ParticleDefinition*, 146 const G4MaterialCutsCouple*); 147 148 // Compute effective ion charge square 149 virtual G4double GetChargeSquareRatio(const G4ParticleDefinition*, 150 const G4Material*, 151 G4double kineticEnergy); 152 153 // Compute ion charge 154 virtual G4double GetParticleCharge(const G4ParticleDefinition*, 155 const G4Material*, 156 G4double kineticEnergy); 157 158 // add correction to energy loss and ompute non-ionizing energy loss 159 virtual void CorrectionsAlongStep(const G4MaterialCutsCouple*, 160 const G4DynamicParticle*, 161 G4double& eloss, 162 G4double& niel, 163 G4double length); 164 165 // sample PIXE deexcitation 166 virtual void SampleDeexcitationAlongStep(const G4Material*, 167 const G4Track&, 168 G4double& eloss); 169 155 170 protected: 156 171 172 // kinematically allowed max kinetic energy of a secondary 157 173 virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 158 174 G4double kineticEnergy); … … 177 193 virtual void DefineForRegion(const G4Region*); 178 194 195 virtual void SetupForMaterial(const G4ParticleDefinition*, 196 const G4Material*, 197 G4double kineticEnergy); 198 179 199 //------------------------------------------------------------------------ 180 200 // Generic methods common to all models 181 201 //------------------------------------------------------------------------ 182 202 183 void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel*); 184 185 G4VEmFluctuationModel* GetModelOfFluctuations(); 186 187 G4double HighEnergyLimit(); 188 189 G4double LowEnergyLimit(); 190 191 void SetHighEnergyLimit(G4double); 192 193 void SetLowEnergyLimit(G4double); 194 195 G4double MaxSecondaryKinEnergy(const G4DynamicParticle* dynParticle); 196 197 const G4Element* SelectRandomAtom(const G4Material*, 198 const G4ParticleDefinition*, 199 G4double kineticEnergy, 200 G4double cutEnergy = 0.0, 201 G4double maxEnergy = DBL_MAX); 202 203 const G4String& GetName() const; 203 // should be called at initialisation to build element selectors 204 void InitialiseElementSelectors(const G4ParticleDefinition*, 205 const G4DataVector&); 206 207 // dEdx per unit length 208 inline G4double ComputeDEDX(const G4MaterialCutsCouple*, 209 const G4ParticleDefinition*, 210 G4double kineticEnergy, 211 G4double cutEnergy = DBL_MAX); 212 213 // cross section per volume 214 inline G4double CrossSection(const G4MaterialCutsCouple*, 215 const G4ParticleDefinition*, 216 G4double kineticEnergy, 217 G4double cutEnergy = 0.0, 218 G4double maxEnergy = DBL_MAX); 219 220 // compute mean free path via cross section per volume 221 inline G4double ComputeMeanFreePath(const G4ParticleDefinition*, 222 G4double kineticEnergy, 223 const G4Material*, 224 G4double cutEnergy = 0.0, 225 G4double maxEnergy = DBL_MAX); 226 227 // generic cross section per element 228 inline G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, 229 const G4Element*, 230 G4double kinEnergy, 231 G4double cutEnergy = 0.0, 232 G4double maxEnergy = DBL_MAX); 233 234 // atom can be selected effitiantly if element selectors are initialised 235 inline const G4Element* SelectRandomAtom(const G4MaterialCutsCouple*, 236 const G4ParticleDefinition*, 237 G4double kineticEnergy, 238 G4double cutEnergy = 0.0, 239 G4double maxEnergy = DBL_MAX); 240 241 // to select atom cross section per volume is recomputed for each element 242 inline const G4Element* SelectRandomAtom(const G4Material*, 243 const G4ParticleDefinition*, 244 G4double kineticEnergy, 245 G4double cutEnergy = 0.0, 246 G4double maxEnergy = DBL_MAX); 247 248 // select isotope in order to have precise mass of the nucleus 249 inline G4int SelectIsotopeNumber(const G4Element*); 250 251 //------------------------------------------------------------------------ 252 // Get/Set methods 253 //------------------------------------------------------------------------ 254 255 inline G4VEmFluctuationModel* GetModelOfFluctuations(); 256 257 inline G4double HighEnergyLimit() const; 258 259 inline G4double LowEnergyLimit() const; 260 261 inline G4double PolarAngleLimit() const; 262 263 inline G4double SecondaryThreshold() const; 264 265 inline G4bool LPMFlag() const; 266 267 inline G4bool DeexcitationFlag() const; 268 269 inline void SetHighEnergyLimit(G4double); 270 271 inline void SetLowEnergyLimit(G4double); 272 273 inline void SetPolarAngleLimit(G4double); 274 275 inline void SetSecondaryThreshold(G4double); 276 277 inline void SetLPMFlag(G4bool val); 278 279 inline void SetDeexcitationFlag(G4bool val); 280 281 inline void ActivateNuclearStopping(G4bool); 282 283 inline G4double MaxSecondaryKinEnergy(const G4DynamicParticle* dynParticle); 284 285 inline const G4String& GetName() const; 286 287 inline void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel*); 288 289 inline void SetCurrentCouple(const G4MaterialCutsCouple*); 204 290 205 291 protected: 206 292 207 const G4Element* GetCurrentElement() const; 208 209 void SetCurrentElement(const G4Element*); 293 inline const G4MaterialCutsCouple* CurrentCouple() const; 294 295 inline void SetCurrentElement(const G4Element*); 296 297 inline const G4Element* GetCurrentElement() const; 210 298 211 299 private: … … 215 303 G4VEmModel(const G4VEmModel&); 216 304 305 // ======== Parameters of the class fixed at construction ========= 306 307 G4VEmFluctuationModel* fluc; 308 const G4String name; 309 310 // ======== Parameters of the class fixed at initialisation ======= 311 217 312 G4double lowLimit; 218 313 G4double highLimit; 219 G4double xsec[40];220 221 G4 VEmFluctuationModel* fluc;222 223 const G4String name;224 const G4Element* currentElement;314 G4double polarAngleLimit; 315 G4double secondaryThreshold; 316 G4bool theLPMflag; 317 318 G4int nSelectors; 319 std::vector<G4EmElementSelector*> elmSelectors; 225 320 226 321 protected: 227 322 228 323 G4VParticleChange* pParticleChange; 324 G4bool nuclearStopping; 325 326 // ======== Cashed values - may be state dependent ================ 327 328 private: 329 330 const G4MaterialCutsCouple* currentCouple; 331 const G4Element* currentElement; 332 333 G4int nsec; 334 G4bool flagDeexcitation; 335 std::vector<G4double> xsec; 336 229 337 }; 230 338 231 339 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 232 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......233 234 inline G4double G4VEmModel::HighEnergyLimit()235 {236 return highLimit;237 }238 239 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......240 241 inline G4double G4VEmModel::LowEnergyLimit()242 {243 return lowLimit;244 }245 246 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......247 248 inline void G4VEmModel::SetHighEnergyLimit(G4double val)249 {250 highLimit = val;251 }252 253 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......254 255 inline void G4VEmModel::SetLowEnergyLimit(G4double val)256 {257 lowLimit = val;258 }259 260 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......261 262 inline void G4VEmModel::SetParticleChange(G4VParticleChange* p,263 G4VEmFluctuationModel* f = 0)264 {265 if(p && pParticleChange != p) pParticleChange = p;266 fluc = f;267 }268 269 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......270 271 272 inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations()273 {274 return fluc;275 }276 277 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......278 279 inline G4double G4VEmModel::MinEnergyCut(const G4ParticleDefinition*,280 const G4MaterialCutsCouple*)281 {282 return 0.0;283 }284 285 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......286 287 inline G4double G4VEmModel::ComputeDEDXPerVolume(288 const G4Material*,289 const G4ParticleDefinition*,290 G4double,291 G4double)292 {293 return 0.0;294 }295 296 340 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 297 341 … … 301 345 G4double cutEnergy) 302 346 { 347 currentCouple = c; 303 348 return ComputeDEDXPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy); 304 349 } … … 312 357 G4double maxEnergy) 313 358 { 314 return 315 CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy); 359 currentCouple = c; 360 return CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy); 361 } 362 363 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 364 365 inline G4double G4VEmModel::ComputeMeanFreePath(const G4ParticleDefinition* p, 366 G4double ekin, 367 const G4Material* material, 368 G4double emin, 369 G4double emax) 370 { 371 G4double mfp = DBL_MAX; 372 G4double cross = CrossSectionPerVolume(material,p,ekin,emin,emax); 373 if (cross > DBL_MIN) mfp = 1./cross; 374 return mfp; 316 375 } 317 376 … … 319 378 320 379 inline G4double G4VEmModel::ComputeCrossSectionPerAtom( 321 const G4ParticleDefinition*, 322 G4double, G4double, G4double, 323 G4double, G4double) 324 { 325 return 0.0; 326 } 327 328 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 329 330 inline const G4Element* G4VEmModel::SelectRandomAtom( 331 const G4Material* material, 332 const G4ParticleDefinition* pd, 333 G4double kinEnergy, 334 G4double tcut, 335 G4double tmax) 380 const G4ParticleDefinition* part, 381 const G4Element* elm, 382 G4double kinEnergy, 383 G4double cutEnergy, 384 G4double maxEnergy) 385 { 386 currentElement = elm; 387 return ComputeCrossSectionPerAtom(part,kinEnergy,elm->GetZ(),elm->GetN(), 388 cutEnergy,maxEnergy); 389 } 390 391 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 392 393 inline 394 const G4Element* G4VEmModel::SelectRandomAtom(const G4MaterialCutsCouple* couple, 395 const G4ParticleDefinition* p, 396 G4double kinEnergy, 397 G4double cutEnergy, 398 G4double maxEnergy) 399 { 400 currentCouple = couple; 401 if(nSelectors > 0) { 402 currentElement = 403 elmSelectors[couple->GetIndex()]->SelectRandomAtom(kinEnergy); 404 } else { 405 currentElement = SelectRandomAtom(couple->GetMaterial(),p,kinEnergy, 406 cutEnergy,maxEnergy); 407 } 408 return currentElement; 409 } 410 411 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 412 413 inline 414 const G4Element* G4VEmModel::SelectRandomAtom(const G4Material* material, 415 const G4ParticleDefinition* pd, 416 G4double kinEnergy, 417 G4double tcut, 418 G4double tmax) 336 419 { 337 420 const G4ElementVector* theElementVector = material->GetElementVector(); 338 G4int n elm = material->GetNumberOfElements();339 currentElement = (*theElementVector)[n elm-1];340 if (n elm > 1) {421 G4int n = material->GetNumberOfElements() - 1; 422 currentElement = (*theElementVector)[n]; 423 if (n > 0) { 341 424 G4double x = G4UniformRand()* 342 CrossSectionPerVolume(material,pd,kinEnergy,tcut,tmax);343 for(G4int i=0; i<n elm; i++) {425 G4VEmModel::CrossSectionPerVolume(material,pd,kinEnergy,tcut,tmax); 426 for(G4int i=0; i<n; i++) { 344 427 if (x <= xsec[i]) { 345 428 currentElement = (*theElementVector)[i]; … … 353 436 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 354 437 438 inline G4int G4VEmModel::SelectIsotopeNumber(const G4Element* elm) 439 { 440 G4int N = G4int(elm->GetN() + 0.5); 441 G4int ni = elm->GetNumberOfIsotopes(); 442 if(ni > 0) { 443 G4int idx = 0; 444 if(ni > 1) { 445 G4double* ab = currentElement->GetRelativeAbundanceVector(); 446 G4double x = G4UniformRand(); 447 for(; idx<ni; idx++) { 448 x -= ab[idx]; 449 if (x <= 0.0) break; 450 } 451 if(idx >= ni) idx = ni - 1; 452 } 453 N = elm->GetIsotope(idx)->GetN(); 454 } 455 return N; 456 } 457 458 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 459 460 inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations() 461 { 462 return fluc; 463 } 464 465 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 466 467 inline G4double G4VEmModel::HighEnergyLimit() const 468 { 469 return highLimit; 470 } 471 472 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 473 474 inline G4double G4VEmModel::LowEnergyLimit() const 475 { 476 return lowLimit; 477 } 478 479 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 480 481 inline G4double G4VEmModel::PolarAngleLimit() const 482 { 483 return polarAngleLimit; 484 } 485 486 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 487 488 inline G4double G4VEmModel::SecondaryThreshold() const 489 { 490 return secondaryThreshold; 491 } 492 493 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 494 495 inline G4bool G4VEmModel::LPMFlag() const 496 { 497 return theLPMflag; 498 } 499 500 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 501 502 inline G4bool G4VEmModel::DeexcitationFlag() const 503 { 504 return flagDeexcitation; 505 } 506 507 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 508 509 inline void G4VEmModel::SetHighEnergyLimit(G4double val) 510 { 511 highLimit = val; 512 } 513 514 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 515 516 inline void G4VEmModel::SetLowEnergyLimit(G4double val) 517 { 518 lowLimit = val; 519 } 520 521 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 522 523 inline void G4VEmModel::SetPolarAngleLimit(G4double val) 524 { 525 polarAngleLimit = val; 526 } 527 528 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 529 530 inline void G4VEmModel::SetSecondaryThreshold(G4double val) 531 { 532 secondaryThreshold = val; 533 } 534 535 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 536 537 inline void G4VEmModel::SetLPMFlag(G4bool val) 538 { 539 theLPMflag = val; 540 } 541 542 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 543 544 inline void G4VEmModel::SetDeexcitationFlag(G4bool val) 545 { 546 flagDeexcitation = val; 547 } 548 549 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 550 551 inline void G4VEmModel::ActivateNuclearStopping(G4bool val) 552 { 553 nuclearStopping = val; 554 } 555 556 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 557 558 inline 559 G4double G4VEmModel::MaxSecondaryKinEnergy(const G4DynamicParticle* dynPart) 560 { 561 return MaxSecondaryEnergy(dynPart->GetDefinition(), 562 dynPart->GetKineticEnergy()); 563 } 564 565 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 566 567 inline const G4String& G4VEmModel::GetName() const 568 { 569 return name; 570 } 571 572 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 573 574 inline void G4VEmModel::SetParticleChange(G4VParticleChange* p, 575 G4VEmFluctuationModel* f = 0) 576 { 577 if(p && pParticleChange != p) pParticleChange = p; 578 fluc = f; 579 } 580 581 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 582 583 inline void G4VEmModel::SetCurrentCouple(const G4MaterialCutsCouple* p) 584 { 585 currentCouple = p; 586 } 587 588 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 589 590 inline const G4MaterialCutsCouple* G4VEmModel::CurrentCouple() const 591 { 592 return currentCouple; 593 } 594 595 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 596 597 inline void G4VEmModel::SetCurrentElement(const G4Element* elm) 598 { 599 currentElement = elm; 600 } 601 602 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 603 355 604 inline const G4Element* G4VEmModel::GetCurrentElement() const 356 605 { … … 360 609 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 361 610 362 inline void G4VEmModel::SetCurrentElement(const G4Element* elm)363 {364 currentElement = elm;365 }366 367 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......368 369 inline G4double G4VEmModel::MaxSecondaryKinEnergy(370 const G4DynamicParticle* dynParticle)371 {372 return MaxSecondaryEnergy(dynParticle->GetDefinition(),373 dynParticle->GetKineticEnergy());374 }375 376 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......377 378 inline G4double G4VEmModel::MaxSecondaryEnergy(const G4ParticleDefinition*,379 G4double kineticEnergy)380 {381 return kineticEnergy;382 }383 384 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......385 386 inline const G4String& G4VEmModel::GetName() const387 {388 return name;389 }390 391 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......392 // Methods for msc simulation393 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......394 395 inline void G4VEmModel::SampleScattering(const G4DynamicParticle*, G4double)396 {}397 398 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......399 400 inline G4double G4VEmModel::ComputeTruePathLengthLimit(401 const G4Track&,402 G4PhysicsTable*,403 G4double)404 {405 return DBL_MAX;406 }407 408 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......409 410 inline G4double G4VEmModel::ComputeGeomPathLength(G4double truePathLength)411 {412 return truePathLength;413 }414 415 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......416 417 inline G4double G4VEmModel::ComputeTrueStepLength(G4double geomPathLength)418 {419 return geomPathLength;420 }421 422 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......423 424 inline void G4VEmModel::DefineForRegion(const G4Region*)425 {}426 427 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......428 429 611 #endif 430 612
Note: See TracChangeset
for help on using the changeset viewer.