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...
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.
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.
virtual bool preInitialize() const
Return true if this object needs to be initialized before all other objects because it needs to extra...
long maxScan() const
The maximum number of events to scan to collect information about processes and cross sections...
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...
static AbstractClassDescription< LesHouchesReader > initLesHouchesReader
Describe an abstract base class with persistent data.
const Cuts & cuts() const
The Cuts object to be used for this reader.
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.
long currentPosition() const
The number of events produced so far.
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.
tCascHdlPtr CKKWHandler() const
Return a possibly null pointer to a CascadeHandler to be used for CKKW-reweighting.
virtual void initialize(LesHouchesEventHandler &eh)
Initialize.
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.
string cacheFileName() const
Name of file used to cache the events form the reader in a fast-readable form.
int maxMultCKKW() const
If this reader is to be used (possibly together with others) for CKKW reweighting and veto...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
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...
Energy getEBeamA() const
Access function for the interface.
virtual void createBeams()
Create instances of the incoming beams in the event and store them in particleIndex.
const XSecStat & xSecStats() const
The collected cross section statistics for this reader.
unsigned int theMomentumTreatment
Option for the treatment of the momenta supplied.
bool doInitPDFs
Should PDFBase objects be constructed from the information in the event file in the initialization...
const map< string, double > & optionalEventWeights() const
Return the optional named weights associated to the current event.
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...
long NEvents() const
The number of events found in this reader.
bool active() const
Return true if this reader is active.
bool reweightPDF
Should the event be reweighted by PDFs used by the PartonExtractor?
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...
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.
bool negativeWeights() const
True if negative weights may be produced.
PDFPtr getPDFB() const
Access function for the interface.
PVector theOutgoing
The instances of the outgoing particles from the sub process for the current event.
const PartonPairVec & partonBins() const
The pairs of PartonBin objects describing the partons which can be extracted by the PartonExtractor o...
const PBIPair & partonBinInstances() const
The pair of PartonBinInstance objects describing the current incoming partons in the 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.
const PVector & intermediates() const
Return the instances of the intermediate particles in the sub process for the current event...
virtual void dofinish()
Finalize this object.
Energy getEBeamB() const
Access function for the interface.
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.
long getBeamA() const
Access function for the interface.
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.
const XCombMap & xCombs() const
The map of XComb objects indexed by the corresponding PartonBin pair.
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. ...
double eventWeight() const
The current event weight given by XWGTUP times possible reweighting.
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.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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.
PDFPtr getPDFA() const
Access function for the interface.
virtual void createParticles()
Create instances of all particles in the event and store them in particleIndex.
bool useWeightWarnings
Set to true if warnings about possible weight incompatibilities should be issued. ...
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.
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...
const StatMap & processStats() const
Collected statistics about the individual processes.
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.
long getBeamB() const
Access function for the interface.
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...
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.
pair< PDFPtr, PDFPtr > inPDF
The PDFBase objects which has been used for the beam particle when generating the events being read...
int minMultCKKW() const
If this reader is to be used (possibly together with others) for CKKW reweighting and veto...
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.
const PVector & outgoing() const
Return the instances of the outgoing particles from the sub process for the current event...
pair< cPDFPtr, cPDFPtr > outPDF
The PDFBase object to be used in the subsequent generation.
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.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
void NEvents(long x)
The number of events in this reader.
CFile cacheFile() const
File stream for the cache.
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.
double lastweight
The weight multiplying the last read event due to PDF reweighting, CKKW reweighting or assigned rewei...
tPExtrPtr partonExtractor() const
The PartonExtractor object used to construct remnants.
const PPair & incoming() const
Return the instances of the incoming particles to the sub process for the current event...
void cacheEvent() const
Write the current event to the cache file.
const PPair & beams() const
Return the instances of the beam particles for the current event.
static void Init()
Standard Init function used to initialize the interfaces.
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...
HEPEUP hepeup
The HEPEUP common block.
void closeCacheFile()
Close the cache file;.