Belle II Software  release-05-02-19
FragmentationModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Ami Rostomyan, Torben Ferber *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <framework/core/Module.h>
14 #include <framework/datastore/StoreArray.h>
15 #include <mdst/dataobjects/MCParticle.h>
16 #include <mdst/dataobjects/MCParticleGraph.h>
17 
18 #include <Pythia8/Pythia.h>
19 #include <generators/modules/fragmentation/EvtGenDecays.h>
20 
21 #include <string>
22 
23 namespace Belle2 {
31  class FragmentationRndm : public Pythia8::RndmEngine {
32 
33  public:
34  // Constructor
35  FragmentationRndm();
36 
37  // in PYTHIA, there is one pure virtual method in RndmEngine,
38  // to generate one random number flat in the range between 0 and 1:
39  double flat();
41  private:
42 
43  };
44 
45 
51  class FragmentationModule : public Module {
52 
53  public:
59 
61  virtual ~FragmentationModule();
62 
63  virtual void event() override;
64  virtual void initialize() override;
65  virtual void terminate() override;
67  protected:
68 
73  void loadEvtGenParticleData(Pythia8::Pythia* pythia);
74 
79  int addParticleToPYTHIA(const MCParticle& mcParticle);
80 
82  Pythia8::Pythia* m_Pythia = nullptr;
83 
85  Pythia8::Event* m_PythiaEvent = nullptr;
86 
90  std::string m_parameterfile;
91  int m_listEvent;
92  int m_useEvtGen;
93  std::string m_DecFile;
94  std::string m_UserDecFile;
99  int nAll;
100  int nGood;
102  int nAdded;
103  int nQuarks;
104  int nVpho;
106  std::string m_particleList;
108  };
109 
111 } // end namespace Belle2
Belle2::FragmentationModule::event
virtual void event() override
Event method (process events)
Definition: FragmentationModule.cc:167
Belle2::FragmentationModule::~FragmentationModule
virtual ~FragmentationModule()
Destructor.
Definition: FragmentationModule.cc:67
Belle2::FragmentationModule::m_Pythia
Pythia8::Pythia * m_Pythia
Pythia generator.
Definition: FragmentationModule.h:90
Belle2::FragmentationModule::m_DecFile
std::string m_DecFile
EvtGen decay file.
Definition: FragmentationModule.h:101
Belle2::FragmentationModule::nGood
int nGood
number of events with successful fragmentation.
Definition: FragmentationModule.h:108
Belle2::FragmentationModule::addParticleToPYTHIA
int addParticleToPYTHIA(const MCParticle &mcParticle)
Add particle to Pythia event.
Definition: FragmentationModule.cc:341
Belle2::MCParticleGraph
Class to build, validate and sort a particle decay chain.
Definition: MCParticleGraph.h:48
Belle2::FragmentationModule::m_coherentMixing
bool m_coherentMixing
decay the B0-B0bar coherently.
Definition: FragmentationModule.h:103
EvtGenDecays
A class to perform decays via the external EvtGen decay program, see http://evtgen....
Definition: EvtGenDecays.h:94
Belle2::FragmentationModule::initialize
virtual void initialize() override
Initialize the module.
Definition: FragmentationModule.cc:96
Belle2::FragmentationModule::nVpho
int nVpho
number of virtual exchange particles.
Definition: FragmentationModule.h:112
Belle2::FragmentationModule::nAll
int nAll
number of events created.
Definition: FragmentationModule.h:107
Belle2::FragmentationModule::m_parameterfile
std::string m_parameterfile
Module parameters.
Definition: FragmentationModule.h:98
Belle2::FragmentationModule::m_listEvent
int m_listEvent
list event generated by PYTHIA.
Definition: FragmentationModule.h:99
Belle2::FragmentationModule
The Fragmentation module.
Definition: FragmentationModule.h:59
Belle2::FragmentationModule::loadEvtGenParticleData
void loadEvtGenParticleData(Pythia8::Pythia *pythia)
Load EvtGen particle data.
Definition: FragmentationModule.cc:382
Belle2::FragmentationModule::m_UserDecFile
std::string m_UserDecFile
User EvtGen decay file.
Definition: FragmentationModule.h:102
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::FragmentationModule::m_PythiaEvent
Pythia8::Event * m_PythiaEvent
Pythia event.
Definition: FragmentationModule.h:93
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::FragmentationModule::FragmentationModule
FragmentationModule()
Constructor.
Definition: FragmentationModule.cc:42
Belle2::FragmentationModule::m_particleList
std::string m_particleList
The name of the MCParticle collection.
Definition: FragmentationModule.h:114
Belle2::FragmentationRndm::flat
double flat()
flat random generator.
Definition: FragmentationModule.cc:422
Belle2::FragmentationModule::m_mcparticles
StoreArray< MCParticle > m_mcparticles
store array for the MCParticles
Definition: FragmentationModule.h:115
Belle2::FragmentationModule::terminate
virtual void terminate() override
terminate the module
Definition: FragmentationModule.cc:72
Belle2::FragmentationModule::nAdded
int nAdded
number of added particles.
Definition: FragmentationModule.h:110
Belle2::FragmentationModule::evtgen
EvtGenDecays * evtgen
EvtGen decay engine inside PYTHIA8.
Definition: FragmentationModule.h:95
Belle2::MCParticle
A Class to store the Monte Carlo particle information.
Definition: MCParticle.h:43
Belle2::StoreArray< MCParticle >
Belle2::FragmentationModule::mcParticleGraph
MCParticleGraph mcParticleGraph
An instance of the MCParticle graph.
Definition: FragmentationModule.h:105
Belle2::FragmentationModule::nQuarks
int nQuarks
number of quarks.
Definition: FragmentationModule.h:111
Belle2::FragmentationModule::m_useEvtGen
int m_useEvtGen
use EvtGen for some decays.
Definition: FragmentationModule.h:100