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" 8 #include "HepMC3/GenParticle.h" 9 #include "HepMC3/GenVertex.h" 10 #include "HepMC3/ReaderAscii.h" 11 #include "HepMC3/WriterAscii.h" 12 #include "HepMC3/ReaderAsciiHepMC2.h" 13 #include "HepMC3/WriterAsciiHepMC2.h" 14 #include "HepMC3TestUtils.h" 15 using namespace HepMC3; main()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 } 77