Belle II Software  release-08-01-10
EvtGenInterface.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 
12 #include <EvtGen/EvtGen.hh>
13 #include <EvtGenBase/EvtParticle.hh>
14 #include <EvtGenBase/EvtVector4R.hh>
15 #include <generators/evtgen/EvtGenFwRandEngine.h>
16 #include <mdst/dataobjects/MCParticleGraph.h>
17 
18 #include <framework/utilities/IOIntercept.h>
19 
20 #include <Math/Vector3D.h>
21 #include <string>
22 
23 namespace Belle2 {
36 
37  public:
44  static EvtGen* createEvtGen(const std::string& decayFileName, bool coherentMixing);
45 
50  m_parent(0),
51  m_Generator(0),
52  m_pinit(0, 0, 0, 0),
53  m_ParentInitialized(false),
54  m_logCaptureDebug("EvtGen", LogConfig::c_Debug, LogConfig::c_Warning, 20, 20)
55  {}
56 
61 
63  int setup(const std::string& decayFileName, const std::string& parentParticle,
64  const std::string& userFileName = std::string(""), bool coherentMixing = true);
65 
67  int simulateEvent(MCParticleGraph& graph, ROOT::Math::PxPyPzEVector pParentParticle,
68  ROOT::Math::XYZVector pPrimaryVertex, int inclusiveType, const std::string& inclusiveParticle);
69 
71  int simulateDecay(MCParticleGraph& graph,
73 
74  private:
76  int addParticles2Graph(EvtParticle* particle, MCParticleGraph& graph, ROOT::Math::XYZVector pPrimaryVertex,
77  MCParticleGraph::GraphParticle* parent, double timeOffset = 0);
78 
80  void updateGraphParticle(EvtParticle* eParticle, MCParticleGraph::GraphParticle* gParticle,
81  ROOT::Math::XYZVector pPrimaryVertex, double timeOffset = 0);
82 
83  protected:
84  EvtParticle* m_parent;
86  EvtGen* m_Generator;
87  EvtVector4R m_pinit;
91  };
92 
94 }
95 
Class to interface EvtGen.
EvtVector4R m_pinit
Variable needed for initial momentum.
int simulateDecay(MCParticleGraph &graph, MCParticleGraph::GraphParticle &parent)
Simulate a particle decay.
EvtGen * m_Generator
Variable needed for EvtGen generator.
int simulateEvent(MCParticleGraph &graph, ROOT::Math::PxPyPzEVector pParentParticle, ROOT::Math::XYZVector pPrimaryVertex, int inclusiveType, const std::string &inclusiveParticle)
Generate a single event.
IOIntercept::OutputToLogMessages m_logCaptureDebug
Capture EvtGen log and transform into basf2 logging as B2DEBUG messages.
int setup(const std::string &decayFileName, const std::string &parentParticle, const std::string &userFileName=std::string(""), bool coherentMixing=true)
Setup evtgen with the given decay files
static EvtGenFwRandEngine m_eng
Variable needed for random generator.
EvtParticle * m_parent
Variable needed for parent particle.
static EvtGen * createEvtGen(const std::string &decayFileName, bool coherentMixing)
Create and initialize an EvtGen instance:
EvtId m_ParentParticle
Variable needed for parent particle ID.
bool m_ParentInitialized
Whether parent particle is initialized.
void updateGraphParticle(EvtParticle *eParticle, MCParticleGraph::GraphParticle *gParticle, ROOT::Math::XYZVector pPrimaryVertex, double timeOffset=0)
Copy parameters from EvtParticle to MCParticle.
EvtGenInterface()
Constructor.
int addParticles2Graph(EvtParticle *particle, MCParticleGraph &graph, ROOT::Math::XYZVector pPrimaryVertex, MCParticleGraph::GraphParticle *parent, double timeOffset=0)
Convert EvtParticle structure to flat MCParticle list.
Capture stdout and stderr and convert into log messages.
Definition: IOIntercept.h:226
The LogConfig class.
Definition: LogConfig.h:22
Class to represent Particle data in graph.
Class to build, validate and sort a particle decay chain.
Evtgen random generator.
Abstract base class for different kinds of events.