G4FTFParameters.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 // GEANT4 tag $Name:  $
00029 //
00030 #ifndef G4FTFParameters_h
00031 #define G4FTFParameters_h 1
00032 
00033 #include <CLHEP/Units/SystemOfUnits.h>
00034 
00035 #include "G4Proton.hh"
00036 #include "G4Neutron.hh"
00037 #include "G4ChipsComponentXS.hh"
00038 
00039 class G4FTFParameters
00040 {
00041 
00042   public:
00043         G4FTFParameters(const G4ParticleDefinition * , G4int theA, 
00044                                                        G4int theZ, 
00045                                                        G4double s);
00046 //      G4FTFParameters(const G4ParticleDefinition * , G4double theA, 
00047 //                                                       G4double theZ, 
00048 //                                                       G4double s);
00049 
00050         ~G4FTFParameters();
00051 
00052 // --------- Set geometrical parameteres -----------------------------
00053         void SethNcmsEnergy(const G4double s);
00054         void SetTotalCrossSection(const G4double Xtotal);
00055         void SetElastisCrossSection(const G4double Xelastic);
00056         void SetInelasticCrossSection(const G4double Xinelastic);
00057         void SetProbabilityOfElasticScatt(const G4double Xtotal, const G4double Xelastic);
00058         void SetProbabilityOfElasticScatt(const G4double aValue);
00059         void SetProbabilityOfAnnihilation(const G4double aValue); // Uzhi 18.11.10
00060 
00061         void SetRadiusOfHNinteractions2(const G4double Radius2);
00062         void SetSlope(const G4double Slope);
00063         void SetGamma0(const G4double Gamma0);
00064 
00065         G4double GammaElastic(const G4double impactsquare) 
00066         {return (FTFGamma0 * std::exp(-FTFSlope * impactsquare));};
00067 
00068 // --------- Set parameters of elastic scattering --------------------
00069         void SetAvaragePt2ofElasticScattering(const G4double aPt2);
00070 
00071 // --------- Set parameters of excitations ---------------------------
00072         void SetMagQuarkExchange(const G4double aValue);
00073         void SetSlopeQuarkExchange(const G4double aValue);
00074         void SetDeltaProbAtQuarkExchange(const G4double aValue);
00075         void SetProbOfSameQuarkExchange(const G4double aValue);
00076 
00077         void SetProjMinDiffMass(const G4double aValue);
00078         void SetProjMinNonDiffMass(const G4double aValue);
00079         void SetProbabilityOfProjDiff(const G4double aValue);
00080 
00081         void SetTarMinDiffMass(const G4double aValue); 
00082         void SetTarMinNonDiffMass(const G4double aValue);
00083         void SetProbabilityOfTarDiff(const G4double aValue);
00084 
00085         void SetAveragePt2(const G4double aValue);
00086         void SetProbLogDistr(const G4double aValue);
00087 
00088 // --------- Set parameters of a string kink --------------------------------
00089         void SetPt2Kink(const G4double aValue);
00090         void SetQuarkProbabilitiesAtGluonSplitUp(const G4double Puubar,
00091                                                  const G4double Pddbar,
00092                                                  const G4double Pssbar );
00093 
00094 // --------- Set parameters of nuclear destruction--------------------
00095         void SetMaxNumberOfCollisions(const G4double aValue, const G4double bValue);
00096         void SetProbOfInteraction(const G4double aValue);
00097 
00098         void SetCofNuclearDestruction(const G4double aValue);
00099         void SetR2ofNuclearDestruction(const G4double aValue);
00100 
00101         void SetExcitationEnergyPerWoundedNucleon(const G4double aValue);
00102 
00103         void SetDofNuclearDestruction(const G4double aValue);
00104         void SetPt2ofNuclearDestruction(const G4double aValue);
00105         void SetMaxPt2ofNuclearDestruction(const G4double aValue);
00106 
00107 //--------------------------------------------------------------------
00108 // --------- Get geometrical parameteres -----------------------------
00109         G4double GetTotalCrossSection();
00110         G4double GetElasticCrossSection();
00111         G4double GetInelasticCrossSection();
00112 
00113         G4double GetProbabilityOfInteraction(const G4double impactsquare);
00114         G4double GetInelasticProbability(const G4double impactsquare);
00115         G4double GetProbabilityOfElasticScatt();
00116         G4double GetSlope();
00117         G4double GetProbabilityOfAnnihilation(); // Uzhi 18.11.10
00118 
00119 // --------- Get parameters of elastic scattering --------------------
00120         G4double GetAvaragePt2ofElasticScattering();
00121 
00122 // --------- Get parameters of excitations ---------------------------
00123         G4double GetMagQuarkExchange();
00124         G4double GetSlopeQuarkExchange();
00125         G4double GetDeltaProbAtQuarkExchange();
00126         G4double GetProbOfSameQuarkExchange();
00127 
00128         G4double GetProjMinDiffMass();
00129         G4double GetProjMinNonDiffMass();
00130         G4double GetProbabilityOfProjDiff();
00131 
00132         G4double GetTarMinDiffMass();
00133         G4double GetTarMinNonDiffMass();
00134         G4double GetProbabilityOfTarDiff();
00135 
00136         G4double GetAveragePt2();
00137         G4double GetProbLogDistr();
00138 
00139 // --------- Get parameters of a string kink --------------------------------
00140         G4double GetPt2Kink();
00141         std::vector<G4double>  GetQuarkProbabilitiesAtGluonSplitUp();
00142 
00143 // --------- Get parameters of nuclear destruction---------------------
00144         G4double GetMaxNumberOfCollisions();
00145         G4double GetProbOfInteraction();
00146 
00147         G4double GetCofNuclearDestruction();
00148         G4double GetR2ofNuclearDestruction();
00149 
00150         G4double GetExcitationEnergyPerWoundedNucleon();
00151 
00152         G4double GetDofNuclearDestruction();
00153         G4double GetPt2ofNuclearDestruction();
00154         G4double GetMaxPt2ofNuclearDestruction();
00155 
00156 //  private: 
00157 
00158         G4FTFParameters();
00159 
00160 // ------------ Initial energy of hN interactions --------------------  
00161         G4double FTFhNcmsEnergy;                // Initial hN CMS energy
00162 
00163 // ------------ hN cross section manager -----------------------------
00164         G4ChipsComponentXS* FTFxsManager;
00165 // ------------ Geometrical parameteres ------------------------------
00166         G4double FTFXtotal;                     // Total X in mb
00167         G4double FTFXelastic;                   // Elastic X in mb
00168         G4double FTFXinelastic;                 // Inelastic X in mb
00169         G4double FTFXannihilation;              // Annihilation X in mb // Uzhi 18.11.10
00170         G4double ProbabilityOfAnnihilation;     // Xannih/Xinelast      // Uzhi 18.11.10
00171         G4double ProbabilityOfElasticScatt;     // Xel/Xtot
00172         G4double RadiusOfHNinteractions2;       // Xtot/pi, in fn^2
00173         G4double FTFSlope;                      // in fm^-1
00174         G4double AvaragePt2ofElasticScattering; // in MeV^2
00175         G4double FTFGamma0;
00176 
00177 // --------- Parameters of excitations -------------------------------
00178         G4double MagQuarkExchange;
00179         G4double SlopeQuarkExchange;
00180         G4double DeltaProbAtQuarkExchange;
00181         G4double ProbOfSameQuarkExchange;
00182 
00183         G4double ProjMinDiffMass;
00184         G4double ProjMinNonDiffMass;
00185         G4double ProbabilityOfProjDiff;
00186 
00187         G4double TarMinDiffMass;  
00188         G4double TarMinNonDiffMass;
00189         G4double ProbabilityOfTarDiff;
00190 
00191         G4double AveragePt2;
00192         G4double ProbLogDistr;
00193 
00194 // ---------- Parameters of kink -------------------------------------
00195         G4double Pt2kink;
00196         std::vector<G4double> QuarkProbabilitiesAtGluonSplitUp;
00197 
00198 // --------- Parameters of nuclear destruction------------------------
00199         G4double MaxNumberOfCollisions;
00200         G4double ProbOfInelInteraction;
00201 
00202         G4double CofNuclearDestruction;         // Cnd of nuclear destruction
00203         G4double R2ofNuclearDestruction;        // R2nd
00204 
00205         G4double ExcitationEnergyPerWoundedNucleon;
00206 
00207         G4double DofNuclearDestruction;         // D for momentum sampling
00208         G4double Pt2ofNuclearDestruction;       // Pt2
00209         G4double MaxPt2ofNuclearDestruction;    // Max Pt2
00210 
00211 };
00212 
00213 // --------------------------------------------------------------------
00214 inline  void G4FTFParameters::SethNcmsEnergy(const G4double S)
00215              {FTFhNcmsEnergy = S;}
00216 
00217 // --------- Set geometrical parameteres ------------------------------
00218 inline  void G4FTFParameters::SetTotalCrossSection(const G4double Xtotal)
00219              {FTFXtotal = Xtotal;}
00220 
00221 inline  void G4FTFParameters::SetElastisCrossSection(const G4double Xelastic)
00222              {FTFXelastic = Xelastic;}
00223 
00224 inline  void G4FTFParameters::SetInelasticCrossSection(const G4double Xinelastic)
00225              {FTFXinelastic = Xinelastic;}
00226 
00227 inline  void G4FTFParameters::SetProbabilityOfElasticScatt(const G4double Xtotal, 
00228                                                            const G4double Xelastic)
00229                  { 
00230                   if(Xtotal==0.) {ProbabilityOfElasticScatt = 0.;}
00231                   else           {ProbabilityOfElasticScatt = Xelastic/Xtotal;};
00232                  } 
00233 
00234 inline  void G4FTFParameters::SetProbabilityOfElasticScatt(const G4double aValue)
00235              {ProbabilityOfElasticScatt = aValue;}
00236 
00237 inline  void G4FTFParameters::SetProbabilityOfAnnihilation(const G4double aValue) 
00238              {ProbabilityOfAnnihilation = aValue;}   // Uzhi 18.11.10
00239 
00240 inline  void G4FTFParameters::SetRadiusOfHNinteractions2(const G4double Radius2)
00241              {RadiusOfHNinteractions2 = Radius2;}
00242 
00243 inline  void G4FTFParameters::SetSlope(const G4double Slope)
00244              {FTFSlope = 12.84/Slope;} // Slope is in GeV^-2, FTFSlope in fm^-2
00245 
00246 inline  void G4FTFParameters::SetGamma0(const G4double Gamma0)
00247              {FTFGamma0 = Gamma0;}
00248 
00249 // --------- Set parameters of elastic scattering ---------------------
00250 inline  void G4FTFParameters::SetAvaragePt2ofElasticScattering(const G4double aPt2)
00251                  {
00252 AvaragePt2ofElasticScattering = aPt2;}
00253 
00254 // --------- Set parameters of excitations ----------------------------
00255 inline  void G4FTFParameters::SetMagQuarkExchange(const G4double aValue)
00256              {MagQuarkExchange = aValue;}
00257 inline  void G4FTFParameters::SetSlopeQuarkExchange(const G4double aValue)
00258              {SlopeQuarkExchange = aValue;}
00259 inline  void G4FTFParameters::SetDeltaProbAtQuarkExchange(const G4double aValue)
00260              {DeltaProbAtQuarkExchange = aValue;}
00261 inline void G4FTFParameters::SetProbOfSameQuarkExchange(const G4double aValue)
00262              {ProbOfSameQuarkExchange = aValue;}
00263 
00264 inline  void G4FTFParameters::SetProjMinDiffMass(const G4double aValue)
00265              {ProjMinDiffMass = aValue*CLHEP::GeV;}
00266 inline  void G4FTFParameters::SetProjMinNonDiffMass(const G4double aValue)
00267              {ProjMinNonDiffMass = aValue*CLHEP::GeV;}
00268 inline  void G4FTFParameters::SetProbabilityOfProjDiff(const G4double aValue)
00269              {ProbabilityOfProjDiff = aValue;}
00270 
00271 inline  void G4FTFParameters::SetTarMinDiffMass(const G4double aValue)
00272              {TarMinDiffMass = aValue*CLHEP::GeV;}
00273 inline  void G4FTFParameters::SetTarMinNonDiffMass(const G4double aValue)
00274              {TarMinNonDiffMass = aValue*CLHEP::GeV;}
00275 inline  void G4FTFParameters::SetProbabilityOfTarDiff(const G4double aValue)
00276              {ProbabilityOfTarDiff = aValue;}
00277 
00278 inline  void G4FTFParameters::SetAveragePt2(const G4double aValue)
00279              {AveragePt2 = aValue*CLHEP::GeV*CLHEP::GeV;}
00280 
00281 inline  void G4FTFParameters::SetProbLogDistr(const G4double aValue)
00282              {ProbLogDistr = aValue;}
00283 
00284 // --------- Set parameters of a string kink --------------------------------
00285 inline  void G4FTFParameters::SetPt2Kink(const G4double aValue) 
00286              {Pt2kink = aValue;}
00287 
00288 inline  void G4FTFParameters::SetQuarkProbabilitiesAtGluonSplitUp(
00289                                                  const G4double Puubar,
00290                                                  const G4double Pddbar,
00291                                                  const G4double Pssbar )
00292              {
00293               QuarkProbabilitiesAtGluonSplitUp.push_back(Puubar); 
00294               QuarkProbabilitiesAtGluonSplitUp.push_back(Puubar+Pddbar);
00295               QuarkProbabilitiesAtGluonSplitUp.push_back(Puubar+Pddbar+Pssbar);
00296              }
00297 
00298 // --------- Set parameters of nuclear destruction--------------------
00299 inline   void G4FTFParameters::SetMaxNumberOfCollisions(const G4double Plab,
00300                                                         const G4double Pbound)
00301               {
00302                if(Plab > Pbound)
00303                {
00304                 MaxNumberOfCollisions = Plab/Pbound;
00305                 SetProbOfInteraction(-1.);
00306                } else
00307                {
00308 //                MaxNumberOfCollisions = -1.;
00309 //                SetProbOfInteraction(std::exp(0.25*(Plab-Pbound)));
00310                 MaxNumberOfCollisions = 1;
00311                 SetProbOfInteraction(-1.);
00312                }
00313               }
00314 inline  void G4FTFParameters::SetProbOfInteraction(const G4double aValue)
00315              {ProbOfInelInteraction = aValue;}
00316 
00317 inline  void G4FTFParameters::SetCofNuclearDestruction(const G4double aValue)
00318              {CofNuclearDestruction = aValue;}
00319 inline  void G4FTFParameters::SetR2ofNuclearDestruction(const G4double aValue)
00320              {R2ofNuclearDestruction = aValue;}
00321 
00322 inline  void G4FTFParameters::SetExcitationEnergyPerWoundedNucleon(const G4double aValue)
00323              {ExcitationEnergyPerWoundedNucleon = aValue;}
00324 
00325 inline  void G4FTFParameters::SetDofNuclearDestruction(const G4double aValue)
00326              {DofNuclearDestruction = aValue;}
00327 inline  void G4FTFParameters::SetPt2ofNuclearDestruction(const G4double aValue)
00328              {Pt2ofNuclearDestruction =aValue;}
00329 inline  void G4FTFParameters::SetMaxPt2ofNuclearDestruction(const G4double aValue)
00330              {MaxPt2ofNuclearDestruction = aValue;}
00331 
00332 // --------- Get geometrical parameteres ------------------------------
00333 inline  G4double G4FTFParameters::GetTotalCrossSection()     {return FTFXtotal;}
00334 inline  G4double G4FTFParameters::GetElasticCrossSection()   {return FTFXelastic;}
00335 inline  G4double G4FTFParameters::GetInelasticCrossSection() {return FTFXinelastic;}
00336 
00337 inline  G4double G4FTFParameters::GetSlope()                 {return FTFSlope;}
00338 
00339 inline  G4double G4FTFParameters::GetProbabilityOfInteraction(const G4double impactsquare)
00340                  {
00341                   if(RadiusOfHNinteractions2 > impactsquare) {return 1.;}
00342                   else                                       {return 0.;}
00343                  } 
00344 
00345 inline  G4double G4FTFParameters::GetProbabilityOfElasticScatt()
00346                  {return ProbabilityOfElasticScatt;}
00347 
00348 inline  G4double G4FTFParameters::GetInelasticProbability( const G4double impactsquare)
00349         {
00350          G4double Gamma = GammaElastic(impactsquare);
00351          return 2 * Gamma - Gamma *Gamma;
00352         }
00353 
00354 inline G4double G4FTFParameters::GetProbabilityOfAnnihilation()
00355        {return ProbabilityOfAnnihilation;} 
00356                                                 // Uzhi 18.11.10
00357 
00358 // --------- Get parameters of elastic scattering ---------------------
00359 inline  G4double G4FTFParameters::GetAvaragePt2ofElasticScattering()
00360                  {return AvaragePt2ofElasticScattering;}
00361 
00362 // --------- Get parameters of excitations ---------------------------
00363 inline  G4double G4FTFParameters::GetMagQuarkExchange()       {return MagQuarkExchange;}
00364 inline  G4double G4FTFParameters::GetSlopeQuarkExchange()     {return SlopeQuarkExchange;}
00365 inline  G4double G4FTFParameters::GetDeltaProbAtQuarkExchange(){return
00366                                                                 DeltaProbAtQuarkExchange;}
00367 inline  G4double G4FTFParameters::GetProbOfSameQuarkExchange(){return ProbOfSameQuarkExchange;}
00368 
00369 inline  G4double G4FTFParameters::GetProjMinDiffMass()        {return ProjMinDiffMass;}
00370 inline  G4double G4FTFParameters::GetProjMinNonDiffMass()     {return ProjMinNonDiffMass;}
00371 inline  G4double G4FTFParameters::GetProbabilityOfProjDiff()  {return ProbabilityOfProjDiff;} 
00372 
00373 inline  G4double G4FTFParameters::GetTarMinDiffMass()         {return TarMinDiffMass;}
00374 inline  G4double G4FTFParameters::GetTarMinNonDiffMass()      {return TarMinNonDiffMass;}
00375 inline  G4double G4FTFParameters::GetProbabilityOfTarDiff()   {return ProbabilityOfTarDiff;}
00376 
00377 inline  G4double G4FTFParameters::GetAveragePt2()             {return AveragePt2;}
00378 inline  G4double G4FTFParameters::GetProbLogDistr()           {return ProbLogDistr;}
00379 
00380 // --------- Get parameters of a string kink --------------------------
00381 inline  G4double G4FTFParameters::GetPt2Kink()                {return Pt2kink;}
00382 inline  std::vector<G4double> 
00383                  G4FTFParameters::GetQuarkProbabilitiesAtGluonSplitUp() 
00384                                   {return QuarkProbabilitiesAtGluonSplitUp;}
00385 
00386 // --------- Get parameters of nuclear destruction---------------------
00387 inline  G4double G4FTFParameters::GetMaxNumberOfCollisions(){return MaxNumberOfCollisions;}
00388 inline  G4double G4FTFParameters::GetProbOfInteraction()    {return ProbOfInelInteraction;}
00389 
00390 inline  G4double G4FTFParameters::GetCofNuclearDestruction(){return CofNuclearDestruction;}
00391 inline  G4double G4FTFParameters::GetR2ofNuclearDestruction(){return R2ofNuclearDestruction;}
00392 
00393 inline  G4double G4FTFParameters::GetExcitationEnergyPerWoundedNucleon()
00394             {return ExcitationEnergyPerWoundedNucleon;}
00395 
00396 
00397 inline  G4double G4FTFParameters::GetDofNuclearDestruction()
00398                  {return DofNuclearDestruction;}
00399 inline  G4double G4FTFParameters::GetPt2ofNuclearDestruction(){return Pt2ofNuclearDestruction;}
00400 inline  G4double G4FTFParameters::GetMaxPt2ofNuclearDestruction()
00401                  {return MaxPt2ofNuclearDestruction;}
00402 #endif

Generated on Mon May 27 17:48:18 2013 for Geant4 by  doxygen 1.4.7