| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DsPushKine.cc

Go to the documentation of this file.
00001 
00002 #include "DsPushKine.h"
00003 #include "G4DataHelpers/IHepMCtoG4.h"
00004 
00005 #include "Event/GenHeader.h"
00006 
00007 #include "GiGa/IGiGaSvc.h"
00008 
00009 #include "G4PrimaryVertex.hh"
00010 
00011 DsPushKine::DsPushKine(const std::string& name, ISvcLocator* pSvcLocator)
00012     : GaudiAlgorithm(name,pSvcLocator)
00013     , m_giga(0)
00014     , m_converter(0)
00015 {
00016     declareProperty("Location",m_location=DayaBay::GenHeaderLocation::Default,
00017                     "Location in the TES to get HepMCEvents");
00018     declareProperty("Converter",m_converterName="HepMCtoG4",
00019                     "Name of tool to convert HepMCEvents to G4PrimaryVertex");
00020 }
00021 
00022 DsPushKine::~DsPushKine()
00023 {
00024 }
00025 
00026 StatusCode DsPushKine::initialize()
00027 {
00028     this->GaudiAlgorithm::initialize();
00029 
00030     m_giga = svc<IGiGaSvc>("GiGa",true);
00031     try {
00032         m_converter = tool<IHepMCtoG4>(m_converterName);
00033     }
00034     catch (const GaudiException& gex) {
00035         fatal() << "Failed to get converter tool \"" 
00036                 << m_converterName << "\"" << endreq;
00037         return StatusCode::FAILURE;
00038     }
00039     
00040     return StatusCode::SUCCESS;
00041 }
00042 
00043 StatusCode DsPushKine::execute()
00044 {
00045     DayaBay::GenHeader* gen_header = get<DayaBay::GenHeader>(m_location);
00046     
00047     HepMC::GenEvent* genevt = gen_header->event();
00048     std::vector<G4PrimaryVertex*> g4verts;
00049     m_converter->convert(*genevt,g4verts);
00050 
00051     debug() << "Got " << g4verts.size() << " primary vertices" << endreq;
00052 
00053     for (size_t ind=0; ind < g4verts.size(); ++ind) {
00054         
00055         *m_giga << g4verts[ind];
00056 
00057     }
00058     
00059     debug() << "Pushed " << gen_header->generatorName()   
00060            << " to giga" << endreq;
00061 
00062     return StatusCode::SUCCESS;
00063 }
00064 
00065 StatusCode DsPushKine::finalize()
00066 {
00067 
00068     return this->GaudiAlgorithm::finalize();
00069 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:53:24 2011 for DetSim by doxygen 1.4.7