/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/CosmicGenerator/CosmicGenerator-00-00-09/CosmicGenerator/CosmicEventParser.h

Go to the documentation of this file.
00001 #ifndef COSMICGENERATOR_COSMICEVENTPARSER_H
00002 #define COSMICGENERATOR_COSMICEVENTPARSER_H
00003 
00004 #include <iostream>
00005 #include "CLHEP/Vector/ThreeVector.h"
00006 using namespace CLHEP;
00007 
00008 class CosmicEventParser {
00009  public:
00010   CosmicEventParser() {};
00011   const HepLorentzVector& Vertex(void){return m_vertex;}
00012   const HepLorentzVector& Momentum(void){return m_momentum;}
00013   int        pdgID(void){return m_pdgId;}
00014  private:
00015   HepLorentzVector m_vertex;
00016   HepLorentzVector m_momentum;
00017   int        m_eventNumber;
00018   int        m_pdgId;
00019   std::istream&   read(std::istream& is);
00020   std::ostream&   write(std::ostream& os) const;
00021 
00022   friend std::istream& operator >> (std::istream& is,CosmicEventParser& ev);
00023   friend std::ostream& operator << (std::ostream& os,const CosmicEventParser& ev);
00024 };
00025 
00026 std::istream& operator >> (std::istream& is,CosmicEventParser& ev) {
00027   return ev.read(is);
00028 }
00029 
00030 std::ostream& operator << (std::ostream& os,const CosmicEventParser& ev) {
00031   return ev.write(os);
00032 }
00033 
00034 inline
00035 std::istream& CosmicEventParser::read(std::istream& is)
00036 {
00037   int dummy;
00038   int id;
00039   Hep3Vector vert,mom;
00040   double v_x,v_y,v_z;
00041   is >> m_eventNumber >> dummy >> id >> v_x >> v_y >> v_z >> mom;
00042 
00043   //
00044   // rotate over pi in x-z plane
00045   //
00046   vert.setX(-v_x);
00047   vert.setY( v_y);
00048   vert.setZ(-v_z);
00049 
00050   //
00051   // convert to MeV's and mm units
00052   //
00053   mom = 1000*mom;
00054   vert = 10*vert;
00055 
00056 
00057   m_vertex.setVect(vert);
00058   m_vertex.setE(0.);
00059 
00060 
00061   m_momentum.setVect(mom);
00062   double energy = sqrt(pow(105.66,2)+mom.mag2());
00063   m_momentum.setE(energy);
00064 
00065   if(id == 5) m_pdgId = 13;
00066   else m_pdgId = -13;
00067                 
00068   return is;
00069 }
00070 
00071 inline
00072 std::ostream& CosmicEventParser::write(std::ostream& os) const
00073 {
00074   int dummy(1);
00075   int id(5);
00076   if(m_pdgId == -13) id = 6;
00077   os << m_eventNumber << " " << dummy << " " << id << " " 
00078      << m_vertex.x() << " " << m_vertex.y() << " " << m_vertex.z() << " " 
00079      << m_momentum.x() << " " << m_momentum.y() << " " << m_momentum.z();
00080 
00081   return os;
00082 }
00083 
00084 
00085 #endif

Generated on Tue Nov 29 23:12:37 2016 for BOSS_7.0.2 by  doxygen 1.4.7