PYTHIA
8.312
|
A derived class with information read from a Les Houches Event File. More...
#include <LesHouches.h>
Public Member Functions | |
LHAupLHEF (Pythia8::Info *infoPtrIn, istream *isIn, istream *isHeadIn, bool readHeadersIn=false, bool setScalesFromLHEFIn=false) | |
Constructor. | |
LHAupLHEF (Pythia8::Info *infoPtrIn, const char *filenameIn, const char *headerIn=nullptr, bool readHeadersIn=false, bool setScalesFromLHEFIn=false) | |
~LHAupLHEF () | |
Destructor. More... | |
void | closeAllFiles () |
Helper routine to correctly close files. More... | |
void | newEventFile (const char *filenameIn) |
Want to use new file with events, but without reinitialization. More... | |
bool | fileFound () |
Confirm that file was found and opened as expected. | |
bool | useExternal () |
bool | setInit () |
Routine for doing the job of reading and setting initialization info. | |
bool | setInitLHEF (istream &isIn, bool readHead) |
Routine for doing the job of reading and setting initialization info. More... | |
bool | setEvent (int=0) |
Routine for doing the job of reading and setting info on next event. | |
bool | skipEvent (int nSkip) |
Skip ahead a number of events, which are not considered further. | |
bool | setNewEventLHEF () |
Routine for doing the job of reading and setting info on next event. More... | |
bool | updateSigma () |
Update cross-section information at the end of the run. | |
Public Member Functions inherited from LHAup | |
virtual | ~LHAup () |
Destructor. | |
void | setPtr (Info *infoPtrIn) |
Set pointers. | |
int | idBeamA () const |
Give back info on beams. | |
int | idBeamB () const |
double | eBeamA () const |
double | eBeamB () const |
int | pdfGroupBeamA () const |
int | pdfGroupBeamB () const |
int | pdfSetBeamA () const |
int | pdfSetBeamB () const |
int | strategy () const |
Give back weight strategy. | |
int | sizeProc () const |
Give back info on processes. | |
int | idProcess (int proc) const |
double | xSec (int proc) const |
double | xErr (int proc) const |
double | xMax (int proc) const |
double | xSecSum () const |
double | xErrSum () const |
void | listInit () |
Print the initialization info; useful to check that setting it worked. More... | |
int | idProcess () const |
Give back process number, weight, scale, alpha_em, alpha_s. | |
double | weight () const |
double | scale () const |
double | alphaQED () const |
double | alphaQCD () const |
int | sizePart () const |
Give back info on separate particle. | |
int | id (int part) const |
int | status (int part) const |
int | mother1 (int part) const |
int | mother2 (int part) const |
int | col1 (int part) const |
int | col2 (int part) const |
double | px (int part) const |
double | py (int part) const |
double | pz (int part) const |
double | e (int part) const |
double | m (int part) const |
double | tau (int part) const |
double | spin (int part) const |
double | scale (int part) const |
int | id1 () const |
Give back info on flavour and x values of hard-process initiators. | |
int | id2 () const |
double | x1 () const |
double | x2 () const |
bool | pdfIsSet () const |
Optional: give back info on parton density values of event. | |
int | id1pdf () const |
int | id2pdf () const |
double | x1pdf () const |
double | x2pdf () const |
double | scalePDF () const |
double | pdf1 () const |
double | pdf2 () const |
bool | scaleShowersIsSet () const |
Optional: give back info on parton shower scales. | |
double | scaleShowers (int i) const |
void | listEvent () |
Print the info; useful to check that reading an event worked. More... | |
virtual bool | openLHEF (string fileNameIn) |
Four routines to write a Les Houches Event file in steps. More... | |
virtual bool | closeLHEF (bool updateInit=false) |
Write end of a Les Houches Event File and close it. More... | |
bool | initLHEF () |
Write initialization information to a Les Houches Event File. More... | |
bool | eventLHEF (bool verbose=true) |
string | getFileName () const |
Get access to the Les Houches Event file name. | |
Protected Member Functions | |
bool | getLine (string &line, bool header=true) |
Used internally to read a single line from the stream. More... | |
Protected Member Functions inherited from LHAup | |
LHAup (int strategyIn=3) | |
Constructor. Sets default to be that events come with unit weight. | |
void | setBeamA (int idIn, double eIn, int pdfGroupIn=0, int pdfSetIn=0) |
Input beam info. | |
void | setBeamB (int idIn, double eIn, int pdfGroupIn=0, int pdfSetIn=0) |
void | setStrategy (int strategyIn) |
Input process weight strategy. | |
void | addProcess (int idProcIn, double xSecIn=1., double xErrIn=0., double xMaxIn=1.) |
Input process info. | |
void | setXSec (int iP, double xSecIn) |
Possibility to update some cross section info at end of run. | |
void | setXErr (int iP, double xErrIn) |
void | setXMax (int iP, double xMaxIn) |
void | setProcess (int idProcIn=0, double weightIn=1., double scaleIn=0., double alphaQEDIn=0.0073, double alphaQCDIn=0.12) |
Input info on the selected process. More... | |
void | addParticle (LHAParticle particleIn) |
Input particle info, one particle at the time. | |
void | addParticle (int idIn, int statusIn=0, int mother1In=0, int mother2In=0, int col1In=0, int col2In=0, double pxIn=0., double pyIn=0., double pzIn=0., double eIn=0., double mIn=0., double tauIn=0., double spinIn=9., double scaleIn=-1.) |
void | setIdX (int id1In, int id2In, double x1In, double x2In) |
Input info on flavour and x values of hard-process initiators. | |
void | setPdf (int id1pdfIn, int id2pdfIn, double x1pdfIn, double x2pdfIn, double scalePDFIn, double pdf1In, double pdf2In, bool pdfIsSetIn) |
Optionally input info on parton density values of event. | |
void | setScaleShowers (double scaleIn1, double scaleIn2=0.) |
Optionally input info on parton shower starting scale; two for DPS. | |
bool | setInitLHEF (istream &is, bool readHeaders=false) |
Three routines for LHEF files, but put here for flexibility. More... | |
bool | setNewEventLHEF (istream &is) |
bool | setOldEventLHEF () |
Make current event information read in by setNewEventLHEF. More... | |
istream * | openFile (const char *fn, ifstream &ifs) |
void | closeFile (istream *&is, ifstream &ifs) |
void | setInfoHeader (const string &key, const string &val) |
Additional Inherited Members | |
Protected Attributes inherited from LHAup | |
Info * | infoPtr |
Pointer to various information on the generation. | |
Logger * | loggerPtr |
int | nupSave |
Event properties from LHEF files, for repeated use. | |
int | idprupSave |
double | xwgtupSave |
double | scalupSave |
double | aqedupSave |
double | aqcdupSave |
double | xSecSumSave |
double | xErrSumSave |
vector< LHAParticle > | particlesSave |
bool | getPDFSave |
bool | getScale |
bool | getScaleShowers |
int | id1InSave |
int | id2InSave |
int | id1pdfInSave |
int | id2pdfInSave |
double | x1InSave |
double | x2InSave |
double | x1pdfInSave |
double | x2pdfInSave |
double | scalePDFInSave |
double | pdf1InSave |
double | pdf2InSave |
double | scaleShowersInSave [2] |
string | fileName |
File to which to write Les Houches Event File information. | |
fstream | osLHEF |
char | dateNow [12] |
char | timeNow [9] |
Static Protected Attributes inherited from LHAup | |
static const double | CONVERTMB2PB = 1e9 |
Allow conversion from mb to pb. More... | |
A derived class with information read from a Les Houches Event File.
|
inline |
Destructor.
Close files
|
inline |
Helper routine to correctly close files.
Close header file if separate, and close main file.
|
inlineprotected |
Used internally to read a single line from the stream.
Replace single by double quotes
|
inlinevirtual |
Want to use new file with events, but without reinitialization.
Close files and then open new file.
Re-initialise Les Houches file reader.
Set isHead to is to keep expected behaviour in fileFound() and closeAllFiles().
Reimplemented from LHAup.
bool setInitLHEF | ( | istream & | isIn, |
bool | readHead | ||
) |
Routine for doing the job of reading and setting initialization info.
LHAupLHEF class.
Routine for doing the job of reading and setting initialization info.
Done if there was a problem with initialising the reader
Construct header information (stored in comments strings or optional header file), so that reading of headers is possible.
Check that first line is consistent with proper LHEF file.
What to search for if reading headers; if not reading headers then return to default behaviour
Loop over lines until an <init (or optionally <header>) tag is found first on a line.
If header tag found, process if required
Temporary local storage
Loop over lines until an <init> tag is found.
Tell XML parser to ignore comment and CDATA blocks If we are currently inside a comment block, check for block end
If the comment block did not end on this line, skip to next line
Check for beginning of comment blocks (parse until comment begins)
Check for beginning of CDATA statement (parse until CDATA begins)
Break lines containing multiple tags into two segments. (Could be generalized to multiple segments but this is sufficient to handle at least <tag>info</tag> on same line.
Loop over segments of current line
Clean line to contain only valid characters
Check for empty line
PZS Jan 2015: Allow multiple open/close tags on a single line.
Update remainder (non-tag) part of line, for later storage
Only take the first word of the tag,
Prepare for next while iteration: Look for next tag on line and update posBeg and posEnd.
Tag present, so handle here
Exit condition
End of header block; keep reading until <init> tag, but do not store any further information
Opening tag
Closing tag that matches current key
Also check for forgotten close tag: next-to-last element
if (getfirst)
Loop over tags
Exit condition
At this point the (rest of) the line is not a tag; If no longer reading anything, skip.
Check for key change
Check if anything remains to store of this line
Append information to local storage
Loop over line segments
Exit condition
while (true)
Copy information to info using LHAup::setInfoHeader
if (readHead == true && tag == headerTag)
Extract beam and strategy info, and store it.
Read in process info, one process at a time, and store it.
Now extract LHEF 2.0/3.0 novelties.
Reading worked.
bool setNewEventLHEF | ( | ) |
Routine for doing the job of reading and setting info on next event.
Done if the reader finished preemptively.
Extract process info and store it.
Reset particlesSave vector, add slot-0 empty particle.
Read in particle info one by one, and store it. Note unusual C++ loop range, to better reflect LHA/Fortran standard. (Recall that process(...) above added empty particle at index 0.)
Extract information stored in reader.
Flavour and x values of hard-process initiators.
Parse event comments and look for optional info on the way.
Extract PDF info if present.
Extract shower scales info if present.
Extract scale info if present.
Set production scales from <scales> tag.
Reset scalup, to avoid using a too strict constraint on emissions when multiple scales are present.
Find the particle for which this scale applies.
Set production scales of final and initial particles to the minimal input scale found for the particle.
Need id and x values even when no PDF info. Rest empty.
Now extract LHEF 2.0/3.0 novelties.
Set everything for 2.0 and 3.0
Try to at least set the event attributes for 1.0
Reading worked.