00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
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
00047
00048
00049
00050 ~G4FTFParameters();
00051
00052
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);
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
00069 void SetAvaragePt2ofElasticScattering(const G4double aPt2);
00070
00071
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
00089 void SetPt2Kink(const G4double aValue);
00090 void SetQuarkProbabilitiesAtGluonSplitUp(const G4double Puubar,
00091 const G4double Pddbar,
00092 const G4double Pssbar );
00093
00094
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
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();
00118
00119
00120 G4double GetAvaragePt2ofElasticScattering();
00121
00122
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
00140 G4double GetPt2Kink();
00141 std::vector<G4double> GetQuarkProbabilitiesAtGluonSplitUp();
00142
00143
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
00157
00158 G4FTFParameters();
00159
00160
00161 G4double FTFhNcmsEnergy;
00162
00163
00164 G4ChipsComponentXS* FTFxsManager;
00165
00166 G4double FTFXtotal;
00167 G4double FTFXelastic;
00168 G4double FTFXinelastic;
00169 G4double FTFXannihilation;
00170 G4double ProbabilityOfAnnihilation;
00171 G4double ProbabilityOfElasticScatt;
00172 G4double RadiusOfHNinteractions2;
00173 G4double FTFSlope;
00174 G4double AvaragePt2ofElasticScattering;
00175 G4double FTFGamma0;
00176
00177
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
00195 G4double Pt2kink;
00196 std::vector<G4double> QuarkProbabilitiesAtGluonSplitUp;
00197
00198
00199 G4double MaxNumberOfCollisions;
00200 G4double ProbOfInelInteraction;
00201
00202 G4double CofNuclearDestruction;
00203 G4double R2ofNuclearDestruction;
00204
00205 G4double ExcitationEnergyPerWoundedNucleon;
00206
00207 G4double DofNuclearDestruction;
00208 G4double Pt2ofNuclearDestruction;
00209 G4double MaxPt2ofNuclearDestruction;
00210
00211 };
00212
00213
00214 inline void G4FTFParameters::SethNcmsEnergy(const G4double S)
00215 {FTFhNcmsEnergy = S;}
00216
00217
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;}
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;}
00245
00246 inline void G4FTFParameters::SetGamma0(const G4double Gamma0)
00247 {FTFGamma0 = Gamma0;}
00248
00249
00250 inline void G4FTFParameters::SetAvaragePt2ofElasticScattering(const G4double aPt2)
00251 {
00252 AvaragePt2ofElasticScattering = aPt2;}
00253
00254
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
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
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
00309
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
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
00357
00358
00359 inline G4double G4FTFParameters::GetAvaragePt2ofElasticScattering()
00360 {return AvaragePt2ofElasticScattering;}
00361
00362
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
00381 inline G4double G4FTFParameters::GetPt2Kink() {return Pt2kink;}
00382 inline std::vector<G4double>
00383 G4FTFParameters::GetQuarkProbabilitiesAtGluonSplitUp()
00384 {return QuarkProbabilitiesAtGluonSplitUp;}
00385
00386
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