Belle II Software  release-05-02-19
BabayagaNLOInputModule.h
1 
2 /**************************************************************************
3  * BASF2 (Belle Analysis Framework 2) *
4  * Copyright(C) 2015 Belle II Collaboration *
5  * *
6  * Author: The Belle II Collaboration *
7  * Contributors: Torben Ferber *
8  * *
9  * This software is provided "as is" without any warranty. *
10  **************************************************************************/
11 
12 #ifndef BABAYAGANLOINPUTMODULE_H
13 #define BABAYAGANLOINPUTMODULE_H
14 
15 #include <framework/core/Module.h>
16 #include <framework/logging/Logger.h>
17 
18 #include <generators/babayaganlo/BabayagaNLO.h>
19 #include <generators/utilities/InitialParticleGeneration.h>
20 
21 #include <mdst/dataobjects/MCParticleGraph.h>
22 
23 #include <vector>
24 #include <TFile.h>
25 #include <TH1D.h>
26 
27 
28 namespace Belle2 {
41  class BabayagaNLOInputModule : public Module {
42 
43  public:
44 
49  BabayagaNLOInputModule();//: Module(), m_initial(BeamParameters::c_smearALL) {}
50 
52  virtual ~BabayagaNLOInputModule();
53 
55  virtual void initialize() override;
56 
58  virtual void event() override;
59 
61  virtual void terminate() override;
62 
64  static double generateCMSEnergy()
65  {
66  return s_initial.generate().getMass();
67  }
68 
69  protected:
70 
71  double getBeamEnergyCM(double e1, double e2, double angle);
74  std::string m_order;
75  std::string m_model;
76  std::string m_mode;
77  std::string m_vacPol;
78  std::string m_finalState;
79  double m_eMinFrac;
80  double m_eMin;
81  double m_epsilon;
83  double m_fMax;
85  int m_nPhot;
86  std::vector<double> m_ScatteringAngleRange;
87  std::string m_fileNameExtraInfo;
88  double m_Spread;
90  std::string m_NSKDataFile;
92  std::string m_userMode;
93  double m_eemin;
94  double m_temin;
95  double m_egmin;
96  double m_tgmin;
97  double m_eeveto;
98  double m_teveto;
99  double m_egveto;
100  double m_tgveto;
101  double m_maxprescale;
107  TH1D* m_th1dSDif;
109  template <typename T>
110  std::vector<T> make_vector(T const& t1, T const& t2);
112  template <typename T>
113  std::pair<T, T> vectorToPair(std::vector<T>& vec, const std::string& name = "");
114 
115  private:
117  void initializeGenerator();
118 
119  bool m_initialized{false};
123  s_initial;
124  };
125 
126 
127  template <typename T>
128  inline std::vector<T> BabayagaNLOInputModule::make_vector(T const& t1, T const& t2)
129  {
130  std::vector<T> v;
131  v.push_back(t1);
132  v.push_back(t2);
133  return v;
134  }
135 
136  template <typename T>
137  inline std::pair<T, T> BabayagaNLOInputModule::vectorToPair(std::vector<T>& vec, const std::string& name)
138  {
139  std::pair<T, T> p;
140  if (vec.size() != 2) {
141  B2ERROR("The parameter " + name + " has to have exactly 2 elements !");
142  } else {
143  p.first = vec[0];
144  p.second = vec[1];
145  }
146  return p;
147  }
148 
150 } // end namespace Belle2
151 
152 #endif /* BABAYAGANLOINPUTMODULE_H */
Belle2::BabayagaNLOInputModule::m_mcGraph
MCParticleGraph m_mcGraph
The MCParticle graph object.
Definition: BabayagaNLOInputModule.h:113
Belle2::BabayagaNLOInputModule::BabayagaNLOInputModule
BabayagaNLOInputModule()
Constructor.
Definition: BabayagaNLOInputModule.cc:39
Belle2::BabayagaNLOInputModule::initialize
virtual void initialize() override
Initializes the module.
Definition: BabayagaNLOInputModule.cc:91
Belle2::BabayagaNLOInputModule::m_beamParams
DBObjPtr< BeamParameters > m_beamParams
BeamParameter.
Definition: BabayagaNLOInputModule.h:128
Belle2::BabayagaNLOInputModule::m_temin
double m_temin
Minimum CMS angle between the tagged e-/e+ and -z axis (deg).
Definition: BabayagaNLOInputModule.h:102
Belle2::BabayagaNLOInputModule::m_nPhot
int m_nPhot
fixed number of nphot (hard) photons are generated.
Definition: BabayagaNLOInputModule.h:93
Belle2::BabayagaNLOInputModule::getBeamEnergyCM
double getBeamEnergyCM(double e1, double e2, double angle)
Get the CM energy from LER, HER and the crossing angle.
Belle2::BabayagaNLOInputModule::m_eemin
double m_eemin
Minimum CMS energy of the tagged e-/e+ (GeV).
Definition: BabayagaNLOInputModule.h:101
Belle2::BabayagaNLOInputModule::m_NSKDataFile
std::string m_NSKDataFile
data file for the NSK VP data.
Definition: BabayagaNLOInputModule.h:98
Belle2::BabayagaNLOInputModule::m_eMin
double m_eMin
Minimum energy for leptons in the final state, in GeV.
Definition: BabayagaNLOInputModule.h:88
Belle2::BabayagaNLOInputModule::m_model
std::string m_model
model: matched or ps.
Definition: BabayagaNLOInputModule.h:83
Belle2::MCParticleGraph
Class to build, validate and sort a particle decay chain.
Definition: MCParticleGraph.h:48
Belle2::BabayagaNLOInputModule::m_generator
BabayagaNLO m_generator
Variables.
Definition: BabayagaNLOInputModule.h:112
Belle2::BabayagaNLOInputModule::terminate
virtual void terminate() override
Method is called at the end of the event processing.
Definition: BabayagaNLOInputModule.cc:140
Belle2::BabayagaNLOInputModule::~BabayagaNLOInputModule
virtual ~BabayagaNLOInputModule()
Destructor.
Definition: BabayagaNLOInputModule.cc:87
Belle2::BabayagaNLOInputModule::m_epsilon
double m_epsilon
Soft/hard photon separator in units of CMS/2.
Definition: BabayagaNLOInputModule.h:89
Belle2::BabayagaNLOInputModule::m_tgveto
double m_tgveto
Maximum CMS angle between the gamma and -z axis (deg).
Definition: BabayagaNLOInputModule.h:108
Belle2::BabayagaNLOInputModule::m_ScatteringAngleRange
std::vector< double > m_ScatteringAngleRange
Min [0] and Max [1] value for the scat.
Definition: BabayagaNLOInputModule.h:94
Belle2::BabayagaNLOInputModule::m_maxAcollinearity
double m_maxAcollinearity
maximum acollinearity angle between finale state leptons in degrees.
Definition: BabayagaNLOInputModule.h:90
Belle2::BabayagaNLOInputModule::m_tgmin
double m_tgmin
Minimum CMS angle between the gamma and -z axis (deg).
Definition: BabayagaNLOInputModule.h:104
Belle2::InitialParticleGeneration
Generate Collision.
Definition: InitialParticleGeneration.h:35
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::BabayagaNLOInputModule::generateCMSEnergy
static double generateCMSEnergy()
Static method to get a random CMS energy (used via extern C from fortran).
Definition: BabayagaNLOInputModule.h:72
Belle2::BabayagaNLOInputModule::m_eeveto
double m_eeveto
Minimum CMS energy to veto e-/e+ (GeV).
Definition: BabayagaNLOInputModule.h:105
Belle2::BabayagaNLOInputModule::m_Uncertainty
bool m_Uncertainty
vary all VP related parameters and extracted total uncertainty.
Definition: BabayagaNLOInputModule.h:97
Belle2::BabayagaNLOInputModule::m_finalState
std::string m_finalState
Final state: ee, mm or gg.
Definition: BabayagaNLOInputModule.h:86
Belle2::BabayagaNLO
C++ Interface for the Fortran Bhabha and exclusive two photon generator BABAYAGA.NLO.
Definition: BabayagaNLO.h:37
Belle2::BabayagaNLOInputModule::m_vacPol
std::string m_vacPol
Vacuum polarization: off, hadr5 or hmnt.
Definition: BabayagaNLOInputModule.h:85
Belle2::BabayagaNLOInputModule::m_fileExtraInfo
TFile * m_fileExtraInfo
Output file.
Definition: BabayagaNLOInputModule.h:114
Belle2::BabayagaNLOInputModule::m_initialized
bool m_initialized
True if generator has been initialized.
Definition: BabayagaNLOInputModule.h:127
Belle2::MCInitialParticles::getMass
double getMass() const
Get the invariant mass of the collision (= energy in CMS)
Definition: MCInitialParticles.h:152
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::BabayagaNLOInputModule::m_maxprescale
double m_maxprescale
Maximum prescale value.
Definition: BabayagaNLOInputModule.h:109
Belle2::BabayagaNLOInputModule::m_egmin
double m_egmin
Minimum CMS energy of the gamma (GeV).
Definition: BabayagaNLOInputModule.h:103
Belle2::BabayagaNLOInputModule::m_Spread
double m_Spread
TEMPORARY SOLUTION! Approximate energy spread per beam (CMS).
Definition: BabayagaNLOInputModule.h:96
Belle2::BabayagaNLOInputModule::m_fMax
double m_fMax
Maximum differential cross section weight.
Definition: BabayagaNLOInputModule.h:91
Belle2::BabayagaNLOInputModule::make_vector
std::vector< T > make_vector(T const &t1, T const &t2)
make_vector.
Definition: BabayagaNLOInputModule.h:136
Belle2::BabayagaNLOInputModule::s_initial
static InitialParticleGeneration s_initial
Initial particle for beam parameters, static because we need to call it from FORTRAN here.
Definition: BabayagaNLOInputModule.h:131
Belle2::BabayagaNLOInputModule::m_egveto
double m_egveto
Minimum CMS energy to veto gamma (GeV).
Definition: BabayagaNLOInputModule.h:107
Belle2::BabayagaNLOInputModule::m_mode
std::string m_mode
mode: weighted or unweighted.
Definition: BabayagaNLOInputModule.h:84
Belle2::BabayagaNLOInputModule::m_fileNameExtraInfo
std::string m_fileNameExtraInfo
Extra ROOT file that contains the weight distribution to check overweight bias.
Definition: BabayagaNLOInputModule.h:95
Belle2::BabayagaNLOInputModule::m_th1dSDif
TH1D * m_th1dSDif
Histograms with the event weights.
Definition: BabayagaNLOInputModule.h:115
Belle2::BabayagaNLOInputModule::m_teveto
double m_teveto
Maximum CMS theta of e-/e+ in final state (deg).
Definition: BabayagaNLOInputModule.h:106
Belle2::BabayagaNLOInputModule::m_userMode
std::string m_userMode
User mode similar to TEEGG: ETRON, EGAMMA, GAMMA or PRESCALE or NONE.
Definition: BabayagaNLOInputModule.h:100
Belle2::BabayagaNLOInputModule::m_eMinFrac
double m_eMinFrac
Fractional energy (of cms energy) for leptons in the final state.
Definition: BabayagaNLOInputModule.h:87
Belle2::BabayagaNLOInputModule::vectorToPair
std::pair< T, T > vectorToPair(std::vector< T > &vec, const std::string &name="")
Definition: BabayagaNLOInputModule.h:145
Belle2::BabayagaNLOInputModule::m_nSearchMax
int m_nSearchMax
Events used to search maximum of differential cross section.
Definition: BabayagaNLOInputModule.h:92
Belle2::InitialParticleGeneration::generate
MCInitialParticles & generate()
Generate a new event.
Definition: InitialParticleGeneration.cc:84
Belle2::BabayagaNLOInputModule::initializeGenerator
void initializeGenerator()
Method is called to initialize the generator.
Definition: BabayagaNLOInputModule.cc:145
Belle2::BabayagaNLOInputModule::event
virtual void event() override
Method is called for each event.
Definition: BabayagaNLOInputModule.cc:111
Belle2::BabayagaNLOInputModule::m_order
std::string m_order
Module parameters.
Definition: BabayagaNLOInputModule.h:82