00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef THEPEG_HepMCFile_H
00010 #define THEPEG_HepMCFile_H
00011
00012
00013
00014 #include <iostream>
00015 #include <fstream>
00016 #include "ThePEG/Handlers/AnalysisHandler.h"
00017 #include "ThePEG/Repository/CurrentGenerator.h"
00018 #include "ThePEG/Repository/EventGenerator.h"
00019 #include "HepMC/IO_BaseClass.h"
00020
00021 namespace ThePEG {
00022
00029 class HepMCFile: public AnalysisHandler {
00030
00031 public:
00032
00038 HepMCFile();
00039
00043 HepMCFile(const HepMCFile &);
00045
00046 public:
00047
00067 virtual void analyze(tEventPtr event, long ieve, int loop, int state);
00069
00070 public:
00071
00078 void persistentOutput(PersistentOStream & os) const;
00079
00085 void persistentInput(PersistentIStream & is, int version);
00087
00094 static void Init();
00095
00096 protected:
00097
00104 virtual IBPtr clone() const;
00105
00110 virtual IBPtr fullclone() const;
00112
00113 protected:
00114
00121 virtual void doinitrun();
00122
00127 virtual void dofinish();
00129
00130 private:
00131
00136 static ClassDescription<HepMCFile> initHepMCFile;
00137
00142 HepMCFile & operator=(const HepMCFile &);
00143
00144 private:
00145
00149 long _eventNumber;
00150
00154 int _format;
00155
00159 string _filename;
00160
00164 HepMC::IO_BaseClass *_hepmcio;
00165
00169 ofstream _hepmcdump;
00170
00174 int _unitchoice;
00175 };
00176
00177 }
00178
00179 #include "ThePEG/Utilities/ClassTraits.h"
00180
00181 namespace ThePEG {
00182
00187 template <>
00188 struct BaseClassTrait<HepMCFile,1> {
00190 typedef AnalysisHandler NthBase;
00191 };
00192
00195 template <>
00196 struct ClassTraits<HepMCFile>
00197 : public ClassTraitsBase<HepMCFile> {
00199 static string className() { return "ThePEG::HepMCFile"; }
00203 static string library() { return "HepMCAnalysis.so"; }
00204 };
00205
00208 }
00209
00210 #endif