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() ) {printf("End of file reached. Exit.\n"); break;}
31  outputA.write_event(evt);
32  outputB.write_event(evt);
33  outputC.write_event(evt);
34  outputD.write_event(evt);
35  evt.clear();
36  }
37  input->close();
38  outputA.close();
39  outputB.close();
40  outputC.close();
41  outputD.close();
42 
43  std::vector<std::shared_ptr<Reader> > inputv;
44  inputv.push_back(deduce_reader("frominputReaderFactory2.hepmc3"));
45  inputv.push_back(deduce_reader("frominputReaderFactory2.hepmc2"));
46  inputv.push_back(deduce_reader("frominputReaderFactory2.hepevt"));
47  inputv.push_back(deduce_reader("frominputReaderFactory2.root"));
48 
49  std::vector<WriterAsciiHepMC2*> outputv;
50 
51  outputv.push_back(new WriterAsciiHepMC2("AA.hepmc2"));
52  outputv.push_back(new WriterAsciiHepMC2("BB.hepmc2"));
53  outputv.push_back(new WriterAsciiHepMC2("CC.hepmc2"));
54  outputv.push_back(new WriterAsciiHepMC2("DD.hepmc2"));
55 
56  for (size_t i=0;i<inputv.size();i++)
57  while( !inputv.at(i)->failed() )
58  {
59  GenEvent evt(Units::GEV,Units::MM);
60  inputv.at(i)->read_event(evt);
61  if( inputv.at(i)->failed() ) {printf("End of file reached. Exit.\n"); break;}
62  outputv.at(i)->write_event(evt);
63  evt.clear();
64  }
65  for (size_t i=0;i<outputv.size();i++) outputv.at(i)->close();
66 
67  return COMPARE_ASCII_FILES("AA.hepmc2","BB.hepmc2")+COMPARE_ASCII_FILES("BB.hepmc2","DD.hepmc2");
68 }
GenEvent I/O serialization for structured text files.
Definition of class WriterHEPEVT.
Definition of class ReaderHEPEVT.
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