HepMC3 event record library
testDelete2.cc
1// -*- C++ -*-
2//
3// This file is part of HepMC
4// Copyright (C) 2014-2019 The HepMC collaboration (see AUTHORS for details)
5//
6#include "HepMC3/Print.h"
7#include "HepMC3/GenEvent.h"
9#include "HepMC3/GenVertex.h"
10#include "HepMC3/ReaderAscii.h"
11#include "HepMC3/WriterAscii.h"
14#include "HepMC3TestUtils.h"
15using namespace HepMC3;
16int main()
17{
18 ReaderAsciiHepMC2 inputA("inputDelete2.hepmc");
19 if(inputA.failed()) return 1;
20 std::vector<std::shared_ptr<GenEvent> > evts;
21 while( !inputA.failed() )
22 {
23 std::shared_ptr<GenEvent> evt= std::make_shared<GenEvent>();
24 inputA.read_event(*evt);
25 if( inputA.failed() ) {
26 printf("End of file reached. Exit.\n");
27 break;
28 }
29 evts.push_back(evt);
30 }
31 inputA.close();
32 int i=0;
33 int j=0;
34 while(i==j)
35 {
36 i=rand()% evts.size();
37 j=rand()% evts.size();
38 }
39
40 std::vector<GenVertexPtr> selectedVtx;
41 for (std::vector<GenParticlePtr>::const_iterator p=evts.at(i)->particles().begin(); p!=evts.at(i)->particles().end(); ++p)
42 for (std::vector<GenVertexPtr>::iterator v=evts.at(j)->vertices().begin(); v!=evts.at(j)->vertices().end(); ++v)
43 {
44 selectedVtx.push_back(*v);
45 }
46
47 WriterAscii outputA("frominputDelete2.hepmc");
48 if(outputA.failed()) return 2;
49 for (size_t i=0; i<evts.size(); i++) outputA.write_event(*evts[i]);
50 evts.clear();
51 outputA.close();
52 for (std::vector<GenVertexPtr>::const_iterator v=selectedVtx.begin(); v!=selectedVtx.end(); ++v)
53 {
54 Print::line(*v);
55 }
56 if (selectedVtx.front()->parent_event())
57 Print::listing(*(selectedVtx.front()->parent_event()));
58 ReaderAscii inputB("frominputDelete2.hepmc");
59 if(inputB.failed()) return 3;
60 WriterAsciiHepMC2 outputB("fromfrominputDelete2.hepmc");
61 if(outputB.failed()) return 4;
62 while( !inputB.failed() )
63 {
64 GenEvent evt(Units::GEV,Units::MM);
65 inputB.read_event(evt);
66 if( inputB.failed() ) {
67 printf("End of file reached. Exit.\n");
68 break;
69 }
70 outputB.write_event(evt);
71 evt.clear();
72 }
73 inputB.close();
74 outputB.close();
75 return COMPARE_ASCII_FILES("fromfrominputDelete2.hepmc","inputDelete2.hepmc");
76}
Definition of class GenEvent.
Definition of class GenParticle.
Definition of class GenVertex.
Definition of static class Print.
Definition of class ReaderAsciiHepMC2.
Definition of class ReaderAscii.
Definition of class WriterAsciiHepMC2.
Definition of class WriterAscii.
Stores event-related information.
Definition: GenEvent.h:41
Parser for HepMC2 I/O files.
GenEvent I/O parsing for structured text files.
Definition: ReaderAscii.h:29
GenEvent I/O serialization for structured text files.
GenEvent I/O serialization for structured text files.
Definition: WriterAscii.h:25
HepMC3 main namespace.
int main(int argc, char **argv)