PYTHIA  8.312
Public Member Functions | Protected Member Functions | List of all members
LHAupLHEF Class Reference

A derived class with information read from a Les Houches Event File. More...

#include <LesHouches.h>

Inheritance diagram for LHAupLHEF:
LHAup

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
InfoinfoPtr
 Pointer to various information on the generation.
 
LoggerloggerPtr
 
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< LHAParticleparticlesSave
 
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...
 

Detailed Description

A derived class with information read from a Les Houches Event File.

Constructor & Destructor Documentation

~LHAupLHEF ( )
inline

Destructor.

Close files

Member Function Documentation

void closeAllFiles ( )
inline

Helper routine to correctly close files.

Close header file if separate, and close main file.

bool getLine ( string &  line,
bool  header = true 
)
inlineprotected

Used internally to read a single line from the stream.

Replace single by double quotes

void newEventFile ( const char *  filenameIn)
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.


The documentation for this class was generated from the following files: