Belle II Software development
BHWideInputModule.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#include <framework/core/Module.h>
12#include <framework/logging/Logger.h>
13
14#include <generators/bhwide/BHWide.h>
15
16#include <mdst/dataobjects/MCParticleGraph.h>
17
18#include <generators/utilities/InitialParticleGeneration.h>
19
20#include <vector>
21
22namespace Belle2 {
27
32 class BHWideInputModule : public Module {
33
34 public:
35
41
43 virtual ~BHWideInputModule();
44
46 virtual void initialize() override;
47
49 virtual void event() override;
50
52 virtual void terminate() override;
53
54 protected:
55
56 double getBeamEnergyCM(double e1, double e2, double angle);
57
59 std::vector<double>
61 std::vector<double>
63
65 std::string m_vacPolString;
67 double m_eMin;
69 double m_wtMax;
70
74
75 template <typename T>
76 std::vector<T> make_vector(T const& t1, T const& t2);
77
78 template <typename T>
79 std::pair<T, T> vectorToPair(std::vector<T>& vec, const std::string& name = "");
80
81 private:
82
85
86 bool m_initialized{false};
88
90
91 };
92
93 template <typename T>
94 inline std::vector<T> BHWideInputModule::make_vector(T const& t1, T const& t2)
95 {
96 std::vector<T> v;
97 v.push_back(t1);
98 v.push_back(t2);
99 return v;
100 }
101
102 template <typename T>
103 inline std::pair<T, T> BHWideInputModule::vectorToPair(std::vector<T>& vec, const std::string& name)
104 {
105 std::pair<T, T> p;
106 if (vec.size() != 2) {
107 B2ERROR("The parameter " + name + " has to have exactly 2 elements !");
108 } else {
109 p.first = vec[0];
110 p.second = vec[1];
111 }
112 return p;
113 }
114
116} // end namespace Belle2
std::string m_vacPolString
Vacuum polarization as string.
double m_maxAcollinearity
maximum acollinearity angle between finale state leptons in degrees.
DBObjPtr< BeamParameters > m_beamParams
BeamParameter.
bool m_initialized
True if generator has been initialized.
std::vector< double > m_ScatteringAngleRangeElectron
Min [0] and Max [1] value for the scattering angle [deg] of the electron.
virtual void initialize() override
Initializes the module.
virtual void event() override
Method is called for each event.
virtual void terminate() override
Method is called at the end of the event processing.
std::vector< double > m_ScatteringAngleRangePositron
Module parameters.
bool m_weakCorrections
EW corrections on/off.
BHWide::PhotonVacPolarization m_vacPol
Vacuum polarization.
double getBeamEnergyCM(double e1, double e2, double angle)
Get CM beam energy from LER, HER and crossing angle.
virtual ~BHWideInputModule()
Destructor.
MCParticleGraph m_mcGraph
The MCParticle graph object.
double m_eMin
Minimum energy for leptons in the final state, in GeV.
InitialParticleGeneration m_initial
initial particle used by BeamParameter class
void initializeGenerator()
Method is called to initialize the generator.
double m_wtMax
Maximum weight (wtmax).
C++ Interface for the Fortran Bhabha scattering generator BHWide.
Definition BHWide.h:32
PhotonVacPolarization
Call photon polarization.
Definition BHWide.h:61
Class for accessing objects in the database.
Definition DBObjPtr.h:21
Class to build, validate and sort a particle decay chain.
Module()
Constructor.
Definition Module.cc:30
std::pair< T, T > vectorToPair(std::vector< T > &vec, const std::string &name="")
std::vector< T > make_vector(T const &t1, T const &t2)
make_vector.
Abstract base class for different kinds of events.