|
PYTHIA
8.317
|
#include <HISubCollisionModel.h>
Public Member Functions | |
| FluctuatingSubCollisionModel (int nParmIn, int modein) | |
| The default constructor simply lists the nucleon-nucleon cross sections. | |
| virtual | ~FluctuatingSubCollisionModel () override |
| Virtual destructor. | |
| virtual bool | init (int idAIn, int idBIn, double eCMIn) override |
| Virtual init method. More... | |
| virtual void | generateNucleonStates (Nucleus &proj, Nucleus &targ) override |
| Generate radii for all nucleons. More... | |
| virtual SubCollisionSet | getCollisions (Nucleus &proj, Nucleus &targ) override |
| Main function returning the possible sub-collisions. More... | |
| SubCollisionSet | getCollisionsNew (Nucleus &proj, Nucleus &targ) |
| vector< double > | getCollTypeProbs (const vector< double > &T) const |
| Helper function. More... | |
| virtual SigEst | getSig () const override |
| Calculate the cross sections for the given set of parameters. More... | |
Public Member Functions inherited from SubCollisionModel | |
| SubCollisionModel (int nParm) | |
| virtual | ~SubCollisionModel () |
| Virtual destructor. | |
| void | initPtr (NucleusModel &projIn, NucleusModel &targIn, SigmaTotal &sigTotIn, Settings &settingsIn, Info &infoIn, Rndm &rndmIn) |
| Initialize the pointers. | |
| void | initLowEnergy (SigmaCombined *sigmaCombPtrIn) |
| Initialize low energy treatment. | |
| bool | hasXSec () const |
| double | sigTot () const |
| The target total nucleon-nucleon cross section. More... | |
| double | sigEl () const |
| The target elastic cross section. | |
| double | sigCDE () const |
| The target central diffractive excitation cross section. | |
| double | sigSDE () const |
| The target single diffractive excitation cross section (both sides). | |
| double | sigSDEP () const |
| The target single diffractive excitation cross section (projectile). | |
| double | sigSDET () const |
| The target single diffractive excitation cross section (target). | |
| double | sigDDE () const |
| The target double diffractive excitation cross section. | |
| double | sigND () const |
| The target non-diffractive (absorptive) cross section. | |
| double | sigLow () const |
| The Low-energy cross sections. | |
| double | sigLExc () const |
| The Low-energy excitation cross section (code 157). | |
| double | sigLAnn () const |
| The Low-energy annihilation cross section (code 158). | |
| double | sigLRes () const |
| The Low-energy resonant cross section (code 159). | |
| double | bSlope () const |
| The target elastic b-slope parameter. | |
| double | avNDB () const |
| Return the average non-diffractive impact parameter. | |
| void | updateSig (int idAIn, int idBIn, double eCMIn) |
| Update internally stored cross sections. More... | |
| double | Chi2 (const SigEst &sigs, int npar) const |
| Calculate the Chi2 for the given cross section estimates. More... | |
| bool | setKinematics (double eCMIn) |
| Set beam kinematics. More... | |
| bool | setIDA (int idA) |
| Set projectile particle. | |
| bool | evolve (int nGenerations, double eCM, int idANow) |
| Use a genetic algorithm to fit the parameters. More... | |
| int | nParms () const |
| Get the number of free parameters for the model. | |
| void | setParm (const vector< double > &parmIn) |
| Set the parameters of this model. | |
| vector< double > | getParm () const |
| Get the current parameters of this model. | |
| virtual vector< double > | minParm () const =0 |
| Get the minimum allowed parameter values for this model. | |
| virtual vector< double > | defParm () const =0 |
| Get the default parameter values for this model. | |
| virtual vector< double > | maxParm () const =0 |
| Get the maximum allowed parameter values for this model. | |
Protected Member Functions | |
| virtual double | pickRadiusProj () const =0 |
| Pick a radius for the nucleon, depending on the specific model. | |
| virtual double | pickRadiusTarg () const =0 |
Protected Attributes | |
| int | opacityMode |
| Optional mode for opacity. | |
Protected Attributes inherited from SubCollisionModel | |
| vector< double > | sigTarg |
| vector< double > | sigErr |
| vector< vector< double > > | sigTargNN |
| vector< double > | parmSave |
| Saved parameters. | |
| int | NInt |
| int | NPop |
| double | sigFuzz |
| double | impactFudge |
| bool | fitPrint |
| double | eCMlow |
| double | avNDb |
| double | avNDolap |
| NucleusModel * | projPtr = {} |
| Info from the controlling HeavyIons object. | |
| NucleusModel * | targPtr = {} |
| SigmaTotal * | sigTotPtr = {} |
| SigmaCombined * | sigCmbPtr = {} |
| Settings * | settingsPtr = {} |
| Info * | infoPtr = {} |
| Rndm * | rndmPtr = {} |
| Logger * | loggerPtr = {} |
| ParticleData * | particleDataPtr = {} |
| int | idASave |
| For variable energies. | |
| int | idBSave |
| bool | doVarECM |
| bool | doVarBeams |
| double | eMin |
| double | eMax |
| double | eSave |
| int | eCMPts |
| vector< int > | idAList |
| The list of particles that have been fitted. | |
| vector< LogInterpolator > * | subCollParmsPtr |
| map< int, vector< LogInterpolator > > | subCollParmsMap |
| Mapping id -> interpolator, one entry for each particle. | |
| int | elasticMode |
| double | elasticFudge |
| SigmaCache | lowEnergyCache |
Additional Inherited Members | |
Static Public Member Functions inherited from SubCollisionModel | |
| static shared_ptr< SubCollisionModel > | create (int model) |
| Create a new SubCollisionModel of the given model. More... | |
A base class for sub-collision models where each nucleon has a fluctuating "radius". The base model has two parameters, sigd and alpha, which are used for opacity calculations. Subclasses may have additional parameters to describe the radius distributions of that specific model.
Generate radii for all nucleons.
Generate fluctuating radii for the nucleons in the projectile and target nuclei.
Assign two states to each nucleon.
Reimplemented from SubCollisionModel.
|
overridevirtual |
Main function returning the possible sub-collisions.
Take two nuclei and pick specific states for each nucleon, then get the corresponding sub-collisions.
The factorising S-matrix.
Go through all pairs of nucleons
First and most important, check if this is an absorptive scattering.
Now set up calculation for probability of diffractively wounded nucleons.
Finally set up calculation for elastic scattering. This can never be exact, but let's do as well as we can.
Implements SubCollisionModel.
| SubCollisionSet getCollisionsNew | ( | Nucleus & | proj, |
| Nucleus & | targ | ||
| ) |
Main function returning the possible sub-collisions (new version for better reproduction of inelastic cross sections).
The factorising S-matrix.
Probability of no inelastic scattering.
Go through all pairs of nucleons.
Option to include the probability that the nuclei were wounded by elastic NN scatterings. Calculate the overall probability that the AA collision was inelastic (summed over the four state combinations.
Now calculate the probability that there were inelastic NN scatterings, again summed over states.
Shuffle the difference in probabilities (note that it may be negative, so we need a fudge factor) between states and get the share of elastic NN causing inelastic AA for our primary state.
| vector< double > getCollTypeProbs | ( | const vector< double > & | T | ) | const |
Helper function.
Helper function Given 2x2 statistically equivalent elastic amplitudes, shuffle probabilities between them so that the different probabilities for inelastic scattering are above zero and below unity for all four cases.
Return a vector with the probabilities for non-diffractive, double diffractive excitation, single projectile excitation, single target excitation, and elastic, for the main amplitude T11. Also trurn theprobability of inelastic scatterning for the four statistically equivalent amplitudes.
First calculate the differenct dSigma/d2b for the different amplitudes.
Then spread out the summed probabilities for diffractive scatterings in proportion to the available probabilities.
Finally see if there is room for elastic scatterings.
Now everything (except the elastic probability) should be fine.
|
overridevirtual |
Calculate the cross sections for the given set of parameters.
Numerically estimate the NN semi-inclusive cross sections corresponding to the current parameter setting. The radii are sampled each iteration, while the integral over impact parametr is done analytaically
FPE prevention.
The random sampling of radii is a bit time-consuming. If we generate a fair amount of them from start and then randomly pick from them for each iteration, we gain a factor of more than 2 in speed.
First we pick 2x2 statistically independent radii combinations.
Calculate the total cross section.
Calculate the non-diffractive cross section and collect information about corresponding overlap and average impact parameter.
Calculate the elstic cross section.
Calculate the cross sections for wounded projectile and target.
Calculate the doubly diffracted cross section.
Calculate the elastic b-slope.
Normalise everything.
Protect from FPEs.
We don't really know how to calculate central diffraction yet.
Protect from FPEs.
Implements SubCollisionModel.
|
overridevirtual |
Virtual init method.
DoubleStrikman uses a fluctuating and semi-transparent disk for each Nucleon in a sub-collision resulting in a fluctuating interaction probability. To assess the fluctuation each Nucleon has two random states in each collision, one main state and one helper state to assess the fluctuations.
Reimplemented from SubCollisionModel.
1.8.11