9 #ifndef THEPEG_LesHouchesReader_H 10 #define THEPEG_LesHouchesReader_H 13 #include "LesHouches.h" 14 #include "ThePEG/Handlers/HandlerBase.h" 15 #include "ThePEG/Utilities/ObjectIndexer.h" 16 #include "ThePEG/Utilities/Exception.h" 17 #include "ThePEG/Utilities/XSecStat.h" 18 #include "ThePEG/PDF/PartonBinInstance.h" 19 #include "ThePEG/PDF/PartonBin.fh" 20 #include "ThePEG/MatrixElement/ReweightBase.h" 21 #include "LesHouchesEventHandler.fh" 22 #include "LesHouchesReader.fh" 23 #include "ThePEG/Utilities/CFile.h" 134 virtual void open() = 0;
146 virtual void close() = 0;
186 virtual void skip(
long n);
255 return (N + 1)*
sizeof(int) +
256 (7*N + 4)*
sizeof(double) +
259 2*N*
sizeof(pair<int,int>) +
260 sizeof(pair<double,double>) +
474 template <
typename T>
475 static char *
mwrite(
char * pos,
const T & t,
size_t n = 1) {
476 std::memcpy(pos, &t, n*
sizeof(T));
477 return pos + n*
sizeof(T);
483 template <
typename T>
484 static const char *
mread(
const char * pos, T & t,
size_t n = 1) {
485 std::memcpy(&t, pos, n*
sizeof(T));
486 return pos + n*
sizeof(T);
910 class LesHouchesInconsistencyError:
public Exception {};
914 class LesHouchesReopenWarning:
public Exception {};
918 class LesHouchesReopenError:
public Exception {};
922 class LesHouchesInitError:
public InitException {};
933 #include "ThePEG/Utilities/ClassTraits.h" 960 static string className() {
return "ThePEG::LesHouchesReader"; }
966 static string library() {
return "LesHouches.so"; }
map< string, double > optionalWeights
The optional weights associated to the last read events.
pair< tcPDPtr, tcPDPtr > tcPDPair
A pair of transient pointers to const ParticleData objects.
long theMaxScan
The maximum number of events to scan to collect information about processes and cross sections...
tCascHdlPtr CKKWHandler() const
Return a possibly null pointer to a CascadeHandler to be used for CKKW-reweighting.
PersistentIStream is used to read persistent objects from a stream where they were previously written...
void select(double weight)
An event of the corresponding class has been attempted.
map< int, double > maxWeights
Individual maximum weights for individual (possibly reweighted) processes.
bool active() const
Return true if this reader is active.
long getBeamA() const
Access function for the interface.
vector< double > xSecWeights
Individual scales for different sub-processes if reweighted.
virtual ~LesHouchesReader()
Destructor.
void reset()
Removes the particles created in the last generated event, preparing to produce a new one...
XCombMap & xCombs()
The map of XComb objects indexed by the corresponding PartonBin pair.
static const char * mread(const char *pos, T &t, size_t n=1)
Helper function to read a variable from a memory location.
The LesHouchesEventHandler inherits from the general EventHandler class and administers the reading o...
long maxScan() const
The maximum number of events to scan to collect information about processes and cross sections...
const PPair & beams() const
Return the instances of the beam particles for the current event.
static AbstractClassDescription< LesHouchesReader > initLesHouchesReader
Describe an abstract base class with persistent data.
ClassTraitsType is an empty, non-polymorphic, base class.
string theCacheFileName
Name of file used to cache the events form the reader in a fast-readable form.
PExtrPtr thePartonExtractor
The PartonExtractor object used to construct remnants.
void accept()
An event of the corresponding class has been accepted.
bool isActive
True if this is an active reader.
virtual void initialize(LesHouchesEventHandler &eh)
Initialize.
int maxMultCKKW() const
If this reader is to be used (possibly together with others) for CKKW reweighting and veto...
XCombMap theXCombs
The map of XComb objects indexed by the corresponding PartonBin pair.
virtual void open()=0
Open a file or stream with events and read in the run information into the heprup variable...
virtual void fillEvent()
Converts the information in the Les Houches common block variables into a Particle objects...
static char * mwrite(char *pos, const T &t, size_t n=1)
Helper function to write a variable to a memory location.
virtual void skip(long n)
Skip n events.
void setEBeamB(Energy e)
Access function for the interface.
const map< string, double > & optionalEventWeights() const
Return the optional named weights associated to the current event.
long getBeamB() const
Access function for the interface.
const PBIPair & partonBinInstances() const
The pair of PartonBinInstance objects describing the current incoming partons in the event...
tPExtrPtr partonExtractor() const
The PartonExtractor object used to construct remnants.
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
const PPair & incoming() const
Return the instances of the incoming particles to the sub process for the current event...
A concreate implementation of ClassDescriptionBase describing an abstract class with persistent data...
LastXCombInfo is a templated class giving easy access to the information in an XComb object...
virtual void createBeams()
Create instances of the incoming beams in the event and store them in particleIndex.
unsigned int theMomentumTreatment
Option for the treatment of the momenta supplied.
const StatMap & processStats() const
Collected statistics about the individual processes.
bool doInitPDFs
Should PDFBase objects be constructed from the information in the event file in the initialization...
bool uncacheEvent()
Read an event from the cache file.
void select(double weight)
Select the current event.
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
const PVector & outgoing() const
Return the instances of the outgoing particles from the sub process for the current event...
bool reweightPDF
Should the event be reweighted by PDFs used by the PartonExtractor?
const XCombMap & xCombs() const
The map of XComb objects indexed by the corresponding PartonBin pair.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
bool skipping
Is set to true when getEvent() is called from skip(int).
bool theIncludeSpin
Use the spin information.
virtual void close()=0
Close the file or stream from which events have been read.
int IDWTUP
Master switch indicating how the ME generator envisages the events weights should be interpreted acco...
virtual bool checkPartonBin()
Check the existence of a pair of PartonBin objects corresponding to the current event.
LesHouchesReader is an abstract base class to be used for objects which reads event files or streams ...
PBIPair thePartonBinInstances
The pair of PartonBinInstance objects describing the current incoming partons in the event...
virtual bool preInitialize() const
Return true if this object needs to be initialized before all other objects because it needs to extra...
void setBeamB(long id)
Access function for the interface.
This is the main namespace within which all identifiers in ThePEG are declared.
virtual double getEvent()
Calls readEvent() or uncacheEvent() to read information into the LesHouches common block variables...
int theMinMultCKKW
If this reader is to be used (possibly together with others) for CKKW reweighting and veto...
virtual void doinitrun()
Initialize this object.
PVector theOutgoing
The instances of the outgoing particles from the sub process for the current event.
virtual void initPDFs()
Called from doinit() to extract PDFs from the event file and add the corresponding objects to the cur...
bool cutEarly() const
Determines whether to apply cuts to events converting them to ThePEG format.
void reject(double weight=1.0)
Reject the event which was last accepted with accept() or selected with select(double).
StatMap statmap
Collect statistics for each individual process.
long currentPosition() const
The number of events produced so far.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual void dofinish()
Finalize this object.
string cacheFileName() const
Name of file used to cache the events form the reader in a fast-readable form.
void reject(double w)
Reject the current event assuming it was previously accepted.
ObjectIndexer< long, Particle > particleIndex
Association between Particles and indices in the current translation.
CrossSection weightScale
The (reweighted) XWGTUP value should be scaled with this cross section when compared to the overestim...
ReweightVector reweights
The reweight objects modifying the weights of this reader.
QTY< 0, 1, 0 >::Type Energy
Energy.
bool theReOpenAllowed
Option to allow reopening of the file.
virtual tcPBPair createPartonBinInstances()
Using the already created particles create a pair of PartonBinInstance objects corresponding to the i...
HEPRUP heprup
The HEPRUP common block.
virtual void connectMothers()
Go through the mother indices and connect up the Particles.
PVector theIntermediates
The instances of the intermediate particles in the sub process for the current event.
PPair theIncoming
The instances of the incoming particles to the sub process for the current event. ...
Here is the documentation of the CFile class.
void setPDFB(PDFPtr)
Access function for the interface.
int theMaxMultCKKW
If this reader is to be used (possibly together with others) for CKKW reweighting and veto...
LesHouchesReader(bool active=false)
Default constructor.
virtual void initStat()
Take the information corresponding to the HEPRUP common block and initialize the statistics for this ...
int reopened
The number of times this reader has been reopened.
long NEvents() const
The number of events found in this reader.
pair< PPtr, PPtr > PPair
A pair of pointers to Particle objects.
pair< PBIPtr, PBIPtr > PBIPair
A pair of pointers to PartonBinInstance objects.
static size_t eventSize(int N)
Return the size of this event in bytes.
ObjectIndexer< long, ColourLine > colourIndex
Association between ColourLines and colour indices in the current translation.
RCPtr is a reference counted (smart) pointer.
LesHouchesReader & operator=(const LesHouchesReader &)
Private and non-existent assignment operator.
virtual void dofinish()
Finalize this object.
map< int, XSecStat > StatMap
Map for accumulating statistics of cross sections per process number.
bool scanning
Flag to tell whether we are in the process of scanning.
bool negativeWeights() const
True if negative weights may be produced.
virtual void createParticles()
Create instances of all particles in the event and store them in particleIndex.
const PartonPairVec & partonBins() const
The pairs of PartonBin objects describing the partons which can be extracted by the PartonExtractor o...
bool useWeightWarnings
Set to true if warnings about possible weight incompatibilities should be issued. ...
PDFPtr getPDFB() const
Access function for the interface.
HandlerBase is an abstract base class derived from the Interfaced class via the HandlerBaseT class ad...
void setPDFA(PDFPtr)
Access function for the interface.
tcPDPair inData
The ParticleData objects corresponding to the incoming particles.
double eventWeight() const
The current event weight given by XWGTUP times possible reweighting.
Exception is the base class for all exceptions to be used in ThePEG.
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.
void setBeamA(long id)
Access function for the interface.
The HEPEUP class is a simple container corresponding to the Les Houches accord (hep-ph/0109068) commo...
int IDPRUP
The subprocess code for this event (as given in LPRUP).
vector< ReweightPtr > ReweightVector
A vector of pointers to ReweightBase objects.
The HEPRUP class is a simple container corresponding to the Les Houches accord (hep-ph/0109068) commo...
void setEBeamA(Energy e)
Access function for the interface.
tCascHdlPtr theCKKW
A pointer to a CascadeHandler to be used for CKKW-reweighting.
long position
The number of events produced by this reader so far.
virtual void setWeightScale(long neve)
Possibility for subclasses to recover from non-conformant settings of XMAXUP when an event file has b...
CFile theCacheFile
File stream for the cache.
map< tcPBPair, XCombPtr > XCombMap
Map of XComb objects describing the incoming partons indexed by the corresponding PartonBin pair...
The default concrete implementation of ClassTraitsBase.
This is a templated class which dynamically associates (reference counted) objects to integer indices...
PDFPtr getPDFA() const
Access function for the interface.
virtual bool readEvent()
Calls doReadEvent() and performs pre-defined reweightings.
ReweightVector preweights
The preweight objects modifying the weights of this reader.
vector< T > & operator<<(vector< T > &tv, const U &u)
Overload the left shift operator for vector to push_back objects to a vector.
tXCombPtr getXComb()
Get an XComb object.
const XSecStat & xSecStats() const
The collected cross section statistics for this reader.
pair< PDFPtr, PDFPtr > inPDF
The PDFBase objects which has been used for the beam particle when generating the events being read...
PPair theBeams
The instances of the beam particles for the current event.
virtual bool doReadEvent()=0
Read the next event from the file or stream into the corresponding protected variables.
This template class allows the compiler to check calculations with physical quantities for dimensiona...
void reopen()
Reopen a reader.
bool doCutEarly
Determines whether to apply cuts to events before converting them to ThePEG format.
pair< cPDFPtr, cPDFPtr > outPDF
The PDFBase object to be used in the subsequent generation.
Energy getEBeamB() const
Access function for the interface.
virtual long scan()
Scan the file or stream to obtain information about cross section weights and particles etc...
void openReadCacheFile()
Open the cache file for reading.
void openWriteCacheFile()
Open the cache file for writing.
double preweight
The factor with which this reader was last pre-weighted.
Energy getEBeamA() const
Access function for the interface.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
int minMultCKKW() const
If this reader is to be used (possibly together with others) for CKKW reweighting and veto...
void NEvents(long x)
The number of events in this reader.
void accept()
Accept the current event assuming it was previously selcted.
vector< PPtr > PVector
A vector of pointers to Particle objects.
XSecStat stats
Collect statistics for this reader.
tSubProPtr getSubProcess()
Get a SubProcess object corresponding to the information in the Les Houches common block variables...
double XWGTUP
The weight for this event.
BaseClassTraits describes the base classes of the templated class.
XSecStat is a concrete helper class used to collect statistics about the cross section for a specific...
long theNEvents
The number of events in this reader.
void cacheEvent() const
Write the current event to the cache file.
CFile cacheFile() const
File stream for the cache.
double lastweight
The weight multiplying the last read event due to PDF reweighting, CKKW reweighting or assigned rewei...
static void Init()
Standard Init function used to initialize the interfaces.
const PVector & intermediates() const
Return the instances of the intermediate particles in the sub process for the current event...
PartonPairVec thePartonBins
The pairs of PartonBin objects describing the partons which can be extracted by the PartonExtractor o...
Cuts is a class for implementing kinematical cuts in ThePEG.
virtual void increaseMaxXSec(CrossSection maxxsec)
Increase the overestimated cross section for this reader.
double reweight()
Reweights the current event using the reweights and preweights vectors.
CutsPtr theCuts
The Cuts object to be used for this reader.
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
const Cuts & cuts() const
The Cuts object to be used for this reader.
HEPEUP hepeup
The HEPEUP common block.
void closeCacheFile()
Close the cache file;.