9#include "GaudiKernel/MsgStream.h"
10#include "GaudiKernel/AlgFactory.h"
12#include "GaudiKernel/SmartDataPtr.h"
13#include "GaudiKernel/DataSvc.h"
15#include "GaudiKernel/IHistogramSvc.h"
19#include "AIDA/IHistogram1D.h"
20#include "AIDA/IHistogram2D.h"
22#include "GaudiKernel/PropertyMgr.h"
23#include "GaudiKernel/INTupleSvc.h"
24#include "GaudiKernel/ISvcLocator.h"
25#include "GaudiKernel/IDataProviderSvc.h"
26#include "GaudiKernel/MsgStream.h"
27#include "GaudiKernel/ObjectList.h"
29#include "HepMC/GenEvent.h"
30#include "HepMC/GenParticle.h"
34#include "HepMC/GenVertex.h"
44 Algorithm(name, pSvcLocator)
47 declareProperty(
"HistogramFlag", m_produceHistogram =
true );
52 StatusCode result = StatusCode::SUCCESS;
53 MsgStream msglog(messageService(), name());
54 msglog << MSG::INFO <<
">>> Truthdemo from Initialize" << endreq;
55 m_hgenerated =
histoSvc()->book(
"/stat/1Dhist/1",
"Generated",100,0,1200);
56 if (0 == m_hgenerated) {
57 msglog << MSG::ERROR <<
" ERROR booking histogram" << endreq;
58 result = StatusCode::FAILURE;
60 m_pxBalance =
histoSvc()->book(
"/stat/1Dhist/25",
"px balance",50,-10.,10.);
61 m_pyBalance =
histoSvc()->book(
"/stat/1Dhist/26",
"py balance",50,-10.,10.);
62 m_totEnergy =
histoSvc()->book(
"/stat/1Dhist/27",
"total energy",50,10000.,20000.);
72 MsgStream msglog(messageService(), name());
73 msglog << MSG::INFO <<
">>> TruthDemo from execute" << endreq;
82 std::vector<const HepMC::GenParticle*> particles;
83 StatusCode stat = m_tesIO->
getMC(particles, &ifs);
84 for (std::vector<const HepMC::GenParticle*>::iterator pitr = particles.begin();
85 pitr != particles.end(); pitr++) {
86 pxbalance += (*pitr)->momentum().x();
87 pybalance += (*pitr)->momentum().y();
88 totenergy += (*pitr)->momentum().e();
90 m_pxBalance->fill(pxbalance, 1.);
91 m_pyBalance->fill(pybalance, 1.);
92 m_totEnergy->fill(totenergy, 1.);
94 return StatusCode::SUCCESS;
98 MsgStream msglog(messageService(), name());
99 msglog << MSG::INFO <<
">>> TruthDemo from finalize" << endreq;
100 return StatusCode::SUCCESS;
IHistogramSvc * histoSvc()
std::vector< const HepMC::GenParticle * > MCparticleCollection
const IAlgFactory & TruthDemoFactory
StatusCode getMC(MCparticleCollection &) const