HepMC3 event record library
testReaderFactory2.cc
1 // -*- C++ -*-
2 #include "HepMC3/GenEvent.h"
3 #include "HepMC3/ReaderAscii.h"
4 #include "HepMC3/WriterAscii.h"
7 #include "HepMC3/ReaderHEPEVT.h"
8 #include "HepMC3/WriterHEPEVT.h"
10 #include "HepMC3/WriterRootTree.h"
11 #include "HepMC3/ReaderFactory.h"
12 #include "HepMC3TestUtils.h"
13 using namespace HepMC3;
14 int main()
15 {
16  std::shared_ptr<Reader> input = deduce_reader("inputReaderFactory2.hepmc");
17  if(input->failed()) return 1;
18  WriterAscii outputA("frominputReaderFactory2.hepmc3");
19  WriterAsciiHepMC2 outputB("frominputReaderFactory2.hepmc2");
20  WriterHEPEVT outputC("frominputReaderFactory2.hepevt");
21  WriterRootTree outputD("frominputReaderFactory2.root");
22  if(outputA.failed()) return 2;
23  if(outputB.failed()) return 3;
24  if(outputC.failed()) return 4;
25  if(outputD.failed()) return 5;
26  while( !input->failed() )
27  {
28  GenEvent evt(Units::GEV,Units::MM);
29  input->read_event(evt);
30  if( input->failed() ) {
31  printf("End of file reached. Exit.\n");
32  break;
33  }
34  outputA.write_event(evt);
35  outputB.write_event(evt);
36  outputC.write_event(evt);
37  outputD.write_event(evt);
38  evt.clear();
39  }
40  input->close();
41  outputA.close();
42  outputB.close();
43  outputC.close();
44  outputD.close();
45 
46  std::vector<std::shared_ptr<Reader> > inputv;
47  inputv.push_back(deduce_reader("frominputReaderFactory2.hepmc3"));
48  inputv.push_back(deduce_reader("frominputReaderFactory2.hepmc2"));
49  inputv.push_back(deduce_reader("frominputReaderFactory2.hepevt"));
50  inputv.push_back(deduce_reader("frominputReaderFactory2.root"));
51 
52  std::vector<WriterAsciiHepMC2*> outputv;
53 
54  outputv.push_back(new WriterAsciiHepMC2("AA.hepmc2"));
55  outputv.push_back(new WriterAsciiHepMC2("BB.hepmc2"));
56  outputv.push_back(new WriterAsciiHepMC2("CC.hepmc2"));
57  outputv.push_back(new WriterAsciiHepMC2("DD.hepmc2"));
58 
59  for (size_t i=0; i<inputv.size(); i++)
60  while( !inputv.at(i)->failed() )
61  {
62  GenEvent evt(Units::GEV,Units::MM);
63  inputv.at(i)->read_event(evt);
64  if( inputv.at(i)->failed() ) {
65  printf("End of file reached. Exit.\n");
66  break;
67  }
68  outputv.at(i)->write_event(evt);
69  evt.clear();
70  }
71  for (size_t i=0; i<outputv.size(); i++) outputv.at(i)->close();
72 
73  return COMPARE_ASCII_FILES("AA.hepmc2","BB.hepmc2")+COMPARE_ASCII_FILES("BB.hepmc2","DD.hepmc2");
74 }
GenEvent I/O serialization for structured text files.
Definition of class WriterHEPEVT.
HepMC3 main namespace.
Definition: WriterDOT.h:19
Definition of class ReaderHEPEVT.
virtual bool read_event(GenEvent &evt)=0
Fill next event from input into evt.
Definition of class WriterRootTree.
Definition of class WriterAscii.
Definition of class ReaderRootTree.
GenEvent I/O serialization for HEPEVT files.
Definition: WriterHEPEVT.h:27
Definition of class ReaderAsciiHepMC2.
Stores event-related information.
Definition: GenEvent.h:42
GenEvent I/O serialization for root files based on root TTree.
Definition of class ReaderAscii.
Definition of class WriterAsciiHepMC2.
int main(int argc, char **argv)
Definition of class GenEvent.
GenEvent I/O serialization for structured text files.
Definition: WriterAscii.h:25