9 #ifndef Pythia8_BeamSetup_H 10 #define Pythia8_BeamSetup_H 12 #include "Pythia8/Basics.h" 13 #include "Pythia8/BeamParticle.h" 14 #include "Pythia8/BeamShape.h" 15 #include "Pythia8/HadronLevel.h" 16 #include "Pythia8/Info.h" 17 #include "Pythia8/LesHouches.h" 18 #include "Pythia8/ParticleData.h" 19 #include "Pythia8/PartonDistributions.h" 20 #include "Pythia8/PartonLevel.h" 21 #include "Pythia8/PhysicsBase.h" 22 #include "Pythia8/ProcessLevel.h" 23 #include "Pythia8/PythiaStdlib.h" 24 #include "Pythia8/Settings.h" 39 beamAPtr = make_shared<BeamParticle>();
40 beamBPtr = make_shared<BeamParticle>();
42 beamPomBPtr = make_shared<BeamParticle>();
44 beamGamBPtr = make_shared<BeamParticle>();
46 beamVMDBPtr = make_shared<BeamParticle>();
50 bool setPDFPtr( PDFPtr pdfAPtrIn, PDFPtr pdfBPtrIn,
51 PDFPtr pdfHardAPtrIn =
nullptr, PDFPtr pdfHardBPtrIn =
nullptr,
52 PDFPtr pdfPomAPtrIn =
nullptr, PDFPtr pdfPomBPtrIn =
nullptr,
53 PDFPtr pdfGamAPtrIn =
nullptr, PDFPtr pdfGamBPtrIn =
nullptr,
54 PDFPtr pdfHardGamAPtrIn =
nullptr, PDFPtr pdfHardGamBPtrIn =
nullptr,
55 PDFPtr pdfUnresAPtrIn =
nullptr, PDFPtr pdfUnresBPtrIn =
nullptr,
56 PDFPtr pdfUnresGamAPtrIn =
nullptr, PDFPtr pdfUnresGamBPtrIn =
nullptr,
57 PDFPtr pdfVMDAPtrIn =
nullptr, PDFPtr pdfVMDBPtrIn =
nullptr);
63 if ( photonFluxAIn ) pdfGamFluxAPtr = photonFluxAIn;
64 if ( photonFluxBIn ) pdfGamFluxBPtr = photonFluxBIn;
68 bool setLHAupPtr( LHAupPtr lhaUpPtrIn) {lhaUpPtr = lhaUpPtrIn;
69 useNewLHA =
false;
return true;}
82 double pxBIn,
double pyBIn,
double pzBIn);
87 beamShapePtr = beamShapePtrIn;
return true;}
93 PDFPtr
getPDFPtr(
int idIn,
int sequence = 1,
string beam =
"A",
94 bool resolved =
true);
107 bool getVMDsideB() {
return doVMDsideB; }
126 bool doLHA =
false, useNewLHA =
false, skipInit =
false,
127 doMomentumSpread = {}, doVertexSpread = {}, doVarEcm = {},
128 allowIDAswitch = {}, hasSwitchedIDs = {}, beamA2gamma = {},
130 int idA = {}, idB = {}, frameType = {}, boostType = {}, iPDFAsave = {},
132 double mA = {}, mB = {}, pxA = {}, pxB = {}, pyA = {}, pyB = {}, pzA = {},
133 pzB = {}, eA = {}, eB = {}, pzAcm = {}, pzBcm = {}, eCM = {},
134 betaZ = {}, gammaZ = {};
135 Vec4 pAinit = {}, pBinit = {}, pAnow = {}, pBnow = {};
137 LHAupPtr lhaUpPtr = {};
141 BeamParticlePtr beamBPtr = {};
145 BeamParticlePtr beamPomBPtr = {};
149 BeamParticlePtr beamGamBPtr = {};
153 BeamParticlePtr beamVMDBPtr = {};
157 331, 333, 411, 431, 443, 511, 531, 541, 553, 3212, 3312, 3334,
158 4112, 4312, 4332, 5112, 5312, 5332};
176 bool doNonPert = {}, doDiffraction = {}, doSoftQCD = {},
177 doHardDiff = {}, doProcessLevel = {}, doPartonVertex = {},
178 doVertexPlane = {}, isUnresolvedA = {}, isUnresolvedB = {},
179 doVMDsideA = {}, doVMDsideB = {}, beamAResGamma = {},
180 beamBResGamma = {}, beamAUnresGamma = {}, beamBUnresGamma = {};
183 PDFPtr pdfAPtr = {}, pdfBPtr = {}, pdfHardAPtr = {}, pdfHardBPtr = {},
184 pdfPomAPtr = {}, pdfPomBPtr = {}, pdfGamAPtr = {}, pdfGamBPtr = {},
185 pdfHardGamAPtr = {}, pdfHardGamBPtr = {}, pdfUnresAPtr = {},
186 pdfUnresBPtr = {}, pdfUnresGamAPtr = {}, pdfUnresGamBPtr = {},
187 pdfGamFluxAPtr = {}, pdfGamFluxBPtr = {}, pdfVMDAPtr = {},
191 vector<PDFPtr> pdfASavePtrs = {};
194 BeamShapePtr beamShapePtr = {};
200 bool initKinematics();
206 PDFPtr initLHAPDF(
int idIn,
string cfg);
bool setPDFAPtr(PDFPtr pdfAPtrIn)
Routine to pass in pointers to PDF's. Usage optional.
Definition: BeamSetup.cc:105
Definition: PhysicsBase.h:27
void registerSubObject(PhysicsBase &pb)
Register a sub object that should have its information in sync with this.
Definition: PhysicsBase.cc:56
Definition: BeamSetup.h:33
void newValenceContent()
Pick new beam valence flavours (for pi0, eta, K0S, Pomeron, etc.).
Definition: BeamSetup.cc:618
The Event class holds all info on the generated event.
Definition: Event.h:408
bool setKinematics(double eCMIn)
Switch beam kinematics.
Definition: BeamSetup.cc:258
bool setPhotonFluxPtr(PDFPtr photonFluxAIn, PDFPtr photonFluxBIn)
Set photon fluxes externally. Used with option "PDF:lepton2gammaSet = 2".
Definition: BeamSetup.h:62
void clear()
Clear all beams.
Definition: BeamSetup.cc:603
BeamParticlePtr beamAPtr
The two incoming beams.
Definition: BeamSetup.h:140
void onInitInfoPtr() override
Definition: BeamSetup.h:162
bool setPDFPtr(PDFPtr pdfAPtrIn, PDFPtr pdfBPtrIn, PDFPtr pdfHardAPtrIn=nullptr, PDFPtr pdfHardBPtrIn=nullptr, PDFPtr pdfPomAPtrIn=nullptr, PDFPtr pdfPomBPtrIn=nullptr, PDFPtr pdfGamAPtrIn=nullptr, PDFPtr pdfGamBPtrIn=nullptr, PDFPtr pdfHardGamAPtrIn=nullptr, PDFPtr pdfHardGamBPtrIn=nullptr, PDFPtr pdfUnresAPtrIn=nullptr, PDFPtr pdfUnresBPtrIn=nullptr, PDFPtr pdfUnresGamAPtrIn=nullptr, PDFPtr pdfUnresGamBPtrIn=nullptr, PDFPtr pdfVMDAPtrIn=nullptr, PDFPtr pdfVMDBPtrIn=nullptr)
Possibility to pass in pointers to PDF's.
Definition: BeamSetup.cc:21
bool initFrame()
Set up frame of beams, Les Houches input, and switches for beam handling.
Definition: BeamSetup.cc:342
bool doLHA
Some data values are kept public so that the Pythia class can access them.
Definition: BeamSetup.h:126
BeamSetup()
Constructor.
Definition: BeamSetup.h:38
map< string, PDFPtr > getPDFPtr()
Return a map of the PDF pointers.
Definition: BeamSetup.cc:1600
bool setBeamIDs(int idAin, int idBin=0)
Switch to new beam particle identities; for similar hadrons only.
Definition: BeamSetup.cc:180
bool setLHAupPtr(LHAupPtr lhaUpPtrIn)
Possibility to pass in pointer to external LHA-interfaced generator.
Definition: BeamSetup.h:68
bool getVMDsideA()
Return whether VMD states sampled.
Definition: BeamSetup.h:106
void list() const
Print parton lists for the main beams. For debug mainly.
Definition: BeamSetup.h:123
bool initBeams(bool doNonPertIn, StringFlav *flavSelPtr)
Initialize kinematics and PDFs of beams.
Definition: BeamSetup.cc:506
BeamParticlePtr beamVMDAPtr
Alternative VMD beam-inside-beam.
Definition: BeamSetup.h:152
bool setPDFBPtr(PDFPtr pdfBPtrIn)
Routine to pass in pointers to PDF's. Usage optional.
Definition: BeamSetup.cc:129
int represent(int idIn) const
Definition: BeamSetup.cc:151
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
The StringFlav class is used to select quark and hadron flavours.
Definition: FragmentationFlavZpT.h:87
BeamShapePtr getBeamShapePtr()
Possibility to access the pointer to the BeamShape object.
Definition: BeamSetup.h:90
vector< int > idAList
Hadron types for rapid switching.
Definition: BeamSetup.h:156
void boostAndVertex(Event &process, Event &event, bool toLab, bool setVertex)
Boost from CM frame to lab frame, or inverse. Set production vertex.
Definition: BeamSetup.cc:702
BeamParticlePtr beamGamAPtr
Alternative photon beam-inside-beam.
Definition: BeamSetup.h:148
bool setBeamShapePtr(BeamShapePtr beamShapePtrIn)
Possibility to pass in pointer for beam shape.
Definition: BeamSetup.h:86
BeamParticlePtr beamPomAPtr
Alternative Pomeron beam-inside-beam.
Definition: BeamSetup.h:144
void nextKinematics()
Recalculate kinematics for each event when beam momentum has a spread.
Definition: BeamSetup.cc:633