thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
HIHepMCFile.h
1// -*- C++ -*-
2//
3// HIHepMCFile.h is a part of ThePEG - Toolkit for HEP Event Generation
4// Copyright (C) 1999-2019 Leif Lonnblad
5//
6// ThePEG is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef THEPEG_HIHepMCFile_H
10#define THEPEG_HIHepMCFile_H
11//
12// This is the declaration of the HIHepMCFile class.
13//
14#include <iostream>
15#include <fstream>
16#include <config.h>
17#include "ThePEG/Handlers/AnalysisHandler.h"
18#include "ThePEG/Repository/CurrentGenerator.h"
19#include "ThePEG/Repository/EventGenerator.h"
20#include "ThePEG/Config/HepMCHelper.h"
21
22namespace ThePEG {
23
31
32public:
33
40
46
47public:
48
68 virtual void analyze(tEventPtr event, long ieve, int loop, int state);
70
71public:
72
80
86 void persistentInput(PersistentIStream & is, int version);
88
95 static void Init();
96
97protected:
98
105 virtual IBPtr clone() const;
106
111 virtual IBPtr fullclone() const;
113
114protected:
115
122 virtual void doinitrun();
123
128 virtual void dofinish();
130
131private:
132
138
143 HIHepMCFile & operator=(const HIHepMCFile &) = delete;
144
145private:
146
151
156
160 string _filename;
161
162#ifdef HAVE_HEPMC_ROOTIO
166 string _ttreename;
167
171 string _tbranchname;
172
173#endif
177#ifdef HAVE_HEPMC3
178 HepMC::Writer *_hepmcio;
179#else
180 HepMC::IO_BaseClass *_hepmcio;
181#endif
182
186 ofstream _hepmcdump;
187
192
196 unsigned int _geneventPrecision;
197};
198
199}
200
201#include "ThePEG/Utilities/ClassTraits.h"
202
203namespace ThePEG {
204
209template <>
210struct BaseClassTrait<HIHepMCFile,1> {
212 typedef AnalysisHandler NthBase;
213};
214
217template <>
218struct ClassTraits<HIHepMCFile>
219 : public ClassTraitsBase<HIHepMCFile> {
221 static string className() { return "ThePEG::HIHepMCFile"; }
225 static string library() { return "HepMCAnalysis.so"; }
226};
227
230}
231
232#endif /* THEPEG_HIHepMCFile_H */
The AnalysisHandler is the base class of all analysis objects which may be handled by the FullEventGe...
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data.
The HIHepMCFile class outputs ThePEG events in HepMC format with additional Heavy Ion information.
Definition: HIHepMCFile.h:30
HepMC::Writer * _hepmcio
The HepMC I/O handler.
Definition: HIHepMCFile.h:178
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void doinitrun()
Initialize this object.
int _format
The HepMC format.
Definition: HIHepMCFile.h:155
static ClassDescription< HIHepMCFile > initHIHepMCFile
The static object used to initialize the description of this class.
Definition: HIHepMCFile.h:137
unsigned int _geneventPrecision
Choice of output precision in GenEvent format.
Definition: HIHepMCFile.h:196
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
HIHepMCFile()
The default constructor.
virtual void analyze(tEventPtr event, long ieve, int loop, int state)
Analyze a given Event.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
static void Init()
The standard Init function used to initialize the interfaces.
HIHepMCFile & operator=(const HIHepMCFile &)=delete
The assignment operator is private and must never be called.
long _eventNumber
Last event that should be written out as HepMC format.
Definition: HIHepMCFile.h:150
string _filename
The HepMC filename.
Definition: HIHepMCFile.h:160
HIHepMCFile(const HIHepMCFile &)
The copy constructor.
virtual void dofinish()
Finalize this object.
int _unitchoice
Selector for the choice of units.
Definition: HIHepMCFile.h:191
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
ofstream _hepmcdump
The HepMC dump file.
Definition: HIHepMCFile.h:186
InitState state() const
Return the state of initialization of this object.
PersistentIStream is used to read persistent objects from a stream where they were previously written...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition: RCPtr.h:519
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
static string className()
Return the name of class T.
Definition: ClassTraits.h:66
static string library()
The name of a file containing the dynamic library where the class T is implemented.
Definition: ClassTraits.h:85