thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
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 
22 namespace ThePEG {
23 
31 
32 public:
33 
39  HIHepMCFile();
40 
44  HIHepMCFile(const HIHepMCFile &);
46 
47 public:
48 
68  virtual void analyze(tEventPtr event, long ieve, int loop, int state);
70 
71 public:
72 
79  void persistentOutput(PersistentOStream & os) const;
80 
86  void persistentInput(PersistentIStream & is, int version);
88 
95  static void Init();
96 
97 protected:
98 
105  virtual IBPtr clone() const;
106 
111  virtual IBPtr fullclone() const;
113 
114 protected:
115 
122  virtual void doinitrun();
123 
128  virtual void dofinish();
130 
131 private:
132 
138 
143  HIHepMCFile & operator=(const HIHepMCFile &) = delete;
144 
145 private:
146 
151 
155  int _format;
156 
160  string _filename;
161 
162 #ifdef HAVE_HEPMC_ROOTIO
163 
166  string _ttreename;
167 
171  string _tbranchname;
172 
173 #endif
174 
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 
203 namespace ThePEG {
204 
209 template <>
210 struct BaseClassTrait<HIHepMCFile,1> {
212  typedef AnalysisHandler NthBase;
213 };
214 
217 template <>
218 struct 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 */
PersistentIStream is used to read persistent objects from a stream where they were previously written...
virtual void analyze(tEventPtr event, long ieve, int loop, int state)
Analyze a given Event.
int _unitchoice
Selector for the choice of units.
Definition: HIHepMCFile.h:191
virtual void doinitrun()
Initialize this object.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
virtual void dofinish()
Finalize this object.
HIHepMCFile & operator=(const HIHepMCFile &)=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
static void Init()
The standard Init function used to initialize the interfaces.
The HIHepMCFile class outputs ThePEG events in HepMC format with additional Heavy Ion information...
Definition: HIHepMCFile.h:30
ofstream _hepmcdump
The HepMC dump file.
Definition: HIHepMCFile.h:186
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...
InitState state() const
Return the state of initialization of this object.
HIHepMCFile()
The default constructor.
int _format
The HepMC format.
Definition: HIHepMCFile.h:155
HepMC::IO_BaseClass * _hepmcio
The HepMC I/O handler.
Definition: HIHepMCFile.h:180
virtual IBPtr clone() const
Make a simple clone of this object.
unsigned int _geneventPrecision
Choice of output precision in GenEvent format.
Definition: HIHepMCFile.h:196
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
static ClassDescription< HIHepMCFile > initHIHepMCFile
The static object used to initialize the description of this class.
Definition: HIHepMCFile.h:137
string _filename
The HepMC filename.
Definition: HIHepMCFile.h:160
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
long _eventNumber
Last event that should be written out as HepMC format.
Definition: HIHepMCFile.h:150
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.