PYTHIA
8.312
|
A derived class with 2 -> 2 kinematics set up for diffractive scattering. More...
#include <PhaseSpace.h>
Public Member Functions | |
PhaseSpace2to2diffractive (bool isDiffAin=false, bool isDiffBin=false) | |
Constructor. | |
virtual bool | setupSampling () |
Construct the trial or final event kinematics. More... | |
virtual bool | trialKin (bool inEvent=true, bool=false) |
virtual bool | finalKin () |
Construct the four-vector kinematics from the trial values. More... | |
virtual bool | isResolved () const |
Are beam particles resolved in partons or scatter directly? | |
Public Member Functions inherited from PhaseSpace | |
virtual | ~PhaseSpace () |
Destructor. | |
void | init (bool isFirst, SigmaProcessPtr sigmaProcessPtrIn) |
Perform simple initialization and store pointers. More... | |
void | updateBeamIDs () |
Switch to new beam particle identities; for similar hadrons only. | |
void | newECM (double eCMin) |
Update the CM energy of the event. | |
void | setLHAPtr (LHAupPtr lhaUpPtrIn) |
Store or replace Les Houches pointer. | |
void | decayKinematics (Event &process) |
Allow for nonisotropic decays when ME's available. More... | |
double | sigmaNow () const |
Give back current or maximum cross section, or set latter. | |
double | sigmaMax () const |
double | biasSelectionWeight () const |
bool | newSigmaMax () const |
void | setSigmaMax (double sigmaMaxIn) |
double | sigmaMaxSwitch () |
New value for switched beam identity or energy (for SoftQCD processes). | |
virtual double | sigmaSumSigned () const |
For Les Houches with negative event weight needs. | |
Vec4 | p (int i) const |
Give back constructed four-vectors and known masses. | |
double | m (int i) const |
void | setP (int i, Vec4 pNew) |
Reset the four-momentum. | |
double | ecm () const |
Give back other event properties. | |
double | x1 () const |
double | x2 () const |
double | sHat () const |
double | tHat () const |
double | uHat () const |
double | pTHat () const |
double | thetaHat () const |
double | phiHat () const |
double | runBW3 () const |
double | runBW4 () const |
double | runBW5 () const |
virtual void | rescaleSigma (double) |
virtual void | rescaleMomenta (double) |
virtual double | weightGammaPDFApprox () |
Calculate the weight for over-estimated cross section. | |
virtual void | setGammaKinPtr (GammaKinematics *gammaKinPtrIn) |
Set the GammaKinematics pointer needed for soft photoproduction. | |
Public Member Functions inherited from PhysicsBase | |
void | initInfoPtr (Info &infoPtrIn) |
This function is called from above for physics objects used in a run. More... | |
virtual | ~PhysicsBase () |
Empty virtual destructor. | |
bool | flag (string key) const |
Shorthand to read settings values. | |
int | mode (string key) const |
double | parm (string key) const |
string | word (string key) const |
vector< bool > | fvec (string key) const |
vector< int > | mvec (string key) const |
vector< double > | pvec (string key) const |
vector< string > | wvec (string key) const |
Additional Inherited Members | |
Public Types inherited from PhysicsBase | |
enum | Status { INCOMPLETE = -1, COMPLETE = 0, CONSTRUCTOR_FAILED, INIT_FAILED, LHEF_END, LOWENERGY_FAILED, PROCESSLEVEL_FAILED, PROCESSLEVEL_USERVETO, MERGING_FAILED, PARTONLEVEL_FAILED, PARTONLEVEL_USERVETO, HADRONLEVEL_FAILED, CHECK_FAILED, OTHER_UNPHYSICAL, HEAVYION_FAILED, HADRONLEVEL_USERVETO } |
Enumerate the different status codes the event generation can have. | |
Protected Member Functions inherited from PhaseSpace | |
PhaseSpace () | |
Constructor. | |
void | decayKinematicsStep (Event &process, int iRes) |
Reselect decay products momenta isotropically in phase space. More... | |
void | setup3Body () |
Much common code for normal 2 -> 1, 2 -> 2 and 2 -> 3 cases: More... | |
bool | setupSampling123 (bool is2, bool is3) |
Determine how phase space should be sampled. More... | |
bool | trialKin123 (bool is2, bool is3, bool inEvent=true) |
Select a trial kinematics phase space point. More... | |
bool | limitTau (bool is2, bool is3) |
Calculate kinematical limits for 2 -> 1/2/3. More... | |
bool | limitY () |
Find range of allowed y values. More... | |
bool | limitZ () |
Find range of allowed z = cos(theta) values. More... | |
void | selectTau (int iTau, double tauVal, bool is2) |
Select kinematical variable between defined limits for 2 -> 1/2/3. More... | |
void | selectY (int iY, double yVal) |
Select y according to a choice of shapes. More... | |
void | selectZ (int iZ, double zVal) |
bool | select3Body () |
void | solveSys (int n, int bin[8], double vec[8], double mat[8][8], double coef[8]) |
Solve equation system for better phase space coefficients in 2 -> 1/2/3. More... | |
void | setupMass1 (int iM) |
Setup mass selection for one resonance at a time. Split in two parts. More... | |
void | setupMass2 (int iM, double distToThresh) |
Setup mass selection for one resonance at a time - part 2. More... | |
void | trialMass (int iM) |
Do mass selection and find the associated weight. More... | |
double | weightMass (int iM) |
pair< double, double > | tRange (double sIn, double s1In, double s2In, double s3In, double s4In) |
bool | tInRange (double tIn, double sIn, double s1In, double s2In, double s3In, double s4In) |
Protected Member Functions inherited from PhysicsBase | |
PhysicsBase () | |
Default constructor. | |
virtual void | onInitInfoPtr () |
virtual void | onBeginEvent () |
This function is called in the very beginning of each Pythia::next call. | |
virtual void | onEndEvent (Status) |
virtual void | onStat () |
This function is called from the Pythia::stat() call. | |
void | registerSubObject (PhysicsBase &pb) |
Register a sub object that should have its information in sync with this. | |
Protected Attributes inherited from PhaseSpace | |
SigmaProcessPtr | sigmaProcessPtr |
Pointer to cross section. | |
LHAupPtr | lhaUpPtr |
Pointer to LHAup for generating external events. | |
GammaKinematics * | gammaKinPtr |
Pointer to object that samples photon kinematics from leptons. | |
bool | useBreitWigners |
Initialization data, normally only set once. | |
bool | doEnergySpread |
bool | showSearch |
bool | showViolation |
bool | increaseMaximum |
bool | hasQ2Min |
int | gmZmodeGlobal |
double | mHatGlobalMin |
double | mHatGlobalMax |
double | pTHatGlobalMin |
double | pTHatGlobalMax |
double | Q2GlobalMin |
double | pTHatMinDiverge |
double | minWidthBreitWigners |
double | minWidthNarrowBW |
int | idA |
Information on incoming beams. | |
int | idB |
int | idAold |
int | idBold |
int | idAgm |
int | idBgm |
double | mA |
double | mB |
double | eCM |
double | s |
double | sigmaMxGm |
bool | hasLeptonBeamA |
bool | hasLeptonBeamB |
bool | hasOneLeptonBeam |
bool | hasTwoLeptonBeams |
bool | hasPointGammaA |
bool | hasPointGammaB |
bool | hasOnePointParticle |
bool | hasTwoPointParticles |
bool | hasGamma |
bool | hasVMD |
bool | newSigmaMx |
Cross section information. | |
bool | canModifySigma |
bool | canBiasSelection |
bool | canBias2Sel |
int | gmZmode |
double | bias2SelPow |
double | bias2SelRef |
double | wtBW |
double | sigmaNw |
double | sigmaMx |
double | sigmaPos |
double | sigmaNeg |
double | biasWt |
double | mHatMin |
Process-specific kinematics properties, almost always available. | |
double | mHatMax |
double | sHatMin |
double | sHatMax |
double | pTHatMin |
double | pTHatMax |
double | pT2HatMin |
double | pT2HatMax |
double | x1H |
Event-specific kinematics properties, almost always available. | |
double | x2H |
double | m3 |
double | m4 |
double | m5 |
double | s3 |
double | s4 |
double | s5 |
double | mHat |
double | sH |
double | tH |
double | uH |
double | pAbs |
double | p2Abs |
double | pTH |
double | theta |
double | phi |
double | betaZ |
Vec4 | pH [12] |
double | mH [12] |
int | idResA |
Presence and properties of any s-channel resonances. | |
int | idResB |
double | mResA |
double | mResB |
double | GammaResA |
double | GammaResB |
double | tauResA |
double | tauResB |
double | widResA |
double | widResB |
bool | sameResMass |
bool | useMirrorWeight |
Kinematics properties specific to 2 -> 1/2/3. | |
bool | hasNegZ |
bool | hasPosZ |
double | tau |
double | y |
double | z |
double | tauMin |
double | tauMax |
double | yMax |
double | zMin |
double | zMax |
double | ratio34 |
double | unity34 |
double | zNeg |
double | zPos |
double | wtTau |
double | wtY |
double | wtZ |
double | wt3Body |
double | runBW3H |
double | runBW4H |
double | runBW5H |
double | intTau0 |
double | intTau1 |
double | intTau2 |
double | intTau3 |
double | intTau4 |
double | intTau5 |
double | intTau6 |
double | intY0 |
double | intY12 |
double | intY34 |
double | intY56 |
double | mTchan1 |
double | sTchan1 |
double | mTchan2 |
double | sTchan2 |
double | frac3Flat |
double | frac3Pow1 |
double | frac3Pow2 |
double | zNegMin |
double | zNegMax |
double | zPosMin |
double | zPosMax |
Vec4 | p3cm |
Vec4 | p4cm |
Vec4 | p5cm |
int | nTau |
Coefficients for optimized selection in 2 -> 1/2/3. | |
int | nY |
int | nZ |
double | tauCoef [8] |
double | yCoef [8] |
double | zCoef [8] |
double | tauCoefSum [8] |
double | yCoefSum [8] |
double | zCoefSum [8] |
bool | useBW [6] |
Properties specific to resonance mass selection in 2 -> 2 and 2 -> 3. | |
bool | useNarrowBW [6] |
int | idMass [6] |
double | mPeak [6] |
double | sPeak [6] |
double | mWidth [6] |
double | mMin [6] |
double | mMax [6] |
double | mw [6] |
double | wmRat [6] |
double | mLower [6] |
double | mUpper [6] |
double | sLower [6] |
double | sUpper [6] |
double | fracFlatS [6] |
double | fracFlatM [6] |
double | fracInv [6] |
double | fracInv2 [6] |
double | atanLower [6] |
double | atanUpper [6] |
double | intBW [6] |
double | intFlatS [6] |
double | intFlatM [6] |
double | intInv [6] |
double | intInv2 [6] |
Protected Attributes inherited from PhysicsBase | |
Info * | infoPtr = {} |
Settings * | settingsPtr = {} |
Pointer to the settings database. | |
ParticleData * | particleDataPtr = {} |
Pointer to the particle data table. | |
Logger * | loggerPtr = {} |
Pointer to logger. | |
HadronWidths * | hadronWidthsPtr = {} |
Pointer to the hadron widths data table. | |
Rndm * | rndmPtr = {} |
Pointer to the random number generator. | |
CoupSM * | coupSMPtr = {} |
Pointers to SM and SUSY couplings. | |
CoupSUSY * | coupSUSYPtr = {} |
BeamSetup * | beamSetupPtr = {} |
BeamParticle * | beamAPtr = {} |
BeamParticle * | beamBPtr = {} |
BeamParticle * | beamPomAPtr = {} |
BeamParticle * | beamPomBPtr = {} |
BeamParticle * | beamGamAPtr = {} |
BeamParticle * | beamGamBPtr = {} |
BeamParticle * | beamVMDAPtr = {} |
BeamParticle * | beamVMDBPtr = {} |
PartonSystems * | partonSystemsPtr = {} |
Pointer to information on subcollision parton locations. | |
SigmaTotal * | sigmaTotPtr = {} |
Pointers to the total/elastic/diffractive cross sections. | |
SigmaCombined * | sigmaCmbPtr = {} |
set< PhysicsBase * > | subObjects |
UserHooksPtr | userHooksPtr |
Static Protected Attributes inherited from PhaseSpace | |
static const int | NMAXTRY = 2 |
Constants: could only be changed in the code itself. More... | |
static const int | NTRY3BODY = 20 |
Number of three-body trials in phase space optimization. | |
static const double | SAFETYMARGIN = 1.05 |
Maximum cross section increase, just in case true maximum not found. | |
static const double | TINY = 1e-20 |
Small number to avoid division by zero. | |
static const double | EVENFRAC = 0.4 |
Fraction of total weight that is shared evenly between all shapes. | |
static const double | SAMESIGMA = 1e-6 |
Two cross sections with a small relative error are assumed same. | |
static const double | MRESMINABS = 0.001 |
Do not allow resonance to have mass below 2 m_e. | |
static const double | WIDTHMARGIN = 20. |
Do not include resonances peaked too far outside allowed mass region. | |
static const double | SAMEMASS = 0.01 |
Special optimization treatment when two resonances at almost same mass. | |
static const double | MASSMARGIN = 0.01 |
Minimum phase space left when kinematics constraints are combined. | |
static const double | EXTRABWWTMAX = 1.25 |
When using Breit-Wigners in 2 -> 2 raise maximum weight estimate. | |
static const double | THRESHOLDSIZE = 3. |
Size of Breit-Wigner threshold region, for mass selection biasing. | |
static const double | THRESHOLDSTEP = 0.2 |
Step size in optimal-mass search, for mass selection biasing. | |
static const double | YRANGEMARGIN = 1e-6 |
Minimal rapidity range for allowed open range (in 2 -> 3). | |
static const double | LEPTONXMIN = 1e-10 |
static const double | LEPTONXMAX = 1. - 1e-10 |
static const double | LEPTONXLOGMIN = log(1e-10) |
static const double | LEPTONXLOGMAX = log(1. - 1e-10) |
static const double | LEPTONTAUMIN = 2e-10 |
static const double | SHATMINZ = 1. |
Safety to avoid division with unreasonably small value for z selection. | |
static const double | PT2RATMINZ = 0.0001 |
Regularization for small pT2min in z = cos(theta) selection. | |
static const double | WTCORRECTION [11] |
A derived class with 2 -> 2 kinematics set up for diffractive scattering.
|
virtual |
Construct the four-vector kinematics from the trial values.
Particle masses; incoming always on mass shell.
Incoming particles along beam axes.
Outgoing particles initially along beam axes.
Then rotate them
Set some further info for completeness (but Info can be for subprocess).
Save the sampled photon kinematics.
Done.
Implements PhaseSpace.
|
virtual |
Construct the trial or final event kinematics.
Form of phase space sampling already fixed, so no optimization. However, need to find upper estimate at t = 0.
Flag if photon has a VMD state.
Flag if a photon inside lepton beam.
If not photoproduction, calculate the cross-section estimates directly.
Find maximum = value of cross section.
For photoproduction calculate the estimates for photon-hadron system.
Total cross section using a photon instead of the actual beam.
Zero mass for photons from lepton beam.
Use the correct diffractive cross section for overestimate.
Save the maximum value.
Masses of particles and minimal masses of diffractive states. COR: Take VMD states into account already here, because of maximal cross section calculation below. Minimal VMD mass is the rho mass.
Initial kinematics value.
Scenarios with separate handling of xi and t (currently only MBR). Step 0 = both xi and t, 1 = xi only, 2 = t only.
Find maximal cross section xi * dsigma / (dxi dt) at t = 0.
Find maximal cross section xi1 * xi2 * dsigma / (dxi1 dxi2 dt) at t = 0.
Combinations of t sampling parameters.
Done.
Implements PhaseSpace.
|
virtual |
Select a trial kinematics phase space point. Perform full Monte Carlo acceptance/rejection at this stage.
Allow the possibility that incoming beam particles are switched.
Allow for possibility that energy varies from event to event.
Reset cross section machinery to new conditions.
Sample kinematics for gamma+gamma(hadron) sub-event and reject to account for over sampling.
Current weight.
Sample gamma kinematics.
Calculate the cross sections with invariant mass of the sub-system.
Correct for the over-estimated sigmaZZ.
Calculate the total weight and warn if unphysical weight.
Correct for over-estimated cross section and x_gamma limits.
For accepted kinematics use the sub-collision energy.
Sample VMD states with possibly different CM energy.
Find the diffractive process.
Sampled VM states.
Now choose proper VMD mass. Special handling for minimal diffractive mass for J/Psi as we require at least two D-mesons to be produced by string breaking.
Normally xi and t in one step, but possible to split into two.
Loop over attempts to set up masses and t consistently.
Select diffractive mass(es) according to dm^2/m^2. COR change from mA -> mAtmp?
Select t according to exp(b*t), b picked among four options.
Check whether m^2 and t choices are consistent.
Evaluate single or double diffractive cross section.
Maximum weight based on sampling strategy.
Check for maximum violations. Possibly break out of the loop.
End of loops over tries and steps.
Careful reconstruction of scattering angle.
Done.
Implements PhaseSpace.