Ignore:
Timestamp:
Jun 18, 2010, 11:42:07 AM (14 years ago)
Author:
garnier
Message:

update geant4-09-04-beta-cand-01 interfaces-V09-03-09 vis-V09-03-08

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/electromagnetic/utils/include/G4VMultipleScattering.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VMultipleScattering.hh,v 1.62 2009/10/29 17:56:04 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4VMultipleScattering.hh,v 1.63 2010/03/10 18:29:51 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    154154  // The function overloads the corresponding function of the base
    155155  // class.
    156   inline G4double PostStepGetPhysicalInteractionLength(
     156  G4double PostStepGetPhysicalInteractionLength(
    157157                                            const G4Track&,
    158158                                            G4double  previousStepSize,
     
    160160
    161161  // Along step actions
    162   inline G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&);
     162  G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&);
    163163
    164164  // Post step actions
    165   inline G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
     165  G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
    166166
    167167  // This method does not used for tracking, it is intended only for tests
    168   inline G4double ContinuousStepLimit(const G4Track& track,
    169                                       G4double previousStepSize,
    170                                       G4double currentMinimalStep,
    171                                       G4double& currentSafety);
     168  G4double ContinuousStepLimit(const G4Track& track,
     169                               G4double previousStepSize,
     170                               G4double currentMinimalStep,
     171                               G4double& currentSafety);
    172172
    173173  //------------------------------------------------------------------------
     
    318318};
    319319
    320 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    321 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    322 
    323 inline G4double G4VMultipleScattering::ContinuousStepLimit(
    324                                        const G4Track& track,
    325                                        G4double previousStepSize,
    326                                        G4double currentMinimalStep,
    327                                        G4double& currentSafety)
    328 {
    329   return GetContinuousStepLimit(track,previousStepSize,currentMinimalStep,
    330                                 currentSafety);
    331 }
    332 
    333 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    334 
    335 inline void G4VMultipleScattering::SetBinning(G4int nbins)
    336 {
    337   nBins = nbins;
    338 }
    339 
    340 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    341 
    342 inline G4int G4VMultipleScattering::Binning() const
    343 {
    344   return nBins;
    345 }
    346 
    347 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    348 
    349 inline void G4VMultipleScattering::SetMinKinEnergy(G4double e)
    350 {
    351   minKinEnergy = e;
    352 }
    353 
    354 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    355 
    356 inline G4double G4VMultipleScattering::MinKinEnergy() const
    357 {
    358   return minKinEnergy;
    359 }
    360 
    361 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    362 
    363 inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e)
    364 {
    365   maxKinEnergy = e;
    366 }
    367 
    368 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    369 
    370 inline G4double G4VMultipleScattering::MaxKinEnergy() const
    371 {
    372   return maxKinEnergy;
    373 }
    374 
    375 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    376 
    377 inline  void G4VMultipleScattering::SetBuildLambdaTable(G4bool val)
    378 {
    379   buildLambdaTable = val;
    380 }
    381 
    382 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    383 
    384 inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const
    385 {
    386   return theLambdaTable;
    387 }
    388 
    389 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    390 
    391 inline  const G4ParticleDefinition* G4VMultipleScattering::Particle() const
    392 {
    393   return currentParticle;
    394 }
    395 
    396 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    397 
    398 inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy)
    399 {
    400   return modelManager->SelectModel(kinEnergy, currentMaterialIndex);
    401 }
    402 
    403 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    404 
    405 inline G4VEmModel* G4VMultipleScattering::SelectModelForMaterial(
    406                    G4double kinEnergy, size_t& idxRegion) const
    407 {
    408   return modelManager->SelectModel(kinEnergy, idxRegion);
    409 }
    410 
    411 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    412 
    413 inline  G4bool G4VMultipleScattering::LateralDisplasmentFlag() const
    414 {
    415   return latDisplasment;
    416 }
    417 
    418 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    419 
    420 inline  void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val)
    421 {
    422   latDisplasment = val;
    423 }
    424 
    425 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    426 
    427 inline  G4double G4VMultipleScattering::Skin() const
    428 {
    429   return skin;
    430 }
    431 
    432 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    433 
    434 inline  void G4VMultipleScattering::SetSkin(G4double val)
    435 {
    436   if(val < 1.0) skin = 0.0;
    437   else          skin = val;
    438 }
    439 
    440 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    441 
    442 inline  G4double G4VMultipleScattering::RangeFactor() const
    443 {
    444   return facrange;
    445 }
    446 
    447 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    448 
    449 inline  void G4VMultipleScattering::SetRangeFactor(G4double val)
    450 {
    451   if(val > 0.0) facrange = val;
    452 }
    453 
    454 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    455 
    456 inline  G4double G4VMultipleScattering::GeomFactor() const
    457 {
    458   return facgeom;
    459 }
    460 
    461 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    462 
    463 inline  void G4VMultipleScattering::SetGeomFactor(G4double val)
    464 {
    465   if(val > 0.0) facgeom = val;
    466 }
    467 
    468 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    469 
    470 inline  G4double G4VMultipleScattering::PolarAngleLimit() const
    471 {
    472   return polarAngleLimit;
    473 }
    474 
    475 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    476 
    477 inline  void G4VMultipleScattering::SetPolarAngleLimit(G4double val)
    478 {
    479   if(val < 0.0)     polarAngleLimit = 0.0;
    480   else if(val > pi) polarAngleLimit = pi;
    481   else              polarAngleLimit = val;
    482 }
    483 
    484 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    485 
    486 inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const
    487 {
    488   return stepLimit;
    489 }
    490 
    491 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    492 
    493 inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val)
    494 {
    495   stepLimit = val;
    496   if(val == fMinimal) facrange = 0.2;
     320// ======== Run time inline methods ================
     321
     322inline const G4MaterialCutsCouple*
     323G4VMultipleScattering::CurrentMaterialCutsCouple() const
     324{
     325  return currentCouple;
     326}
     327
     328//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     329
     330inline
     331void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple)
     332{
     333  if(couple != currentCouple) {
     334    currentCouple   = couple;
     335    currentMaterialIndex = couple->GetIndex();
     336  }
    497337}
    498338
     
    509349    x = currentModel->CrossSection(currentCouple,p,e);
    510350  }
    511   if(x > DBL_MIN) x = 1./x;
    512   else            x = DBL_MAX;
     351  if(x > DBL_MIN) { x = 1./x; }
     352  else            { x = DBL_MAX; }
    513353  return x;
    514354}
     
    516356//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    517357
    518 inline
    519 void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple)
    520 {
    521   if(couple != currentCouple) {
    522     currentCouple   = couple;
    523     currentMaterialIndex = couple->GetIndex();
    524   }
    525 }
    526 
    527 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    528 
    529 inline const G4MaterialCutsCouple*
    530 G4VMultipleScattering::CurrentMaterialCutsCouple() const
    531 {
    532   return currentCouple;
    533 }
    534 
    535 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    536 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    537 
    538 // Follwoing methods are virtual, they are inlined because they applied at
    539 // each simulation step and some compilers may inline these methods
    540 
    541 inline G4double
    542 G4VMultipleScattering::PostStepGetPhysicalInteractionLength(
    543               const G4Track&, G4double, G4ForceCondition* condition)
    544 {
    545   *condition = Forced;
    546   return DBL_MAX;
    547 }
    548 
    549 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    550 
    551 inline G4VParticleChange*
    552 G4VMultipleScattering::AlongStepDoIt(const G4Track& track, const G4Step& step)
    553 {
    554   if(currentModel->IsActive(track.GetKineticEnergy())) {
    555     fParticleChange.ProposeTrueStepLength(currentModel->ComputeTrueStepLength(step.GetStepLength()));
    556   }
    557   return &fParticleChange;
    558 }
    559 
    560 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    561 
    562 inline G4VParticleChange*
    563 G4VMultipleScattering::PostStepDoIt(const G4Track& track, const G4Step& step)
    564 {
    565   fParticleChange.Initialize(track);
    566   if(currentModel->IsActive(track.GetKineticEnergy())) {
    567     currentModel->SampleScattering(track.GetDynamicParticle(),
    568                                    step.GetPostStepPoint()->GetSafety());
    569   }
    570   return &fParticleChange;
     358inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy)
     359{
     360  return modelManager->SelectModel(kinEnergy, currentMaterialIndex);
     361}
     362
     363//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     364
     365inline G4VEmModel* G4VMultipleScattering::SelectModelForMaterial(
     366                   G4double kinEnergy, size_t& idxRegion) const
     367{
     368  return modelManager->SelectModel(kinEnergy, idxRegion);
     369}
     370
     371// ======== Get/Set inline methods used at initialisation ================
     372
     373inline void G4VMultipleScattering::SetBinning(G4int nbins)
     374{
     375  nBins = nbins;
     376}
     377
     378//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     379
     380inline G4int G4VMultipleScattering::Binning() const
     381{
     382  return nBins;
     383}
     384
     385//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     386
     387inline void G4VMultipleScattering::SetMinKinEnergy(G4double e)
     388{
     389  minKinEnergy = e;
     390}
     391
     392//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     393
     394inline G4double G4VMultipleScattering::MinKinEnergy() const
     395{
     396  return minKinEnergy;
     397}
     398
     399//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     400
     401inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e)
     402{
     403  maxKinEnergy = e;
     404}
     405
     406//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     407
     408inline G4double G4VMultipleScattering::MaxKinEnergy() const
     409{
     410  return maxKinEnergy;
     411}
     412
     413//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     414
     415inline  void G4VMultipleScattering::SetBuildLambdaTable(G4bool val)
     416{
     417  buildLambdaTable = val;
     418}
     419
     420//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     421
     422inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const
     423{
     424  return theLambdaTable;
     425}
     426
     427//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     428
     429inline  const G4ParticleDefinition* G4VMultipleScattering::Particle() const
     430{
     431  return currentParticle;
     432}
     433
     434//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     435
     436inline  G4bool G4VMultipleScattering::LateralDisplasmentFlag() const
     437{
     438  return latDisplasment;
     439}
     440
     441//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     442
     443inline  void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val)
     444{
     445  latDisplasment = val;
     446}
     447
     448//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     449
     450inline  G4double G4VMultipleScattering::Skin() const
     451{
     452  return skin;
     453}
     454
     455//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     456
     457inline  void G4VMultipleScattering::SetSkin(G4double val)
     458{
     459  if(val < 1.0) { skin = 0.0; }
     460  else          { skin = val; }
     461}
     462
     463//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     464
     465inline  G4double G4VMultipleScattering::RangeFactor() const
     466{
     467  return facrange;
     468}
     469
     470//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     471
     472inline  void G4VMultipleScattering::SetRangeFactor(G4double val)
     473{
     474  if(val > 0.0) facrange = val;
     475}
     476
     477//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     478
     479inline  G4double G4VMultipleScattering::GeomFactor() const
     480{
     481  return facgeom;
     482}
     483
     484//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     485
     486inline  void G4VMultipleScattering::SetGeomFactor(G4double val)
     487{
     488  if(val > 0.0) facgeom = val;
     489}
     490
     491//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     492
     493inline  G4double G4VMultipleScattering::PolarAngleLimit() const
     494{
     495  return polarAngleLimit;
     496}
     497
     498//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     499
     500inline  void G4VMultipleScattering::SetPolarAngleLimit(G4double val)
     501{
     502  if(val < 0.0)            { polarAngleLimit = 0.0; }
     503  else if(val > CLHEP::pi) { polarAngleLimit = CLHEP::pi; }
     504  else                     { polarAngleLimit = val; }
     505}
     506
     507//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     508
     509inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const
     510{
     511  return stepLimit;
     512}
     513
     514//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     515
     516inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val)
     517{
     518  stepLimit = val;
     519  if(val == fMinimal) { facrange = 0.2; }
    571520}
    572521
Note: See TracChangeset for help on using the changeset viewer.