Belle II Software  release-05-02-19
InitialParticleGeneration.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Martin Ritter *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 #ifndef GENERATORS_UTILITIES_INITIALPARTICLEGENERATION_H
13 #define GENERATORS_UTILITIES_INITIALPARTICLEGENERATION_H
14 
15 #include <framework/datastore/StoreObjPtr.h>
16 #include <framework/database/DBObjPtr.h>
17 #include <framework/utilities/MultivariateNormalGenerator.h>
18 #include <framework/dbobjects/BeamParameters.h>
19 #include <framework/dataobjects/MCInitialParticles.h>
20 
21 namespace Belle2 {
36  public:
41  explicit InitialParticleGeneration(int allowedFlags = 0): m_allowedFlags(allowedFlags | MCInitialParticles::c_generateCMS) {};
42 
45 
63  TVector3 updateVertex(bool force = false);
64 
66  const BeamParameters& getBeamParameters() const { return *m_beamParams; }
67 
69  void initialize();
70 
72  void setAllowedFlags(int allowedFlags)
73  {
75  }
76 
77  private:
78 
83  MCInitialParticles& generate(int allowedFlags);
84 
90  TVector3 generateVertex(const TVector3& initial, const TMatrixDSym& cov, MultivariateNormalGenerator& gen);
96  TLorentzVector generateBeam(const TLorentzVector& initial, const TMatrixDSym& cov, MultivariateNormalGenerator& gen);
109  };
110 
111 
113 } //Belle2 namespace
114 #endif // GENERATORS_UTILITIES_INITIALPARTICLEGENERATION_H
Belle2::InitialParticleGeneration::generateVertex
TVector3 generateVertex(const TVector3 &initial, const TMatrixDSym &cov, MultivariateNormalGenerator &gen)
generate the vertex
Definition: InitialParticleGeneration.cc:34
Belle2::InitialParticleGeneration::InitialParticleGeneration
InitialParticleGeneration(int allowedFlags=0)
constructor
Definition: InitialParticleGeneration.h:41
Belle2::InitialParticleGeneration::updateVertex
TVector3 updateVertex(bool force=false)
Update the vertex position:
Definition: InitialParticleGeneration.cc:118
Belle2::InitialParticleGeneration::m_event
StoreObjPtr< MCInitialParticles > m_event
Datastore object containing the generated event.
Definition: InitialParticleGeneration.h:100
Belle2::InitialParticleGeneration::m_generateHER
MultivariateNormalGenerator m_generateHER
Generator for HER.
Definition: InitialParticleGeneration.h:102
Belle2::InitialParticleGeneration::m_generateVertex
MultivariateNormalGenerator m_generateVertex
Generator for Vertex.
Definition: InitialParticleGeneration.h:106
Belle2::InitialParticleGeneration::getBeamParameters
const BeamParameters & getBeamParameters() const
Return reference to nominal beam parameters.
Definition: InitialParticleGeneration.h:66
Belle2::InitialParticleGeneration::generateBeam
TLorentzVector generateBeam(const TLorentzVector &initial, const TMatrixDSym &cov, MultivariateNormalGenerator &gen)
generate 4 vector for one beam
Definition: InitialParticleGeneration.cc:44
Belle2::InitialParticleGeneration
Generate Collision.
Definition: InitialParticleGeneration.h:35
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::MultivariateNormalGenerator
Class to generate normal distributed, correlated random numbers given the mean values and the covaria...
Definition: MultivariateNormalGenerator.h:62
Belle2::MCInitialParticles
This class contains the initial state for the given event.
Definition: MCInitialParticles.h:35
Belle2::MCInitialParticles::c_generateCMS
@ c_generateCMS
generate initial event in CMS instead of lab
Definition: MCInitialParticles.h:42
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::StoreObjPtr
Type-safe access to single objects in the data store.
Definition: ParticleList.h:33
Belle2::InitialParticleGeneration::m_generateLER
MultivariateNormalGenerator m_generateLER
Generator for LER.
Definition: InitialParticleGeneration.h:104
Belle2::InitialParticleGeneration::m_allowedFlags
int m_allowedFlags
Allowed generation flags.
Definition: InitialParticleGeneration.h:108
Belle2::InitialParticleGeneration::m_beamParams
DBObjPtr< BeamParameters > m_beamParams
Datastore object containing the nominal beam parameters.
Definition: InitialParticleGeneration.h:98
Belle2::InitialParticleGeneration::initialize
void initialize()
function to be executed on initialize()
Definition: InitialParticleGeneration.cc:29
Belle2::InitialParticleGeneration::generate
MCInitialParticles & generate()
Generate a new event.
Definition: InitialParticleGeneration.cc:84
Belle2::BeamParameters
This class contains the nominal beam parameters and the parameters used for smearing of the primary v...
Definition: BeamParameters.h:33
Belle2::InitialParticleGeneration::setAllowedFlags
void setAllowedFlags(int allowedFlags)
Set allowed flags.
Definition: InitialParticleGeneration.h:72