ThePEG::LesHouchesReader Class Reference

LesHouchesReader is an abstract base class to be used for objects which reads event files or streams from matrix element generators. More...

#include <LesHouchesReader.h>

Inheritance diagram for ThePEG::LesHouchesReader:

ThePEG::HandlerBase ThePEG::LastXCombInfo< XC > ThePEG::HandlerBaseT< T > ThePEG::Interfaced ThePEG::InterfacedBase ThePEG::Base ThePEG::Named ThePEG::Pointer::ReferenceCounted ThePEG::LesHouchesFileReader ThePEG::MadGraphReader

List of all members.

Access information about the current event.

double eventWeight () const
 The current event weight given by XWGTUP times possible reweighting.
const PBIPairpartonBinInstances () const
 The pair of PartonBinInstance objects describing the current incoming partons in the event.
const PPairbeams () const
 Return the instances of the beam particles for the current event.
const PPairincoming () const
 Return the instances of the incoming particles to the sub process for the current event.
const PVectoroutgoing () const
 Return the instances of the outgoing particles from the sub process for the current event.
const PVectorintermediates () const
 Return the instances of the intermediate particles in the sub process for the current event.
int maxMultCKKW () const
 If this reader is to be used (possibly together with others) for CKKW reweighting and veto, this should give the multiplicity of outgoing particles in the highest multiplicity matrix element in the group.
int minMultCKKW () const
 If this reader is to be used (possibly together with others) for CKKW reweighting and veto, this should give the multiplicity of outgoing particles in the lowest multiplicity matrix element in the group.
static size_t eventSize (int N)
 Return the size of this event in bytes.

Functions for manipulating cache files.

string cacheFileName () const
 Name of file used to cache the events form the reader in a fast-readable form.
bool cutEarly () const
 Determines whether to apply cuts to events converting them to ThePEG format.
CFile cacheFile () const
 File stream for the cache.
void openReadCacheFile ()
 Open the cache file for reading.
void openWriteCacheFile ()
 Open the cache file for writing.
void closeCacheFile ()
 Close the cache file;.
bool compressedCache () const
 Returns true if the cache file is compressed.
void cacheEvent () const
 Write the current event to the cache file.
bool uncacheEvent ()
 Read an event from the cache file.
void reopen ()
 Reopen a reader.
template<typename T>
static char * mwrite (char *pos, const T &t, size_t n=1)
 Helper function to write a variable to a memory location.
template<typename T>
static const char * mread (const char *pos, T &t, size_t n=1)
 Helper function to read a variable from a memory location.

Public Member Functions

Standard constructors and destructors.
 LesHouchesReader (bool active=false)
 Default constructor.
 LesHouchesReader (const LesHouchesReader &)
 Copy-constructor.
virtual ~LesHouchesReader ()
 Destructor.
Main virtual fuctions to be overridden in
sub-classes.

They are named as if we are reading from event files, but could equally well implement the actual generation of events.

virtual void open ()=0
 Open a file or stream with events and read in the run information into the heprup variable.
virtual bool doReadEvent ()=0
 Read the next event from the file or stream into the corresponding protected variables.
virtual void close ()=0
 Close the file or stream from which events have been read.
Other important function which may be overridden in
sub-classes which wants to bypass the basic HEPRUP or HEPEUP variables or otherwise facilitate the conversion to ThePEG objects.

virtual void initialize (LesHouchesEventHandler &eh)
 Initialize.
virtual double getEvent ()
 Calls readEvent() or uncacheEvent() to read information into the LesHouches common block variables.
virtual bool readEvent ()
 Calls doReadEvent() and performs pre-defined reweightings.
virtual void skip (long n)
 Skip n events.
tXCombPtr getXComb ()
 Get an XComb object.
tSubProPtr getSubProcess ()
 Get a SubProcess object corresponding to the information in the Les Houches common block variables.
virtual long scan ()
 Scan the file or stream to obtain information about cross section weights and particles etc.
virtual void initStat ()
 Take the information corresponding to the HEPRUP common block and initialize the statistics for this reader.
double reweight ()
 Reweights the current event using the reweights and preweights vectors.
virtual void fillEvent ()
 Converts the information in the Les Houches common block variables into a Particle objects.
void reset ()
 Removes the particles created in the last generated event, preparing to produce a new one.
virtual void setWeightScale (long neve)
 Possibility for subclasses to recover from non-conformant settings of XMAXUP when an event file has been scanned with neve events.
Other inlined access functions.
long NEvents () const
 The number of events found in this reader.
long currentPosition () const
 The number of events produced so far.
long maxScan () const
 The maximum number of events to scan to collect information about processes and cross sections.
bool active () const
 Return true if this reader is active.
bool negativeWeights () const
 True if negative weights may be produced.
const XSecStatxSecStats () const
 The collected cross section statistics for this reader.
const StatMapprocessStats () const
 Collected statistics about the individual processes.
void select (double weight)
 Select the current event.
void accept ()
 Accept the current event assuming it was previously selcted.
void reject (double w)
 Reject the current event assuming it was previously accepted.
virtual void increaseMaxXSec (CrossSection maxxsec)
 Increase the overestimated cross section for this reader.
tPExtrPtr partonExtractor () const
 The PartonExtractor object used to construct remnants.
tCascHdlPtr CKKWHandler () const
 Return a possibly null pointer to a CascadeHandler to be used for CKKW-reweighting.
const PartonPairVecpartonBins () const
 The pairs of PartonBin objects describing the partons which can be extracted by the PartonExtractor object.
const XCombMapxCombs () const
 The map of XComb objects indexed by the corresponding PartonBin pair.
const Cutscuts () const
 The Cuts object to be used for this reader.
Functions used by the persistent I/O system.
void persistentOutput (PersistentOStream &os) const
 Function used to write out object persistently.
void persistentInput (PersistentIStream &is, int version)
 Function used to read in object persistently.

Static Public Member Functions

static void Init ()
 Standard Init function used to initialize the interfaces.

Protected Member Functions

Auxilliary virtual methods which may be verridden by sub-classes.
virtual bool checkPartonBin ()
 Check the existence of a pair of PartonBin objects corresponding to the current event.
virtual void createParticles ()
 Create instances of all particles in the event and store them in particleIndex.
virtual tcPBPair createPartonBinInstances ()
 Using the already created particles create a pair of PartonBinInstance objects corresponding to the incoming partons.
virtual void createBeams ()
 Create instances of the incoming beams in the event and store them in particleIndex.
virtual void connectMothers ()
 Go through the mother indices and connect up the Particles.
Set functions for some variables not in the Les Houches accord.
void NEvents (long x)
 The number of events in this reader.
XCombMapxCombs ()
 The map of XComb objects indexed by the corresponding PartonBin pair.
Standard (and non-standard) Interfaced functions.
virtual void doinit ()
 Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual void doinitrun ()
 Initialize this object.
virtual void dofinish ()
 Finalize this object.
virtual bool preInitialize () const
 Return true if this object needs to be initialized before all other objects because it needs to extract PDFs from the event file.
virtual void initPDFs ()
 Called from doinit() to extract PDFs from the event file and add the corresponding objects to the current EventGenerator.

Protected Attributes

HEPRUP heprup
 The HEPRUP common block.
HEPEUP hepeup
 The HEPEUP common block.
tcPDPair inData
 The ParticleData objects corresponding to the incoming particles.
pair< PDFPtr, PDFPtrinPDF
 The PDFBase objects which has been used for the beam particle when generating the events being read.
pair< cPDFPtr, cPDFPtroutPDF
 The PDFBase object to be used in the subsequent generation.
PExtrPtr thePartonExtractor
 The PartonExtractor object used to construct remnants.
tCascHdlPtr theCKKW
 A pointer to a CascadeHandler to be used for CKKW-reweighting.
PartonPairVec thePartonBins
 The pairs of PartonBin objects describing the partons which can be extracted by the PartonExtractor object.
XCombMap theXCombs
 The map of XComb objects indexed by the corresponding PartonBin pair.
CutsPtr theCuts
 The Cuts object to be used for this reader.
long theNEvents
 The number of events in this reader.
long position
 The number of events produced by this reader so far.
int reopened
 The number of times this reader has been reopened.
long theMaxScan
 The maximum number of events to scan to collect information about processes and cross sections.
bool scanning
 Flag to tell whether we are in the process of scanning.
bool isActive
 True if this is an active reader.
string theCacheFileName
 Name of file used to cache the events form the reader in a fast-readable form.
bool doCutEarly
 Determines whether to apply cuts to events before converting them to ThePEG format.
XSecStat stats
 Collect statistics for this reader.
StatMap statmap
 Collect statistics for each individual process.
PBIPair thePartonBinInstances
 The pair of PartonBinInstance objects describing the current incoming partons in the event.
ObjectIndexer< long, ColourLinecolourIndex
 Association between ColourLines and colour indices in the current translation.
ObjectIndexer< long, ParticleparticleIndex
 Association between Particles and indices in the current translation.
PPair theBeams
 The instances of the beam particles for the current event.
PPair theIncoming
 The instances of the incoming particles to the sub process for the current event.
PVector theOutgoing
 The instances of the outgoing particles from the sub process for the current event.
PVector theIntermediates
 The instances of the intermediate particles in the sub process for the current event.
CFile theCacheFile
 File stream for the cache.
ReweightVector reweights
 The reweight objects modifying the weights of this reader.
ReweightVector preweights
 The preweight objects modifying the weights of this reader.
double preweight
 The factor with which this reader was last pre-weighted.
bool reweightPDF
 Should the event be reweighted by PDFs used by the PartonExtractor?
bool doInitPDFs
 Should PDFBase objects be constructed from the information in the event file in the initialization?
int theMaxMultCKKW
 If this reader is to be used (possibly together with others) for CKKW reweighting and veto, this should give the multiplicity of outgoing particles in the highest multiplicity matrix element in the group.
int theMinMultCKKW
 If this reader is to be used (possibly together with others) for CKKW reweighting and veto, this should give the multiplicity of outgoing particles in the lowest multiplicity matrix element in the group.
double lastweight
 The weight multiplying the last read event due to PDF reweighting, CKKW reweighting or assigned reweight and preweight objects.
double maxFactor
 If the maximum cross section of this reader has been increased with increaseMaxXSec(), this is the total factor with which it has been increased.
CrossSection weightScale
 The (reweighted) XWGTUP value should be scaled with this cross section when compared to the overestimated cross section.
vector< double > xSecWeights
 Individual scales for different sub-processes if reweighted.
map< int, double > maxWeights
 Individual maximum weights for individual (possibly reweighted) processes.
bool skipping
 Is set to true when getEvent() is called from skip(int).
unsigned int theMomentumTreatment
 Option for the treatment of the momenta supplied.
bool useWeightWarnings
 Set to true if warnings about possible weight incompatibilities should be issued.

Private Types

typedef FILE * CFile
 Alias for standard C file streams.
typedef map< int, XSecStatStatMap
 Map for accumulating statistics of cross sections per process number.
typedef map< tcPBPair, XCombPtrXCombMap
 Map of XComb objects describing the incoming partons indexed by the corresponding PartonBin pair.
typedef vector< ReweightPtrReweightVector
 A vector of pointers to ReweightBase objects.

Private Member Functions

void setBeamA (long id)
 Access function for the interface.
long getBeamA () const
 Access function for the interface.
void setBeamB (long id)
 Access function for the interface.
long getBeamB () const
 Access function for the interface.
void setEBeamA (Energy e)
 Access function for the interface.
Energy getEBeamA () const
 Access function for the interface.
void setEBeamB (Energy e)
 Access function for the interface.
Energy getEBeamB () const
 Access function for the interface.
void setPDFA (PDFPtr)
 Access function for the interface.
PDFPtr getPDFA () const
 Access function for the interface.
void setPDFB (PDFPtr)
 Access function for the interface.
PDFPtr getPDFB () const
 Access function for the interface.
LesHouchesReaderoperator= (const LesHouchesReader &)
 Private and non-existent assignment operator.

Static Private Attributes

static
AbstractClassDescription
< LesHouchesReader
initLesHouchesReader
 Describe an abstract base class with persistent data.

Friends

class LesHouchesEventHandler
 LesHouchesEventHandler should have access to our private parts.


Detailed Description

LesHouchesReader is an abstract base class to be used for objects which reads event files or streams from matrix element generators.

Derived classes must at least implement the open() and doReadEvent() methods to read in information about the whole run into the HEPRUP variable and next event into the HEPEUP variable respectively. Also the close() function to close the file or stream read must be implemented. Although these functions are named as if we are reading from event files, they could just as well implement the actual generation of events.

After filling the HEPRUP and HEPEUP variables, which are protected and easily accesible from the sub-class, this base class will then be responsible for transforming this data to the ThePEG Event record in the getEvent() method. LesHouchesReaders can only be used inside LesHouchesEventHandler objects.

In the initialization the virtual open() and scan() functions are called. Here the derived class must provide the information about the processes in the variables corresponding to the HEPRUP common block. Note that the IDWTUP is required to be +/- 1, and sub classes are required to change the information accordingly to ensure the correct corss section sampling. Note also that the controlling LesHouchesEventHandler may choose to generate weighted events even if IDWTUP is 1.

Note that the information given per process in e.g. the XSECUP and XMAXUP vectors is not used by the LesHouchesEventHandler and by default the LesHouchesReader is not assumed to be able to actively choose between the sub-processes. Instead, the LesHouchesEventHandler can handle several LesHouchesReader objects and choose between them. However, a sub-class of LesHouchesReader may set the flag isActive, in which case it is assumed to be able to select between its sub-processes itself.

The LesHouchesReader may be assigned a number ReweightBase objects which either completely reweights the events produced (in the reweights vector), or only biases the selection without influencing the cross section (in the preweights vector). Note that it is the responsibility of a sub-class to call the reweight() function and multiply the weight according to its return value (typically done in the readEvent() function).

See also:
The interfaces defined for LesHouchesReader.

Event

LesHouchesEventHandler

Definition at line 76 of file LesHouchesReader.h.


Constructor & Destructor Documentation

ThePEG::LesHouchesReader::LesHouchesReader ( bool  active = false  ) 

Default constructor.

If the optional argument is true, the reader is assumed to be able to produce events on demand for a given process.


Member Function Documentation

virtual bool ThePEG::LesHouchesReader::doReadEvent (  )  [pure virtual]

Read the next event from the file or stream into the corresponding protected variables.

Return false if there is no more events.

Implemented in ThePEG::LesHouchesFileReader, and ThePEG::MadGraphReader.

virtual void ThePEG::LesHouchesReader::initialize ( LesHouchesEventHandler eh  )  [virtual]

Initialize.

This function is called by the LesHouchesEventHandler to which this object is assigned.

Reimplemented in ThePEG::LesHouchesFileReader.

virtual double ThePEG::LesHouchesReader::getEvent (  )  [virtual]

Calls readEvent() or uncacheEvent() to read information into the LesHouches common block variables.

This function is called by the LesHouchesEventHandler if this reader has been selectod to produce an event.

Returns:
the weight asociated with this event. If negative weights are allowed it should be between -1 and 1, otherwise between 0 and 1. If outside these limits the previously estimated maximum is violated. Note that the estimated maximum then should be updated from the outside.

virtual bool ThePEG::LesHouchesReader::readEvent (  )  [virtual]

Calls doReadEvent() and performs pre-defined reweightings.

A sub-class overrides this function it must make sure that the corresponding reweightings are done.

virtual void ThePEG::LesHouchesReader::skip ( long  n  )  [virtual]

Skip n events.

Used by LesHouchesEventHandler to make sure that a file is scanned an even number of times in case the events are not ramdomly distributed in the file.

tXCombPtr ThePEG::LesHouchesReader::getXComb (  ) 

Get an XComb object.

Converts the information in the Les Houches common block variables to an XComb object describing the sub process. This is the way information is conveyed from the reader to the controlling LesHouchesEventHandler.

virtual long ThePEG::LesHouchesReader::scan (  )  [virtual]

Scan the file or stream to obtain information about cross section weights and particles etc.

This function should fill the variables corresponding to the /HEPRUP/ common block. The function returns the number of events scanned.

Reimplemented in ThePEG::MadGraphReader.

double ThePEG::LesHouchesReader::reweight (  ) 

Reweights the current event using the reweights and preweights vectors.

It is the responsibility of the sub-class to call this function after the HEPEUP information has been retrieved.

virtual void ThePEG::LesHouchesReader::setWeightScale ( long  neve  )  [virtual]

Possibility for subclasses to recover from non-conformant settings of XMAXUP when an event file has been scanned with neve events.

Should set weightScale so that the average XMAXUP times weightScale gives the cross section for a process. (This is needed for MadEvent).

static size_t ThePEG::LesHouchesReader::eventSize ( int  N  )  [inline, static]

Return the size of this event in bytes.

To be used for the cache file. npart is the number of particles. If npart is 0, the number is taken from NUP.

Definition at line 258 of file LesHouchesReader.h.

double ThePEG::LesHouchesReader::eventWeight (  )  const [inline]

The current event weight given by XWGTUP times possible reweighting.

Note that this is not necessarily the same as what is returned by getEvent(), which is scaled with the maximum weight.

Definition at line 274 of file LesHouchesReader.h.

References hepeup, lastweight, and ThePEG::HEPEUP::XWGTUP.

long ThePEG::LesHouchesReader::NEvents (  )  const [inline]

The number of events found in this reader.

If less than zero the number of events are unlimited.

Definition at line 321 of file LesHouchesReader.h.

References theNEvents.

long ThePEG::LesHouchesReader::currentPosition (  )  const [inline]

The number of events produced so far.

Is reset to zero if an event file is reopened.

Definition at line 327 of file LesHouchesReader.h.

References position.

long ThePEG::LesHouchesReader::maxScan (  )  const [inline]

The maximum number of events to scan to collect information about processes and cross sections.

If less than 0, all events will be scanned.

Definition at line 334 of file LesHouchesReader.h.

References theMaxScan.

void ThePEG::LesHouchesReader::select ( double  weight  )  [inline]

Select the current event.

It will later be rejected with a probability given by weight.

Definition at line 360 of file LesHouchesReader.h.

References hepeup, ThePEG::HEPEUP::IDPRUP, ThePEG::XSecStat::select(), statmap, and stats.

string ThePEG::LesHouchesReader::cacheFileName (  )  const [inline, protected]

Name of file used to cache the events form the reader in a fast-readable form.

If empty, no cache file will be generated.

Definition at line 425 of file LesHouchesReader.h.

References theCacheFileName.

bool ThePEG::LesHouchesReader::uncacheEvent (  )  [protected]

Read an event from the cache file.

Return false if something went wrong.

void ThePEG::LesHouchesReader::reopen (  )  [protected]

Reopen a reader.

If we have reached the end of an event file, reopen it and issue a warning if we have used up a large fraction of it.

virtual bool ThePEG::LesHouchesReader::checkPartonBin (  )  [protected, virtual]

Check the existence of a pair of PartonBin objects corresponding to the current event.

Returns:
false if no pair of suitable PartonBin objects was found.

virtual tcPBPair ThePEG::LesHouchesReader::createPartonBinInstances (  )  [protected, virtual]

Using the already created particles create a pair of PartonBinInstance objects corresponding to the incoming partons.

Return the corresponding PartonBin objects.

virtual void ThePEG::LesHouchesReader::createBeams (  )  [protected, virtual]

Create instances of the incoming beams in the event and store them in particleIndex.

If no beam particles are included in the event they are created from the run info.

void ThePEG::LesHouchesReader::persistentOutput ( PersistentOStream os  )  const

Function used to write out object persistently.

Parameters:
os the persistent output stream written to.

Reimplemented from ThePEG::Interfaced.

Reimplemented in ThePEG::LesHouchesFileReader, and ThePEG::MadGraphReader.

void ThePEG::LesHouchesReader::persistentInput ( PersistentIStream is,
int  version 
)

Function used to read in object persistently.

Parameters:
is the persistent input stream read from.
version the version number of the object when written.

Reimplemented from ThePEG::Interfaced.

Reimplemented in ThePEG::LesHouchesFileReader, and ThePEG::MadGraphReader.

void ThePEG::LesHouchesReader::NEvents ( long  x  )  [inline, protected]

The number of events in this reader.

If less than zero the number of events is unlimited.

Definition at line 562 of file LesHouchesReader.h.

References theNEvents.

virtual void ThePEG::LesHouchesReader::doinit (  )  [protected, virtual]

Initialize this object after the setup phase before saving an EventGenerator to disk.

Exceptions:
InitException if object could not be initialized properly.

Reimplemented from ThePEG::InterfacedBase.

Reimplemented in ThePEG::MadGraphReader.

virtual void ThePEG::LesHouchesReader::doinitrun (  )  [protected, virtual]

Initialize this object.

Called in the run phase just before a run begins.

Reimplemented from ThePEG::InterfacedBase.

virtual void ThePEG::LesHouchesReader::dofinish (  )  [inline, protected, virtual]

Finalize this object.

Called in the run phase just after a run has ended. Used eg. to write out statistics.

Reimplemented from ThePEG::InterfacedBase.

Reimplemented in ThePEG::MadGraphReader.

Definition at line 590 of file LesHouchesReader.h.

References close(), and ThePEG::InterfacedBase::dofinish().

Referenced by ThePEG::MadGraphReader::dofinish().

void ThePEG::LesHouchesReader::setBeamA ( long  id  )  [private]

Access function for the interface.

long ThePEG::LesHouchesReader::getBeamA (  )  const [private]

Access function for the interface.

void ThePEG::LesHouchesReader::setBeamB ( long  id  )  [private]

Access function for the interface.

long ThePEG::LesHouchesReader::getBeamB (  )  const [private]

Access function for the interface.

void ThePEG::LesHouchesReader::setEBeamA ( Energy  e  )  [private]

Access function for the interface.

Energy ThePEG::LesHouchesReader::getEBeamA (  )  const [private]

Access function for the interface.

void ThePEG::LesHouchesReader::setEBeamB ( Energy  e  )  [private]

Access function for the interface.

Energy ThePEG::LesHouchesReader::getEBeamB (  )  const [private]

Access function for the interface.

void ThePEG::LesHouchesReader::setPDFA ( PDFPtr   )  [private]

Access function for the interface.

PDFPtr ThePEG::LesHouchesReader::getPDFA (  )  const [private]

Access function for the interface.

void ThePEG::LesHouchesReader::setPDFB ( PDFPtr   )  [private]

Access function for the interface.

PDFPtr ThePEG::LesHouchesReader::getPDFB (  )  const [private]

Access function for the interface.


Member Data Documentation

The PDFBase objects which has been used for the beam particle when generating the events being read.

Specified in the interface or derived from PDFGUP and PDFSUP.

Definition at line 630 of file LesHouchesReader.h.

The number of events in this reader.

If less than zero the number of events is unlimited.

Definition at line 668 of file LesHouchesReader.h.

Referenced by NEvents().

The number of events produced by this reader so far.

Is reset every time an event file is reopened.

Definition at line 674 of file LesHouchesReader.h.

Referenced by currentPosition().

The maximum number of events to scan to collect information about processes and cross sections.

If less than 0, all events will be scanned.

Definition at line 686 of file LesHouchesReader.h.

Referenced by maxScan().

Name of file used to cache the events form the reader in a fast-readable form.

If empty, no cache file will be generated.

Definition at line 702 of file LesHouchesReader.h.

Referenced by cacheFileName().


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

Generated on Thu Apr 29 12:43:09 2010 for ThePEG by  doxygen 1.5.5