Ignore:
Timestamp:
Apr 6, 2009, 12:21:12 PM (15 years ago)
Author:
garnier
Message:

update processes

File:
1 edited

Legend:

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

    r819 r961  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VMultipleScattering.hh,v 1.48 2007/10/29 08:38:58 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-01-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 $
    2828//
    2929// -------------------------------------------------------------------
     
    6363// 12-02-07 Add get/set skin (V.Ivanchenko)
    6464// 27-10-07 Virtual functions moved to source (V.Ivanchenko)
     65// 15-07-08 Reorder class members for further multi-thread development (VI)
    6566//
    6667
     
    7273
    7374#include "G4VContinuousDiscreteProcess.hh"
    74 #include "G4LossTableManager.hh"
    7575#include "globals.hh"
    7676#include "G4Material.hh"
     
    9595
    9696  G4VMultipleScattering(const G4String& name = "msc",
    97                               G4ProcessType type = fElectromagnetic);
     97                        G4ProcessType type = fElectromagnetic);
    9898
    9999  virtual ~G4VMultipleScattering();
     
    104104
    105105  virtual G4bool IsApplicable(const G4ParticleDefinition& p) = 0;
    106     // True for all charged particles
    107106
    108107  virtual void PrintInfo() = 0;
     
    112111  virtual void InitialiseProcess(const G4ParticleDefinition*) = 0;
    113112
    114   //------------------------------------------------------------------------
    115   // Methods with standard implementation; may be overwritten if needed
    116   //------------------------------------------------------------------------
    117113public:
    118114
     
    138134  G4bool StorePhysicsTable(const G4ParticleDefinition*,
    139135                           const G4String& directory,
    140                                  G4bool ascii = false);
     136                           G4bool ascii = false);
    141137
    142138  // Retrieve Physics from a file.
     
    147143  G4bool RetrievePhysicsTable(const G4ParticleDefinition*,
    148144                              const G4String& directory,
    149                                     G4bool ascii);
    150 
    151   //------------------------------------------------------------------------
    152   // Specific methods for msc processes
    153   //------------------------------------------------------------------------
     145                              G4bool ascii);
    154146
    155147  // The function overloads the corresponding function of the base
     
    158150  G4double AlongStepGetPhysicalInteractionLength(
    159151                                            const G4Track&,
    160                                                   G4double  previousStepSize,
    161                                                   G4double  currentMinimalStep,
    162                                                   G4double& currentSafety,
    163                                                   G4GPILSelection* selection);
     152                                            G4double  previousStepSize,
     153                                            G4double  currentMinimalStep,
     154                                            G4double& currentSafety,
     155                                            G4GPILSelection* selection);
    164156
    165157  // The function overloads the corresponding function of the base
     
    188180  inline void SetMinKinEnergy(G4double e);
    189181  inline G4double MinKinEnergy() const;
    190     // Print out of the class parameters
    191182
    192183  inline void SetMaxKinEnergy(G4double e);
     
    197188  inline G4PhysicsTable* LambdaTable() const;
    198189
    199   //------------------------------------------------------------------------
    200   // Define and access particle type
    201   //------------------------------------------------------------------------
    202 
     190  // access particle type
    203191  inline const G4ParticleDefinition* Particle() const;
    204   inline void SetParticle(const G4ParticleDefinition*);
    205192
    206193  //------------------------------------------------------------------------
     
    208195  //------------------------------------------------------------------------
    209196
    210   inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0);
    211 
     197protected:
     198  // Select model in run time
     199  inline G4VEmModel* SelectModel(G4double kinEnergy);
     200
     201public:
     202  // Select model in run time
    212203  inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy,
    213204                                            size_t& idxRegion) const;
    214205
    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;
    222218  inline void SetLateralDisplasmentFlag(G4bool val);
    223      // lateral displacement to be/not to be computed
    224 
     219
     220  inline G4double Skin() const;
    225221  inline void SetSkin(G4double val);
    226      // skin parameter
    227 
     222
     223  inline G4double RangeFactor() const;
    228224  inline void SetRangeFactor(G4double val);
    229      // FactorRange parameter
    230 
     225
     226  inline G4double GeomFactor() const;
    231227  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;
    234233  inline void SetStepLimitType(G4MscStepLimitType val);
    235      // FactorRange parameter
     234
     235  //------------------------------------------------------------------------
     236  // Run time methods
     237  //------------------------------------------------------------------------
    236238
    237239protected:
     
    241243                           G4double,
    242244                           G4ForceCondition* condition);
    243 
    244   //------------------------------------------------------------------------
    245   // Run time methods
    246   //------------------------------------------------------------------------
    247245
    248246  // This method is not used for tracking, it returns step limit
     
    252250                                  G4double& currentSafety);
    253251
    254   inline G4double GetLambda(const G4ParticleDefinition* p, G4double& kineticEnergy);
     252  inline G4double GetLambda(const G4ParticleDefinition* p,
     253                            G4double& kineticEnergy);
    255254
    256255  // This method is used for tracking, it returns step limit
    257256  inline G4double GetMscContinuousStepLimit(const G4Track& track,
    258                                             G4double previousStepSize,
     257                                            G4double scaledKinEnergy,
    259258                                            G4double currentMinimalStep,
    260259                                            G4double& currentSafety);
    261260
    262   inline G4VEmModel* SelectModel(G4double kinEnergy);
    263   // Select concrete model
     261  // define current material
     262  inline void DefineMaterial(const G4MaterialCutsCouple* couple);
    264263
    265264  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
    284268
    285269private:
    286270
    287271  // hide  assignment operator
    288 
    289272  G4VMultipleScattering(G4VMultipleScattering &);
    290273  G4VMultipleScattering & operator=(const G4VMultipleScattering &right);
    291274
    292   // =====================================================================
    293 
    294 protected:
    295 
    296   G4GPILSelection             valueGPILSelectionMSC;
    297   G4ParticleChangeForMSC      fParticleChange;
    298 
    299 private:
     275  // ======== Parameters of the class fixed at construction =========
    300276
    301277  G4EmModelManager*           modelManager;
    302   G4VEmModel*                 currentModel;
     278  G4bool                      buildLambdaTable;
     279
     280  // ======== Parameters of the class fixed at initialisation =======
     281
    303282  G4PhysicsTable*             theLambdaTable;
    304 
    305   // cache
    306283  const G4ParticleDefinition* firstParticle;
    307   const G4ParticleDefinition* currentParticle;
    308   const G4MaterialCutsCouple* currentCouple;
    309   size_t                      currentMaterialIndex;
    310 
    311   G4int                       nBins;
    312284
    313285  G4MscStepLimitType          stepLimit;
     
    318290  G4double                    facrange;
    319291  G4double                    facgeom;
     292  G4double                    polarAngleLimit;
     293
     294  G4int                       nBins;
    320295
    321296  G4bool                      latDisplasment;
    322   G4bool                      buildLambdaTable;
     297
     298  // ======== Cashed values - may be state dependent ================
     299
     300protected:
     301
     302  G4GPILSelection             valueGPILSelectionMSC;
     303  G4ParticleChangeForMSC      fParticleChange;
     304
     305private:
     306
     307  G4VEmModel*                 currentModel;
     308
     309  // cache
     310  const G4ParticleDefinition* currentParticle;
     311  const G4MaterialCutsCouple* currentCouple;
     312  size_t                      currentMaterialIndex;
     313
    323314};
    324315
    325316//....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= " << tPathLength
    354     //         << " stepLimit= " << x
    355     //        << " currentMinimalStep= " << currentMinimalStep<< G4endl;
    356   }
    357   return x;
    358 }
    359 
    360317//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    361318
     
    367324{
    368325  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
     331inline void G4VMultipleScattering::SetBinning(G4int nbins)
     332{
     333  nBins = nbins;
     334}
     335
     336//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     337
     338inline G4int G4VMultipleScattering::Binning() const
     339{
     340  return nBins;
     341}
     342
     343//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     344
     345inline void G4VMultipleScattering::SetMinKinEnergy(G4double e)
     346{
     347  minKinEnergy = e;
     348}
     349
     350//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     351
     352inline G4double G4VMultipleScattering::MinKinEnergy() const
     353{
     354  return minKinEnergy;
     355}
     356
     357//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     358
     359inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e)
     360{
     361  maxKinEnergy = e;
     362}
     363
     364//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     365
     366inline G4double G4VMultipleScattering::MaxKinEnergy() const
     367{
     368  return maxKinEnergy;
     369}
     370
     371//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     372
     373inline  void G4VMultipleScattering::SetBuildLambdaTable(G4bool val)
     374{
     375  buildLambdaTable = val;
     376}
     377
     378//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     379
     380inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const
     381{
     382  return theLambdaTable;
     383}
     384
     385//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     386
     387inline  const G4ParticleDefinition* G4VMultipleScattering::Particle() const
     388{
     389  return currentParticle;
     390}
     391
     392//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     393
     394inline 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
     404inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy)
     405{
     406  return modelManager->SelectModel(kinEnergy, currentMaterialIndex);
     407}
     408
     409//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     410
     411inline 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
     419inline
     420G4VEmModel* G4VMultipleScattering::GetModelByIndex(G4int idx, G4bool ver)
     421{
     422  return modelManager->GetModel(idx, ver);
     423}
     424
     425//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     426
     427inline  G4bool G4VMultipleScattering::LateralDisplasmentFlag() const
     428{
     429  return latDisplasment;
     430}
     431
     432//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     433
     434inline  void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val)
     435{
     436  latDisplasment = val;
     437}
     438
     439//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     440
     441inline  G4double G4VMultipleScattering::Skin() const
     442{
     443  return skin;
     444}
     445
     446//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     447
     448inline  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
     456inline  G4double G4VMultipleScattering::RangeFactor() const
     457{
     458  return facrange;
     459}
     460
     461//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     462
     463inline  void G4VMultipleScattering::SetRangeFactor(G4double val)
     464{
     465  if(val > 0.0) facrange = val;
     466}
     467
     468//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     469
     470inline  G4double G4VMultipleScattering::GeomFactor() const
     471{
     472  return facgeom;
     473}
     474
     475//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     476
     477inline  void G4VMultipleScattering::SetGeomFactor(G4double val)
     478{
     479  if(val > 0.0) facgeom = val;
     480}
     481
     482//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     483
     484inline  G4double G4VMultipleScattering::PolarAngleLimit() const
     485{
     486  return polarAngleLimit;
     487}
     488
     489//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     490
     491inline  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
     500inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const
     501{
     502  return stepLimit;
     503}
     504
     505//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     506
     507inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val)
     508{
     509  stepLimit = val;
     510  if(val == fMinimal) facrange = 0.2;
     511}
     512
     513//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     514
     515inline
     516G4double G4VMultipleScattering::GetLambda(const G4ParticleDefinition* p,
     517                                          G4double& e)
    375518{
    376519  G4double x;
     
    388531//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    389532
    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;
     533inline 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;
    476550  }
    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
     556inline
     557void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple)
     558{
     559  if(couple != currentCouple) {
     560    currentCouple   = couple;
     561    currentMaterialIndex = couple->GetIndex();
    524562  }
    525563}
     
    527565//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    528566
    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
     567inline const G4MaterialCutsCouple*
     568G4VMultipleScattering::CurrentMaterialCutsCouple() const
    552569{
    553570  return currentCouple;
     
    556573//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    557574
    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);
     575inline G4ParticleChangeForMSC* G4VMultipleScattering::GetParticleChange()
     576{
     577  return &fParticleChange;
    571578}
    572579
Note: See TracChangeset for help on using the changeset viewer.