Back to home page

sPhenix code displayed by LXR

 
 

    


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)  // NOLINT(bugprone-copy-constructor-init)
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   // clean up old event if it exists,
0074   // no check needed, one can delete null pointers
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 }