Belle II Software  release-05-01-25
BHWide.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2011 Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Andreas Moll *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <mdst/dataobjects/MCParticleGraph.h>
14 #include <TLorentzRotation.h>
15 #include <utility>
16 
17 namespace Belle2 {
33  class BHWide {
34  public:
35 
37  enum Channel {
38  CH_BOTH = 0,
39  CH_S_ONLY = 1,
40  CH_T_ONLY = 2
41  };
42 
44  enum RandomGenerator {
45  RG_RANMAR = 1,
46  RG_RANECU = 2
47  };
48 
50  enum EWCorrectionLib {
51  EC_BABAMC = 1,
53  };
54 
56  enum HardBremsModel {
57  HM_HELICITY_AMP = 1,
58  HM_CALKUL = 2
59  };
60 
63  PP_OFF = 0,
64  PP_BHLUMI = 1,
67  };
68 
72  BHWide();
73 
75  ~BHWide();
76 
78  void setDefaultSettings();
79 
83  void enableZContribution(bool zContribution = true) { m_zContribution = zContribution; }
84 
88  void setChannel(Channel channel) { m_channel = channel; }
89 
93  void enableWeights(bool weighted = true) { m_weighted = weighted; }
94 
98  void setRandomGenerator(RandomGenerator randomGenerator) { m_randomGenerator = randomGenerator; }
99 
103  void enableWeakCorrections(bool weakCorrections = true) { m_weakCorrections = weakCorrections; }
104 
108  void setElectroWeakCorrectionsLib(EWCorrectionLib ewCorrectionLib) { m_ewCorrectionLib = ewCorrectionLib; }
109 
113  void setHardBremsModel(HardBremsModel hardBremsModel) { m_hardBremsModel = hardBremsModel; }
114 
118  void setPhotonVacPolarization(PhotonVacPolarization photonVacPol) { m_photonVacPol = photonVacPol; }
123  void setCMSEnergy(double cmsEnergy) { m_cmsEnergy = cmsEnergy; }
124 
128  void setScatAnglePositron(std::pair<double, double> angleRange) { m_ScatteringAngleRangePositron = angleRange; }
129 
133  void setScatAngleElectron(std::pair<double, double> angleRange) { m_ScatteringAngleRangeElectron = angleRange; }
134 
138  void setMinEnergyFinalStatePos(double minEnergyFinalStatePos) { m_minEnergyFinalStatePos = minEnergyFinalStatePos; }
139 
143  void setMinEnergyFinalStateElc(double minEnergyFinalStateElc) { m_minEnergyFinalStateElc = minEnergyFinalStateElc; }
144 
148  void setMaxAcollinearity(double maxAcollinearity) { m_maxAcollinearity = maxAcollinearity; }
149 
153  void setInfCutCMSEnergy(double infCutCMSEnergy) { m_infCutCMSEnergy = infCutCMSEnergy; }
154 
158  void setMaxRejectionWeight(double maxRejectionWeight) { m_maxRejectionWeight = maxRejectionWeight; }
159 
163  void setMassZ(double massZ) { m_massZ = massZ; }
164 
168  void setWidthZ(double widthZ) { m_widthZ = widthZ; }
169 
173  void setSinW2(double sinW2) { m_sinW2 = sinW2; }
174 
178  void setMassTop(double massTop) { m_massTop = massTop; }
179 
183  void setMassHiggs(double massHiggs) { m_massHiggs = massHiggs; }
184 
188  void init();
189 
195  void generateEvent(MCParticleGraph& mcGraph, TVector3 vertex, TLorentzRotation boost);
196 
201  void term();
202 
206  double getCrossSection() { return m_crossSection; }
207 
211  double getCrossSectionError() { return m_crossSectionError; }
212 
213 
214  protected:
215 
216  bool m_zContribution;
218  bool m_weighted;
220  bool m_weakCorrections;
225  double m_cmsEnergy;
226  std::pair<double, double> m_ScatteringAngleRangePositron;
227  std::pair<double, double> m_ScatteringAngleRangeElectron;
232  double m_infCutCMSEnergy;
235  double m_massZ;
236  double m_widthZ;
237  double m_sinW2;
238  double m_massTop;
239  double m_massHiggs;
241  double m_crossSection;
242  double m_crossSectionError;
246 
254  void storeParticle(MCParticleGraph& mcGraph, const double* mom, int pdg, TVector3 vertex, TLorentzRotation boost,
255  bool isVirtual = false, bool isInitial = false);
256 
257  private:
258 
259  int m_npar[100];
260  double m_xpar[100];
261  };
263 }
264 
265 
Belle2::BHWide::setMassZ
void setMassZ(double massZ)
Sets the mass of the Z Boson.
Definition: BHWide.h:171
Belle2::BHWide::m_photonVacPol
PhotonVacPolarization m_photonVacPol
Photon vacuum polarization switch.
Definition: BHWide.h:231
Belle2::BHWide::~BHWide
~BHWide()
Destrucotr.
Definition: BHWide.cc:76
Belle2::BHWide::m_minEnergyFinalStateElc
double m_minEnergyFinalStateElc
Minimum energy [GeV] for final state electron.
Definition: BHWide.h:238
Belle2::MCParticleGraph
Class to build, validate and sort a particle decay chain.
Definition: MCParticleGraph.h:48
Belle2::BHWide::CH_BOTH
@ CH_BOTH
both s and t-channels + interferences.
Definition: BHWide.h:46
Belle2::BHWide::m_sinW2
double m_sinW2
sin^2(theta_W) (may be recalculated by EW library).
Definition: BHWide.h:245
Belle2::BHWide::m_massTop
double m_massTop
top quark mass [GeV].
Definition: BHWide.h:246
Belle2::BHWide::m_xpar
double m_xpar[100]
Double parameters for BHWide.
Definition: BHWide.h:268
Belle2::BHWide::PhotonVacPolarization
PhotonVacPolarization
Call photon polarization.
Definition: BHWide.h:70
Belle2::BHWide::m_massZ
double m_massZ
Z mass [GeV].
Definition: BHWide.h:243
Belle2::BHWide::setMinEnergyFinalStatePos
void setMinEnergyFinalStatePos(double minEnergyFinalStatePos)
Sets the minimal energy for the scattered positron.
Definition: BHWide.h:146
Belle2::BHWide::m_cmsEnergy
double m_cmsEnergy
CMS Energy = 2*Ebeam [GeV].
Definition: BHWide.h:233
Belle2::BHWide::setCMSEnergy
void setCMSEnergy(double cmsEnergy)
Sets the CMS energy.
Definition: BHWide.h:131
Belle2::BHWide::m_npar
int m_npar[100]
Integer parameters for BHWide.
Definition: BHWide.h:267
Belle2::BHWide::EWCorrectionLib
EWCorrectionLib
Call electroweak correction.
Definition: BHWide.h:58
Belle2::BHWide::term
void term()
Terminates the generator.
Definition: BHWide.cc:140
Belle2::BHWide::setRandomGenerator
void setRandomGenerator(RandomGenerator randomGenerator)
Set the type of the randomN nmber generator.
Definition: BHWide.h:106
Belle2::BHWide::m_crossSectionError
double m_crossSectionError
The error on the cross section of the generated bhabha scattering events.
Definition: BHWide.h:250
Belle2::BHWide::setInfCutCMSEnergy
void setInfCutCMSEnergy(double infCutCMSEnergy)
Sets the CMS energy on which an infrared cut is performed.
Definition: BHWide.h:161
Belle2::BHWide::init
void init()
Initializes the generator.
Definition: BHWide.cc:110
Belle2::RandomGenerator
Fast Random number Generator using on xorshift1024* [arXiv:1402.6246].
Definition: RandomGenerator.h:47
Belle2::BHWide::setMassHiggs
void setMassHiggs(double massHiggs)
Sets the mass for the Higgs Boson.
Definition: BHWide.h:191
Belle2::BHWide::applySettings
void applySettings()
Apply the settings to the internal Fortran generator.
Definition: BHWide.cc:154
Belle2::BHWide::m_weighted
bool m_weighted
Switch for constant, variable weight.
Definition: BHWide.h:226
Belle2::BHWide::EC_ALIBABA
@ EC_ALIBABA
ElectroWeak Corr.
Definition: BHWide.h:60
Belle2::BHWide::m_massHiggs
double m_massHiggs
Higgs mass [GeV].
Definition: BHWide.h:247
Belle2::BHWide::PP_BURKHARDT
@ PP_BURKHARDT
Burkhardt and Pietrzyk 1995 (Moriond).
Definition: BHWide.h:74
Belle2::BHWide::CH_T_ONLY
@ CH_T_ONLY
only t-channel (for tests!), with model == HM_CALKUL.
Definition: BHWide.h:48
Belle2::BHWide::HM_CALKUL
@ HM_CALKUL
from CALKUL, Nucl.
Definition: BHWide.h:66
Belle2::BHWide::setScatAngleElectron
void setScatAngleElectron(std::pair< double, double > angleRange)
Sets the theta scattering angle range for the scattered electron.
Definition: BHWide.h:141
Belle2::BHWide::m_maxAcollinearity
double m_maxAcollinearity
Maximum acollinearity [deg] of final state e+e-.
Definition: BHWide.h:239
Belle2::BHWide::m_ewCorrectionLib
EWCorrectionLib m_ewCorrectionLib
Option for ElectroWeak Corrections Library.
Definition: BHWide.h:229
Belle2::BHWide::PP_EIDELMAN
@ PP_EIDELMAN
S.
Definition: BHWide.h:73
Belle2::BHWide::m_hardBremsModel
HardBremsModel m_hardBremsModel
type of MODEL subprogram and QED matrix element for hard bremsstrahlung.
Definition: BHWide.h:230
Belle2::BHWide::m_minEnergyFinalStatePos
double m_minEnergyFinalStatePos
Minimum energy [GeV] for final state positron.
Definition: BHWide.h:237
Belle2::BHWide::setHardBremsModel
void setHardBremsModel(HardBremsModel hardBremsModel)
Set the type of the hard bremsstrahlung model.
Definition: BHWide.h:121
Belle2::BHWide::m_randomGenerator
RandomGenerator m_randomGenerator
Type of random number generator.
Definition: BHWide.h:227
Belle2::BHWide::PP_BHLUMI
@ PP_BHLUMI
Burkhardt et.al.
Definition: BHWide.h:72
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::BHWide::m_channel
Channel m_channel
Channel choice.
Definition: BHWide.h:225
Belle2::BHWide::m_weakCorrections
bool m_weakCorrections
Switching ON/OFF weak corrections.
Definition: BHWide.h:228
Belle2::BHWide::storeParticle
void storeParticle(MCParticleGraph &mcGraph, const double *mom, int pdg, TVector3 vertex, TLorentzRotation boost, bool isVirtual=false, bool isInitial=false)
Store a single generated particle into the MonteCarlo graph.
Definition: BHWide.cc:189
Belle2::BHWide::setSinW2
void setSinW2(double sinW2)
Sets the value for the sinW2.
Definition: BHWide.h:181
Belle2::BHWide::setScatAnglePositron
void setScatAnglePositron(std::pair< double, double > angleRange)
Sets the theta scattering angle range for the scattered positron.
Definition: BHWide.h:136
Belle2::BHWide::m_zContribution
bool m_zContribution
Z-contribution ON/OFF.
Definition: BHWide.h:224
Belle2::BHWide::setMaxRejectionWeight
void setMaxRejectionWeight(double maxRejectionWeight)
Sets the max weight at which events are rejected.
Definition: BHWide.h:166
Belle2::BHWide::EC_BABAMC
@ EC_BABAMC
ElectroWeak Corr.
Definition: BHWide.h:59
Belle2::BHWide::CH_S_ONLY
@ CH_S_ONLY
only s-channel (for tests!), with model == HM_CALKUL.
Definition: BHWide.h:47
Belle2::BHWide::RG_RANMAR
@ RG_RANMAR
Ranmar generator.
Definition: BHWide.h:53
Belle2::BHWide::m_ScatteringAngleRangeElectron
std::pair< double, double > m_ScatteringAngleRangeElectron
Min and Max value for the scattering angle [deg] of the electron.
Definition: BHWide.h:235
Belle2::BHWide::HardBremsModel
HardBremsModel
Call Brem Model.
Definition: BHWide.h:64
Belle2::BHWide::getCrossSection
double getCrossSection()
Returns the total cross section of the generated process.
Definition: BHWide.h:214
Belle2::BHWide::setMaxAcollinearity
void setMaxAcollinearity(double maxAcollinearity)
Sets the max acollinearity angle.
Definition: BHWide.h:156
Belle2::BHWide::enableWeights
void enableWeights(bool weighted=true)
Enable the use of weighted events.
Definition: BHWide.h:101
Belle2::BHWide::m_infCutCMSEnergy
double m_infCutCMSEnergy
Dimensionless infrared cut on CMS energy of soft photons, ( E_phot > CMSENE*EPSCMS/2 ).
Definition: BHWide.h:240
Belle2::BHWide::m_maxRejectionWeight
double m_maxRejectionWeight
Maximum Weight for rejection (if <= 0, it is reset inside the program).
Definition: BHWide.h:241
Belle2::BHWide::setWidthZ
void setWidthZ(double widthZ)
Sets the width of the Z Boson.
Definition: BHWide.h:176
Belle2::BHWide::setMinEnergyFinalStateElc
void setMinEnergyFinalStateElc(double minEnergyFinalStateElc)
Sets the minimal energy for the scattered electron.
Definition: BHWide.h:151
Belle2::BHWide::RandomGenerator
RandomGenerator
Call random generator.
Definition: BHWide.h:52
Belle2::BHWide::Channel
Channel
Call needed channels.
Definition: BHWide.h:45
Belle2::BHWide::HM_HELICITY_AMP
@ HM_HELICITY_AMP
obtained by the BHWide authors (helicity amplitudes).
Definition: BHWide.h:65
Belle2::BHWide::setElectroWeakCorrectionsLib
void setElectroWeakCorrectionsLib(EWCorrectionLib ewCorrectionLib)
Set the type of the electro weak correction library.
Definition: BHWide.h:116
Belle2::BHWide::enableZContribution
void enableZContribution(bool zContribution=true)
Enabled the Z contribution.
Definition: BHWide.h:91
Belle2::BHWide::getCrossSectionError
double getCrossSectionError()
Returns the error on the total cross section of the generated process.
Definition: BHWide.h:219
Belle2::BHWide::m_ScatteringAngleRangePositron
std::pair< double, double > m_ScatteringAngleRangePositron
Min and Max value for the scattering angle [deg] of the positron.
Definition: BHWide.h:234
Belle2::BHWide::PP_OFF
@ PP_OFF
Photon vacuum polarization is off.
Definition: BHWide.h:71
Belle2::BHWide::generateEvent
void generateEvent(MCParticleGraph &mcGraph, TVector3 vertex, TLorentzRotation boost)
Generates one single event.
Definition: BHWide.cc:118
Belle2::BHWide::setDefaultSettings
void setDefaultSettings()
Sets the default settings for the BhWide Fortran generator.
Definition: BHWide.cc:82
Belle2::BHWide::m_crossSection
double m_crossSection
The cross section of the generated bhabha scattering events.
Definition: BHWide.h:249
Belle2::BHWide::RG_RANECU
@ RG_RANECU
Ranecu generator.
Definition: BHWide.h:54
Belle2::BHWide::BHWide
BHWide()
Constructor.
Definition: BHWide.cc:62
Belle2::BHWide::setMassTop
void setMassTop(double massTop)
Sets the mass for the top quark.
Definition: BHWide.h:186
Belle2::BHWide::setChannel
void setChannel(Channel channel)
Set the type of channel which should be used.
Definition: BHWide.h:96
Belle2::BHWide::m_widthZ
double m_widthZ
Z width [GeV] (may be recalculated by EW library).
Definition: BHWide.h:244
Belle2::BHWide::enableWeakCorrections
void enableWeakCorrections(bool weakCorrections=true)
Enable the use of weak corrections.
Definition: BHWide.h:111