- Timestamp:
- Apr 6, 2009, 12:21:12 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/utils/include/G4VMultipleScattering.hh
r819 r961 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VMultipleScattering.hh,v 1. 48 2007/10/29 08:38:58vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 1-patch-02 $26 // $Id: G4VMultipleScattering.hh,v 1.55 2009/02/18 12:19:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02-ref-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 63 63 // 12-02-07 Add get/set skin (V.Ivanchenko) 64 64 // 27-10-07 Virtual functions moved to source (V.Ivanchenko) 65 // 15-07-08 Reorder class members for further multi-thread development (VI) 65 66 // 66 67 … … 72 73 73 74 #include "G4VContinuousDiscreteProcess.hh" 74 #include "G4LossTableManager.hh"75 75 #include "globals.hh" 76 76 #include "G4Material.hh" … … 95 95 96 96 G4VMultipleScattering(const G4String& name = "msc", 97 97 G4ProcessType type = fElectromagnetic); 98 98 99 99 virtual ~G4VMultipleScattering(); … … 104 104 105 105 virtual G4bool IsApplicable(const G4ParticleDefinition& p) = 0; 106 // True for all charged particles107 106 108 107 virtual void PrintInfo() = 0; … … 112 111 virtual void InitialiseProcess(const G4ParticleDefinition*) = 0; 113 112 114 //------------------------------------------------------------------------115 // Methods with standard implementation; may be overwritten if needed116 //------------------------------------------------------------------------117 113 public: 118 114 … … 138 134 G4bool StorePhysicsTable(const G4ParticleDefinition*, 139 135 const G4String& directory, 140 136 G4bool ascii = false); 141 137 142 138 // Retrieve Physics from a file. … … 147 143 G4bool RetrievePhysicsTable(const G4ParticleDefinition*, 148 144 const G4String& directory, 149 G4bool ascii); 150 151 //------------------------------------------------------------------------ 152 // Specific methods for msc processes 153 //------------------------------------------------------------------------ 145 G4bool ascii); 154 146 155 147 // The function overloads the corresponding function of the base … … 158 150 G4double AlongStepGetPhysicalInteractionLength( 159 151 const G4Track&, 160 161 162 163 152 G4double previousStepSize, 153 G4double currentMinimalStep, 154 G4double& currentSafety, 155 G4GPILSelection* selection); 164 156 165 157 // The function overloads the corresponding function of the base … … 188 180 inline void SetMinKinEnergy(G4double e); 189 181 inline G4double MinKinEnergy() const; 190 // Print out of the class parameters191 182 192 183 inline void SetMaxKinEnergy(G4double e); … … 197 188 inline G4PhysicsTable* LambdaTable() const; 198 189 199 //------------------------------------------------------------------------ 200 // Define and access particle type 201 //------------------------------------------------------------------------ 202 190 // access particle type 203 191 inline const G4ParticleDefinition* Particle() const; 204 inline void SetParticle(const G4ParticleDefinition*);205 192 206 193 //------------------------------------------------------------------------ … … 208 195 //------------------------------------------------------------------------ 209 196 210 inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0); 211 197 protected: 198 // Select model in run time 199 inline G4VEmModel* SelectModel(G4double kinEnergy); 200 201 public: 202 // Select model in run time 212 203 inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy, 213 204 size_t& idxRegion) const; 214 205 215 // Access to models 216 inline G4VEmModel* GetModelByIndex(G4int idx = 0); 217 218 //------------------------------------------------------------------------ 219 // Parameters for simulation of multiple scattering 220 //------------------------------------------------------------------------ 221 206 // Add model for region, smaller value of order defines which 207 // model will be selected for a given energy interval 208 inline void AddEmModel(G4int order, G4VEmModel*, const G4Region* region = 0); 209 210 // Access to models by index 211 inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false); 212 213 //------------------------------------------------------------------------ 214 // Get/Set parameters for simulation of multiple scattering 215 //------------------------------------------------------------------------ 216 217 inline G4bool LateralDisplasmentFlag() const; 222 218 inline void SetLateralDisplasmentFlag(G4bool val); 223 // lateral displacement to be/not to be computed 224 219 220 inline G4double Skin() const; 225 221 inline void SetSkin(G4double val); 226 // skin parameter 227 222 223 inline G4double RangeFactor() const; 228 224 inline void SetRangeFactor(G4double val); 229 // FactorRange parameter 230 225 226 inline G4double GeomFactor() const; 231 227 inline void SetGeomFactor(G4double val); 232 // FactorRange parameter 233 228 229 inline G4double PolarAngleLimit() const; 230 inline void SetPolarAngleLimit(G4double val); 231 232 inline G4MscStepLimitType StepLimitType() const; 234 233 inline void SetStepLimitType(G4MscStepLimitType val); 235 // FactorRange parameter 234 235 //------------------------------------------------------------------------ 236 // Run time methods 237 //------------------------------------------------------------------------ 236 238 237 239 protected: … … 241 243 G4double, 242 244 G4ForceCondition* condition); 243 244 //------------------------------------------------------------------------245 // Run time methods246 //------------------------------------------------------------------------247 245 248 246 // This method is not used for tracking, it returns step limit … … 252 250 G4double& currentSafety); 253 251 254 inline G4double GetLambda(const G4ParticleDefinition* p, G4double& kineticEnergy); 252 inline G4double GetLambda(const G4ParticleDefinition* p, 253 G4double& kineticEnergy); 255 254 256 255 // This method is used for tracking, it returns step limit 257 256 inline G4double GetMscContinuousStepLimit(const G4Track& track, 258 G4double previousStepSize,257 G4double scaledKinEnergy, 259 258 G4double currentMinimalStep, 260 259 G4double& currentSafety); 261 260 262 inline G4VEmModel* SelectModel(G4double kinEnergy);263 // Select concrete model261 // define current material 262 inline void DefineMaterial(const G4MaterialCutsCouple* couple); 264 263 265 264 inline const G4MaterialCutsCouple* CurrentMaterialCutsCouple() const; 266 // Return current G4MaterialCutsCouple 267 268 inline void DefineMaterial(const G4MaterialCutsCouple* couple); 269 // define current material 270 271 //------------------------------------------------------------------------ 272 // Parameters for simulation of multiple scattering 273 //------------------------------------------------------------------------ 274 275 inline G4double Skin() const; 276 277 inline G4double RangeFactor() const; 278 279 inline G4double GeomFactor() const; 280 281 inline G4MscStepLimitType StepLimitType() const; 282 283 inline G4bool LateralDisplasmentFlag() const; 265 266 inline G4ParticleChangeForMSC* GetParticleChange(); 267 284 268 285 269 private: 286 270 287 271 // hide assignment operator 288 289 272 G4VMultipleScattering(G4VMultipleScattering &); 290 273 G4VMultipleScattering & operator=(const G4VMultipleScattering &right); 291 274 292 // ===================================================================== 293 294 protected: 295 296 G4GPILSelection valueGPILSelectionMSC; 297 G4ParticleChangeForMSC fParticleChange; 298 299 private: 275 // ======== Parameters of the class fixed at construction ========= 300 276 301 277 G4EmModelManager* modelManager; 302 G4VEmModel* currentModel; 278 G4bool buildLambdaTable; 279 280 // ======== Parameters of the class fixed at initialisation ======= 281 303 282 G4PhysicsTable* theLambdaTable; 304 305 // cache306 283 const G4ParticleDefinition* firstParticle; 307 const G4ParticleDefinition* currentParticle;308 const G4MaterialCutsCouple* currentCouple;309 size_t currentMaterialIndex;310 311 G4int nBins;312 284 313 285 G4MscStepLimitType stepLimit; … … 318 290 G4double facrange; 319 291 G4double facgeom; 292 G4double polarAngleLimit; 293 294 G4int nBins; 320 295 321 296 G4bool latDisplasment; 322 G4bool buildLambdaTable; 297 298 // ======== Cashed values - may be state dependent ================ 299 300 protected: 301 302 G4GPILSelection valueGPILSelectionMSC; 303 G4ParticleChangeForMSC fParticleChange; 304 305 private: 306 307 G4VEmModel* currentModel; 308 309 // cache 310 const G4ParticleDefinition* currentParticle; 311 const G4MaterialCutsCouple* currentCouple; 312 size_t currentMaterialIndex; 313 323 314 }; 324 315 325 316 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 326 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....327 328 inline void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple)329 {330 if(couple != currentCouple) {331 currentCouple = couple;332 currentMaterialIndex = couple->GetIndex();333 }334 }335 336 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....337 338 inline G4double G4VMultipleScattering::GetMscContinuousStepLimit(339 const G4Track& track,340 G4double,341 G4double currentMinimalStep,342 G4double&)343 {344 G4double x = currentMinimalStep;345 G4double e = track.GetKineticEnergy();346 DefineMaterial(track.GetMaterialCutsCouple());347 currentModel = SelectModel(e);348 if(x > 0.0 && e > 0.0) {349 G4double tPathLength =350 currentModel->ComputeTruePathLengthLimit(track, theLambdaTable, x);351 if (tPathLength < x) valueGPILSelectionMSC = CandidateForSelection;352 x = currentModel->ComputeGeomPathLength(tPathLength);353 // G4cout << "tPathLength= " << tPathLength354 // << " stepLimit= " << x355 // << " currentMinimalStep= " << currentMinimalStep<< G4endl;356 }357 return x;358 }359 360 317 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 361 318 … … 367 324 { 368 325 return GetMscContinuousStepLimit(track,previousStepSize,currentMinimalStep, 369 currentSafety); 370 } 371 372 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 373 374 inline G4double G4VMultipleScattering::GetLambda(const G4ParticleDefinition* p, G4double& e) 326 currentSafety); 327 } 328 329 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 330 331 inline void G4VMultipleScattering::SetBinning(G4int nbins) 332 { 333 nBins = nbins; 334 } 335 336 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 337 338 inline G4int G4VMultipleScattering::Binning() const 339 { 340 return nBins; 341 } 342 343 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 344 345 inline void G4VMultipleScattering::SetMinKinEnergy(G4double e) 346 { 347 minKinEnergy = e; 348 } 349 350 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 351 352 inline G4double G4VMultipleScattering::MinKinEnergy() const 353 { 354 return minKinEnergy; 355 } 356 357 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 358 359 inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e) 360 { 361 maxKinEnergy = e; 362 } 363 364 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 365 366 inline G4double G4VMultipleScattering::MaxKinEnergy() const 367 { 368 return maxKinEnergy; 369 } 370 371 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 372 373 inline void G4VMultipleScattering::SetBuildLambdaTable(G4bool val) 374 { 375 buildLambdaTable = val; 376 } 377 378 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 379 380 inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const 381 { 382 return theLambdaTable; 383 } 384 385 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 386 387 inline const G4ParticleDefinition* G4VMultipleScattering::Particle() const 388 { 389 return currentParticle; 390 } 391 392 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 393 394 inline void G4VMultipleScattering::AddEmModel(G4int order, G4VEmModel* p, 395 const G4Region* region) 396 { 397 G4VEmFluctuationModel* fm = 0; 398 modelManager->AddEmModel(order, p, fm, region); 399 if(p) p->SetParticleChange(pParticleChange); 400 } 401 402 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 403 404 inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy) 405 { 406 return modelManager->SelectModel(kinEnergy, currentMaterialIndex); 407 } 408 409 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 410 411 inline G4VEmModel* G4VMultipleScattering::SelectModelForMaterial( 412 G4double kinEnergy, size_t& idxRegion) const 413 { 414 return modelManager->SelectModel(kinEnergy, idxRegion); 415 } 416 417 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 418 419 inline 420 G4VEmModel* G4VMultipleScattering::GetModelByIndex(G4int idx, G4bool ver) 421 { 422 return modelManager->GetModel(idx, ver); 423 } 424 425 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 426 427 inline G4bool G4VMultipleScattering::LateralDisplasmentFlag() const 428 { 429 return latDisplasment; 430 } 431 432 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 433 434 inline void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val) 435 { 436 latDisplasment = val; 437 } 438 439 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 440 441 inline G4double G4VMultipleScattering::Skin() const 442 { 443 return skin; 444 } 445 446 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 447 448 inline void G4VMultipleScattering::SetSkin(G4double val) 449 { 450 if(val < 1.0) skin = 0.0; 451 else skin = val; 452 } 453 454 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 455 456 inline G4double G4VMultipleScattering::RangeFactor() const 457 { 458 return facrange; 459 } 460 461 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 462 463 inline void G4VMultipleScattering::SetRangeFactor(G4double val) 464 { 465 if(val > 0.0) facrange = val; 466 } 467 468 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 469 470 inline G4double G4VMultipleScattering::GeomFactor() const 471 { 472 return facgeom; 473 } 474 475 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 476 477 inline void G4VMultipleScattering::SetGeomFactor(G4double val) 478 { 479 if(val > 0.0) facgeom = val; 480 } 481 482 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 483 484 inline G4double G4VMultipleScattering::PolarAngleLimit() const 485 { 486 return polarAngleLimit; 487 } 488 489 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 490 491 inline void G4VMultipleScattering::SetPolarAngleLimit(G4double val) 492 { 493 if(val < 0.0) polarAngleLimit = 0.0; 494 else if(val > pi) polarAngleLimit = pi; 495 else polarAngleLimit = val; 496 } 497 498 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 499 500 inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const 501 { 502 return stepLimit; 503 } 504 505 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 506 507 inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val) 508 { 509 stepLimit = val; 510 if(val == fMinimal) facrange = 0.2; 511 } 512 513 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 514 515 inline 516 G4double G4VMultipleScattering::GetLambda(const G4ParticleDefinition* p, 517 G4double& e) 375 518 { 376 519 G4double x; … … 388 531 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 389 532 390 inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy) 391 { 392 return modelManager->SelectModel(kinEnergy, currentMaterialIndex); 393 } 394 395 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 396 397 inline G4VEmModel* G4VMultipleScattering::SelectModelForMaterial( 398 G4double kinEnergy, size_t& idxRegion) const 399 { 400 return modelManager->SelectModel(kinEnergy, idxRegion); 401 } 402 403 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 404 405 inline void G4VMultipleScattering::SetBinning(G4int nbins) 406 { 407 nBins = nbins; 408 } 409 410 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 411 412 inline G4int G4VMultipleScattering::Binning() const 413 { 414 return nBins; 415 } 416 417 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 418 419 inline void G4VMultipleScattering::SetMinKinEnergy(G4double e) 420 { 421 minKinEnergy = e; 422 } 423 424 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 425 426 inline G4double G4VMultipleScattering::MinKinEnergy() const 427 { 428 return minKinEnergy; 429 } 430 431 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 432 433 inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e) 434 { 435 maxKinEnergy = e; 436 } 437 438 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 439 440 inline G4double G4VMultipleScattering::MaxKinEnergy() const 441 { 442 return maxKinEnergy; 443 } 444 445 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 446 447 inline G4bool G4VMultipleScattering::LateralDisplasmentFlag() const 448 { 449 return latDisplasment; 450 } 451 452 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 453 454 inline void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val) 455 { 456 latDisplasment = val; 457 } 458 459 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 460 461 inline G4double G4VMultipleScattering::Skin() const 462 { 463 return skin; 464 } 465 466 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 467 468 inline void G4VMultipleScattering::SetSkin(G4double val) 469 { 470 if(val <= 0.99999) { 471 skin = 0.0; 472 stepLimit = fUseSafety; 473 } else { 474 skin = val; 475 stepLimit = fUseDistanceToBoundary; 533 inline G4double G4VMultipleScattering::GetMscContinuousStepLimit( 534 const G4Track& track, 535 G4double scaledKinEnergy, 536 G4double currentMinimalStep, 537 G4double&) 538 { 539 G4double x = currentMinimalStep; 540 DefineMaterial(track.GetMaterialCutsCouple()); 541 currentModel = SelectModel(scaledKinEnergy); 542 if(x > 0.0 && scaledKinEnergy > 0.0) { 543 G4double tPathLength = 544 currentModel->ComputeTruePathLengthLimit(track, theLambdaTable, x); 545 if (tPathLength < x) valueGPILSelectionMSC = CandidateForSelection; 546 x = currentModel->ComputeGeomPathLength(tPathLength); 547 // G4cout << "tPathLength= " << tPathLength 548 // << " stepLimit= " << x 549 // << " currentMinimalStep= " << currentMinimalStep<< G4endl; 476 550 } 477 } 478 479 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 480 481 inline G4double G4VMultipleScattering::RangeFactor() const 482 { 483 return facrange; 484 } 485 486 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 487 488 inline void G4VMultipleScattering::SetRangeFactor(G4double val) 489 { 490 if(val > 0.0) facrange = val; 491 } 492 493 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 494 495 inline G4double G4VMultipleScattering::GeomFactor() const 496 { 497 return facgeom; 498 } 499 500 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 501 502 inline void G4VMultipleScattering::SetGeomFactor(G4double val) 503 { 504 if(val > 0.0) facgeom = val; 505 } 506 507 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 508 509 inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const 510 { 511 return stepLimit; 512 } 513 514 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 515 516 inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val) 517 { 518 stepLimit = val; 519 if(val == fMinimal) { 520 skin = 0; 521 facrange = 0.2; 522 } else if(val == fUseSafety) { 523 skin = 0; 551 return x; 552 } 553 554 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 555 556 inline 557 void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple) 558 { 559 if(couple != currentCouple) { 560 currentCouple = couple; 561 currentMaterialIndex = couple->GetIndex(); 524 562 } 525 563 } … … 527 565 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 528 566 529 inline void G4VMultipleScattering::SetBuildLambdaTable(G4bool val) 530 { 531 buildLambdaTable = val; 532 } 533 534 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 535 536 inline const G4ParticleDefinition* G4VMultipleScattering::Particle() const 537 { 538 return currentParticle; 539 } 540 541 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 542 543 inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const 544 { 545 return theLambdaTable; 546 } 547 548 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 549 550 inline 551 const G4MaterialCutsCouple* G4VMultipleScattering::CurrentMaterialCutsCouple() const 567 inline const G4MaterialCutsCouple* 568 G4VMultipleScattering::CurrentMaterialCutsCouple() const 552 569 { 553 570 return currentCouple; … … 556 573 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 557 574 558 inline void G4VMultipleScattering::AddEmModel(G4int order, G4VEmModel* p, 559 const G4Region* region) 560 { 561 G4VEmFluctuationModel* fm = 0; 562 modelManager->AddEmModel(order, p, fm, region); 563 if(p)p->SetParticleChange(pParticleChange); 564 } 565 566 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 567 568 inline G4VEmModel* G4VMultipleScattering::GetModelByIndex(G4int idx) 569 { 570 return modelManager->GetModel(idx); 575 inline G4ParticleChangeForMSC* G4VMultipleScattering::GetParticleChange() 576 { 577 return &fParticleChange; 571 578 } 572 579
Note: See TracChangeset
for help on using the changeset viewer.