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