thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
HepMC3File.h
1 // -*- C++ -*-
2 //
3 // HepMC3File.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_HepMC3File_H
10 #define THEPEG_HepMC3File_H
11 //
12 // This is the declaration of the HepMC3File class.
13 //
14 #include <iostream>
15 #include <fstream>
16 #include "ThePEG/Handlers/AnalysisHandler.h"
17 #include "ThePEG/Repository/CurrentGenerator.h"
18 #include "ThePEG/Repository/EventGenerator.h"
19 #include "HepMC/IO/IO_Base.h"
20 
21 namespace ThePEG {
22 
29 class HepMC3File: public AnalysisHandler {
30 
31 public:
32 
38  HepMC3File();
39 
43  HepMC3File(const HepMC3File &);
45 
46 public:
47 
67  virtual void analyze(tEventPtr event, long ieve, int loop, int state);
69 
70 public:
71 
78  void persistentOutput(PersistentOStream & os) const;
79 
85  void persistentInput(PersistentIStream & is, int version);
87 
94  static void Init();
95 
96 protected:
97 
104  virtual IBPtr clone() const;
105 
110  virtual IBPtr fullclone() const;
112 
113 protected:
114 
121  virtual void doinitrun();
122 
127  virtual void dofinish();
129 
130 private:
131 
137 
142  HepMC3File & operator=(const HepMC3File &) = delete;
143 
144 private:
145 
150 
154  string _filename;
155 
159  HepMC::IO_Base *_hepmcio;
160 
165 
169  unsigned int _geneventPrecision;
170 };
171 
172 }
173 
174 #include "ThePEG/Utilities/ClassTraits.h"
175 
176 namespace ThePEG {
177 
182 template <>
183 struct BaseClassTrait<HepMC3File,1> {
185  typedef AnalysisHandler NthBase;
186 };
187 
190 template <>
191 struct ClassTraits<HepMC3File>
192  : public ClassTraitsBase<HepMC3File> {
194  static string className() { return "ThePEG::HepMCFile"; }
198  static string library() { return "HepMCAnalysis.so"; }
199 };
200 
203 }
204 
205 #endif /* THEPEG_HepMC3File_H */
PersistentIStream is used to read persistent objects from a stream where they were previously written...
static ClassDescription< HepMC3File > initHepMC3File
The static object used to initialize the description of this class.
Definition: HepMC3File.h:136
int _unitchoice
Selector for the choice of units.
Definition: HepMC3File.h:164
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void dofinish()
Finalize this object.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
HepMC3File & operator=(const HepMC3File &)=delete
The assignment operator is private and must never be called.
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition: RCPtr.h:519
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
The AnalysisHandler is the base class of all analysis objects which may be handled by the FullEventGe...
long _eventNumber
Last event that should be written out as HepMC format.
Definition: HepMC3File.h:149
InitState state() const
Return the state of initialization of this object.
string _filename
The HepMC filename.
Definition: HepMC3File.h:154
HepMC3File()
The default constructor.
virtual void analyze(tEventPtr event, long ieve, int loop, int state)
Analyze a given Event.
virtual void doinitrun()
Initialize this object.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
static void Init()
The standard Init function used to initialize the interfaces.
The HepMC3File class outputs ThePEG events in HepMC format.
Definition: HepMC3File.h:29
HepMC::IO_Base * _hepmcio
The HepMC I/O handler.
Definition: HepMC3File.h:159
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
unsigned int _geneventPrecision
Choice of output precision in GenEvent format.
Definition: HepMC3File.h:169
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52