File indexing completed on 2025-08-05 08:16:00
0001 #include "PHHepMCGenEvent.h"
0002
0003 #pragma GCC diagnostic push
0004 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
0005 #include <HepMC/GenEvent.h>
0006 #pragma GCC diagnostic pop
0007
0008 #include <HepMC/SimpleVector.h> // for FourVector
0009
0010 #include <CLHEP/Vector/Boost.h>
0011 #include <CLHEP/Vector/LorentzRotation.h>
0012 #include <CLHEP/Vector/LorentzVector.h>
0013 #include <CLHEP/Vector/Rotation.h>
0014
0015 #include <sstream>
0016 #include <utility> // for swap
0017
0018 using namespace std;
0019
0020 PHHepMCGenEvent::PHHepMCGenEvent()
0021 : _embedding_id(0)
0022 , _isSimulated(false)
0023 , _collisionVertex(0, 0, 0, 0)
0024 , _theEvt(nullptr)
0025 {
0026 }
0027
0028 PHHepMCGenEvent::PHHepMCGenEvent(const PHHepMCGenEvent& event)
0029 : _embedding_id(event.get_embedding_id())
0030 , _isSimulated(event.is_simulated())
0031 , _collisionVertex(event.get_collision_vertex())
0032 , _theEvt(nullptr)
0033 {
0034 if (event.getEvent())
0035 _theEvt = new HepMC::GenEvent(*event.getEvent());
0036 return;
0037 }
0038
0039 PHHepMCGenEvent& PHHepMCGenEvent::operator=(const PHHepMCGenEvent& event)
0040 {
0041 if (&event == this) return *this;
0042
0043 Reset();
0044
0045 _embedding_id = event.get_embedding_id();
0046 _isSimulated = event.is_simulated();
0047 _theEvt = new HepMC::GenEvent(*event.getEvent());
0048
0049 return *this;
0050 }
0051
0052 PHHepMCGenEvent::~PHHepMCGenEvent()
0053 {
0054 delete _theEvt;
0055 }
0056
0057 void PHHepMCGenEvent::Reset()
0058 {
0059 _embedding_id = 0;
0060 _isSimulated = false;
0061 _collisionVertex.set(0, 0, 0, 0);
0062 delete _theEvt;
0063 _theEvt = nullptr;
0064 }
0065
0066 HepMC::GenEvent* PHHepMCGenEvent::getEvent()
0067 {
0068 return _theEvt;
0069 }
0070
0071 const HepMC::GenEvent* PHHepMCGenEvent::getEvent() const
0072 {
0073 return _theEvt;
0074 }
0075
0076 bool PHHepMCGenEvent::addEvent(HepMC::GenEvent* evt)
0077 {
0078
0079
0080 delete _theEvt;
0081
0082 _theEvt = evt;
0083 if (!_theEvt) return false;
0084 return true;
0085 }
0086
0087 bool PHHepMCGenEvent::swapEvent(HepMC::GenEvent*& evt)
0088 {
0089 swap(_theEvt, evt);
0090
0091 if (!_theEvt) return false;
0092 return true;
0093 }
0094
0095 bool PHHepMCGenEvent::addEvent(HepMC::GenEvent& evt)
0096 {
0097 return addEvent(new HepMC::GenEvent(evt));
0098 }
0099
0100 void PHHepMCGenEvent::clearEvent()
0101 {
0102 if (_theEvt) _theEvt->clear();
0103 }
0104
0105 void PHHepMCGenEvent::moveVertex(double x, double y, double z, double t)
0106 {
0107 _collisionVertex.setX(_collisionVertex.x() + x);
0108 _collisionVertex.setY(_collisionVertex.y() + y);
0109 _collisionVertex.setZ(_collisionVertex.z() + z);
0110 _collisionVertex.setT(_collisionVertex.t() + t);
0111 }
0112
0113 int PHHepMCGenEvent::size(void) const
0114 {
0115 if (_theEvt)
0116 return _theEvt->particles_size();
0117 else
0118 return 0;
0119 }
0120
0121 int PHHepMCGenEvent::vertexSize(void) const
0122 {
0123 if (_theEvt)
0124 return _theEvt->vertices_size();
0125 else
0126 return 0;
0127 }
0128
0129
0130 void PHHepMCGenEvent::identify(std::ostream& os) const
0131 {
0132 os << "identify yourself: PHHepMCGenEvent Object";
0133 os << ", No of Particles: " << size();
0134 os << ", No of Vertices: " << vertexSize() << endl;
0135 os << " embedding_id = " << _embedding_id << endl;
0136 os << " isSimulated = " << _isSimulated << endl;
0137 os << " collisionVertex = (" << _collisionVertex.x() << "," << _collisionVertex.y() << "," << _collisionVertex.z() << ") cm, " << _collisionVertex.t() << " ns" << endl;
0138
0139 return;
0140 }
0141
0142 void PHHepMCGenEvent::print(std::ostream& out) const
0143 {
0144 identify(out);
0145 }
0146
0147 void PHHepMCGenEvent::PrintEvent()
0148 {
0149 _theEvt->print();
0150 }