Back to home page

sPhenix code displayed by LXR

 
 

    


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   // clean up old event if it exists,
0079   // no check needed, one can delete null pointers
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 }