Belle II Software  release-08-01-10
BeamParameters Class Reference

This class contains the nominal beam parameters and the parameters used for smearing of the primary vertex and the beam energy and momentum. More...

#include <BeamParameters.h>

Inheritance diagram for BeamParameters:
Collaboration diagram for BeamParameters:

Public Types

enum  EGenerationFlags {
  c_generateCMS = 1 << 0 ,
  c_smearBeamEnergy = 1 << 1 ,
  c_smearBeamDirection = 1 << 2 ,
  c_smearBeam = c_smearBeamEnergy | c_smearBeamDirection ,
  c_smearVertex = 1 << 3 ,
  c_smearALL = c_smearVertex | c_smearBeam
}
 Possible Flags for initial event generation. More...
 

Public Member Functions

 BeamParameters ()
 Default constructor.
 
 BeamParameters (const BeamParameters &b)
 Copy constructor.
 
BeamParametersoperator= (const BeamParameters &b)
 Assignment operator.
 
bool operator== (const BeamParameters &b) const
 Equality operator.
 
void setGenerationFlags (int flags) override
 Set the generation flags to be used for event generation (ORed combination of EGenerationFlags). More...
 
void setCovHER (const TMatrixDSym &cov)
 Set the covariance matrix for HER (E, theta_x, theta_y) where E is the energy, theta_x is the horizontal angle between nominal direction and actual direction in spread and theta_y is the vertical angle The upper triangle will be saved.
 
void setCovLER (const TMatrixDSym &cov)
 Set the covariance matrix for LER (E, theta_x, theta_y) where E is the energy, theta_x is the horizontal angle between nominal direction and actual direction in spread and theta_y is the vertical angle. More...
 
void setCovVertex (const TMatrixDSym &cov)
 Set the covariance matrix of the vertex position. More...
 
void setHER (double energy, double angleX, double angleY, const std::vector< double > &cov)
 Set the HER FourVector and error matrix from beam energy, angle and covariance entries. More...
 
void setLER (double energy, double angleX, double angleY, const std::vector< double > &cov)
 Set the LER FourVector and error matrix from beam energy, angle and covariance entries. More...
 
void setVertex (const ROOT::Math::XYZVector &vertex, const std::vector< double > &cov)
 Set the vertex position and error matrix. More...
 
TMatrixDSym getCovHER () const
 Get the covariance matrix of HER (E, theta_x, theta_y) where E is the energy, theta_x is the horizontal angle between nominal direction and actual direction in spread and theta_y is the vertical angle.
 
TMatrixDSym getCovLER () const
 Get the covariance matrix of LER (E, theta_x, theta_y) where E is the energy, theta_x is the horizontal angle between nominal direction and actual direction in spread and theta_y is the vertical angle.
 
TMatrixDSym getCovVertex () const
 Get the covariance matrix of the vertex position.
 
void setLER (const ROOT::Math::PxPyPzEVector &ler)
 Set the Low Energy Beam 4-momentum.
 
void setHER (const ROOT::Math::PxPyPzEVector &her)
 Set the High Energy Beam 4-momentum.
 
void setVertex (const ROOT::Math::XYZVector &vertex)
 Set the vertex position.
 
bool operator== (const MCInitialParticles &b) const
 Equality operator.
 
void set (const ROOT::Math::PxPyPzEVector &her, const ROOT::Math::PxPyPzEVector &ler, const ROOT::Math::XYZVector &vertex)
 Set the initial event values, i.e. More...
 
void setByLorentzTransformation (double Ecms, double bX, double bY, double bZ, double angleXZ, double angleYZ, const ROOT::Math::XYZVector &vertex)
 Initialize the event values from CMS energy and parameters of the Lorentz transformation between LAB and CMS. More...
 
void setHER (const ROOT::Math::PxPyPzEVector &her)
 Set the High Energy Beam 4-momentum.
 
void setLER (const ROOT::Math::PxPyPzEVector &ler)
 Set the Low Energy Beam 4-momentum.
 
void setVertex (const ROOT::Math::XYZVector &vertex)
 Set the vertex position.
 
void setTime (double time)
 Set collison time.
 
const ROOT::Math::PxPyPzEVector & getHER () const
 Get 4vector of the high energy beam.
 
const ROOT::Math::PxPyPzEVector & getLER () const
 Get 4vector of the low energy beam.
 
const ROOT::Math::XYZVector & getVertex () const
 Get the position of the collision.
 
double getTime () const
 Get collison time.
 
double getEnergy () const
 Get the the actual collision energy (in lab system)
 
double getMass () const
 Get the invariant mass of the collision (= energy in CMS)
 
const ROOT::Math::LorentzRotation & getLabToCMS () const
 Return the LorentzRotation to convert from lab to CMS frame.
 
const ROOT::Math::LorentzRotation & getCMSToLab () const
 Return the LorentzRotation to convert from CMS to lab frame.
 
bool getValidFlag () const
 Get the flag to check if a valid MCInitialParticles object was already generated and filled in an event.
 
int getGenerationFlags () const
 Get the generation flags to be used for event generation (ORed combination of EGenerationFlags)
 
bool hasGenerationFlags (int flags) const
 Check if a certain set of EGenerationFlags is set.
 
std::string getGenerationFlagString (const std::string &separator=" ") const
 Return string representation of all active flags for printing. More...
 

Static Public Member Functions

static ROOT::Math::PxPyPzEVector getFourVector (double energy, double angleX, double angleY, bool isHER)
 Calculate FourVector of a beam from energy and angles in xz and yz planes. More...
 
static ROOT::Math::LorentzRotation cmsToLab (double bX, double bY, double bZ, double angleXZ, double angleYZ)
 Return the LorentzRotation from CMS to LAB based on the following parameters. More...
 

Protected Attributes

int m_generationFlags {0}
 Flags to be used when generating events.
 

Private Member Functions

 ClassDefOverride (BeamParameters, 3)
 ClassDef.
 
void calculateBoost () const
 Calculate the boost if necessary.
 
void resetBoost ()
 Reset cached transformations after changing parameters.
 
 ClassDef (MCInitialParticles, 5)
 ROOT Dictionary.
 

Static Private Member Functions

static void setCovMatrix (Double32_t *member, const std::vector< double > &cov, bool common)
 Set covariance matrix from vector of entries. More...
 
static void setCovMatrix (Double32_t *member, const TMatrixDSym &cov)
 Set covariance matrix from ROOT Matrix object.
 
static TMatrixDSym getCovMatrix (const Double32_t *member)
 Obtain covariance matrix from a given float array.
 

Private Attributes

Double32_t m_covHER [6]
 Covariance matrix of the high energy beam at the IP.
 
Double32_t m_covLER [6]
 Covariance matrix of the low energy beam at the IP.
 
Double32_t m_covVertex [6]
 Covariance matrix of the vertex position.
 
ROOT::Math::PxPyPzEVector m_her
 HER 4vector.
 
ROOT::Math::PxPyPzEVector m_ler
 LER 4vector.
 
ROOT::Math::XYZVector m_vertex
 collision position
 
double m_time = 0
 collision time
 
ROOT::Math::LorentzRotation * m_labToCMS {nullptr}
 Boost from Lab into CMS. More...
 
ROOT::Math::LorentzRotation * m_CMSToLab {nullptr}
 transient More...
 
double m_invariantMass {0.0}
 transient More...
 
bool m_validFlag = false
 transient More...
 

Detailed Description

This class contains the nominal beam parameters and the parameters used for smearing of the primary vertex and the beam energy and momentum.

It is event independent (but might be run or even sub run dependent)

Definition at line 25 of file BeamParameters.h.

Member Enumeration Documentation

◆ EGenerationFlags

enum EGenerationFlags
inherited

Possible Flags for initial event generation.

Enumerator
c_generateCMS 

generate initial event in CMS instead of lab

c_smearBeamEnergy 

smear energy of HER and LER (but not direction)

c_smearBeamDirection 

smear direction of HER and LER (but not energy)

c_smearBeam 

smear the full beam momentum (energy and direction)

c_smearVertex 

smear vertex

c_smearALL 

smear all

Definition at line 36 of file MCInitialParticles.h.

Member Function Documentation

◆ cmsToLab()

ROOT::Math::LorentzRotation cmsToLab ( double  bX,
double  bY,
double  bZ,
double  angleXZ,
double  angleYZ 
)
staticinherited

Return the LorentzRotation from CMS to LAB based on the following parameters.

Parameters
bXx-component of the boost vector, i.e. of (pHER + pLER) / (eHER + eLER), where pHER & pLER are momentum 3-vectors
bYy-component of the boost vector, i.e. of (pHER + pLER) / (eHER + eLER), where pHER & pLER are momentum 3-vectors
bZz-component of the boost vector, i.e. of (pHER + pLER) / (eHER + eLER), where pHER & pLER are momentum 3-vectors
angleXZangle in the XZ plane of the collision axis in the CM system obtained by pure boost
angleYZangle in the YZ plane of the collision axis in the CM system obtained by pure boost

Definition at line 31 of file MCInitialParticles.cc.

◆ getFourVector()

static ROOT::Math::PxPyPzEVector getFourVector ( double  energy,
double  angleX,
double  angleY,
bool  isHER 
)
static

Calculate FourVector of a beam from energy and angles in xz and yz planes.

if isHER=true, the angles are measured wrt +p if isHER=false, the angles are measured wrt -p, as is the standard convention for LER

Parameters
energybeam energy
angleXhorizontal angle wrt z-axis, i.e. angle measured in xz plane
angleYvertical angle wrt z-axis, i.e. angle measured in yz plane
isHERisHER=true for HER, isHER=false for LER

◆ getGenerationFlagString()

std::string getGenerationFlagString ( const std::string &  separator = " ") const
inherited

Return string representation of all active flags for printing.

Parameters
separatorseparation string to be put between flags

Definition at line 13 of file MCInitialParticles.cc.

◆ set()

void set ( const ROOT::Math::PxPyPzEVector &  her,
const ROOT::Math::PxPyPzEVector &  ler,
const ROOT::Math::XYZVector &  vertex 
)
inlineinherited

Set the initial event values, i.e.

the four momenta of both beams and the vertex

Parameters
her4vector of the high energy beam
ler4vector of the low energy beam
vertexposition of the actual collision vertex

Definition at line 97 of file MCInitialParticles.h.

◆ setByLorentzTransformation()

void setByLorentzTransformation ( double  Ecms,
double  bX,
double  bY,
double  bZ,
double  angleXZ,
double  angleYZ,
const ROOT::Math::XYZVector &  vertex 
)
inlineinherited

Initialize the event values from CMS energy and parameters of the Lorentz transformation between LAB and CMS.

In addition the vertex is also initialized.

Parameters
Ecmscentre-of-mass energy of the collision
bXx-component of the boost vector, i.e. of (pHER + pLER) / (eHER + eLER), where pHER & pLER are momentum 3-vectors
bYy-component of the boost vector, i.e. of (pHER + pLER) / (eHER + eLER), where pHER & pLER are momentum 3-vectors
bZz-component of the boost vector, i.e. of (pHER + pLER) / (eHER + eLER), where pHER & pLER are momentum 3-vectors
angleXZangle in the XZ plane of the collision axis in the CM system obtained by pure boost
angleYZangle in the YZ plane of the collision axis in the CM system obtained by pure boost
vertexposition of the actual collision vertex

Definition at line 116 of file MCInitialParticles.h.

◆ setCovLER()

void setCovLER ( const TMatrixDSym &  cov)
inline

Set the covariance matrix for LER (E, theta_x, theta_y) where E is the energy, theta_x is the horizontal angle between nominal direction and actual direction in spread and theta_y is the vertical angle.

The upper triangle will be saved.

Definition at line 97 of file BeamParameters.h.

97 { setCovMatrix(m_covLER, cov); }
Double32_t m_covLER[6]
Covariance matrix of the low energy beam at the IP.
static void setCovMatrix(Double32_t *member, const std::vector< double > &cov, bool common)
Set covariance matrix from vector of entries.

◆ setCovMatrix()

static void setCovMatrix ( Double32_t *  member,
const std::vector< double > &  cov,
bool  common 
)
staticprivate

Set covariance matrix from vector of entries.

The vector for the covariance matrix can have either 0, 1, 3, 6 or 9 entries:

  • 0 entries means no error.
  • 1 entry will be treated as the common variance for all variables if common is true. Otherwise it will be taken as the variance of just the first element.
  • 3 entries will be treated as uncorrelated variances for all variables (diagonal of the matrix)
  • 6 entries will be interpreted as the upper triangle of the covariance matrix with the element order being (0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)
  • 9 entries for the full covariance matrix in row-major order. The symmetry of the matrix will not be checked but just the lower triangle will be used.
Parameters
memberto the member which contains the matrix
coventries for the covariance matrix
commonif true a 1-element cov will be treated as the common variance for all diagonal elements

◆ setCovVertex()

void setCovVertex ( const TMatrixDSym &  cov)
inline

Set the covariance matrix of the vertex position.

The upper triangle will be saved.

Definition at line 100 of file BeamParameters.h.

◆ setGenerationFlags()

void setGenerationFlags ( int  flags)
inlineoverridevirtual

Set the generation flags to be used for event generation (ORed combination of EGenerationFlags).

The only difference w.r.t. MCInitialParticles::setGenerationFlags() is that a WARNING is thrown if a flag different from 14 (= all the smearings turned on) is set.

Reimplemented from MCInitialParticles.

Definition at line 74 of file BeamParameters.h.

◆ setHER()

void setHER ( double  energy,
double  angleX,
double  angleY,
const std::vector< double > &  cov 
)

Set the HER FourVector and error matrix from beam energy, angle and covariance entries.

The vector for the covariance matrix can have either 0, 1, 3, 6 or 9 entries:

  • 0 entries means no error.
  • 1 entry will be treated as the variance of the beam energy.
  • 3 entries will be treated as uncorrelated variances for all variables (diagonal of the matrix)
  • 6 entries will be interpreted as the upper triangle of the covariance matrix with the element order being (0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)
  • 9 entries for the full covariance matrix in row-major order. The symmetry of the matrix will not be checked but just the lower triangle will be used.
Parameters
energybeam energy
angleXangle between beam direction and z axis (in the x-z plane). Negative values are treated as M_PI - abs(angle)
angleYangle between beam direction and z axis (in the y-z plane). Negative values are treated as M_PI - abs(angle)
coventries of the covariance matrix.

◆ setLER()

void setLER ( double  energy,
double  angleX,
double  angleY,
const std::vector< double > &  cov 
)

Set the LER FourVector and error matrix from beam energy, angle and covariance entries.

The vector for the covariance matrix can have either 0, 1, 3, 6 or 9 entries:

  • 0 entries means no error.
  • 1 entry will be treated as the variance of the beam energy.
  • 3 entries will be treated as uncorrelated variances for all variables (diagonal of the matrix)
  • 6 entries will be interpreted as the upper triangle of the covariance matrix with the element order being (0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)
  • 9 entries for the full covariance matrix in row-major order. The symmetry of the matrix will not be checked but just the lower triangle will be used.
Parameters
energybeam energy
angleXangle between beam direction and z axis (in the x-z plane). Negative values are treated as M_PI - abs(angle)
angleYangle between beam direction and z axis (in the y-z plane). Negative values are treated as M_PI - abs(angle)
coventries of the covariance matrix.

◆ setVertex()

void setVertex ( const ROOT::Math::XYZVector &  vertex,
const std::vector< double > &  cov 
)

Set the vertex position and error matrix.

The vector for the covariance matrix can have either 0, 1, 3, 6 or 9 entries:

  • 0 entries means no error.
  • 1 entry will be treated as the common variance for x, y and z
  • 3 entries will be treated as uncorrelated variances for all variables (diagonal of the matrix)
  • 6 entries will be interpreted as the upper triangle of the covariance matrix with the element order being (0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)
  • 9 entries for the full covariance matrix in row-major order. The symmetry of the matrix will not be checked but just the upper triangle will be used.
Parameters
vertexvertex position
coventries of the covariance matrix.

Member Data Documentation

◆ m_CMSToLab

ROOT::Math::LorentzRotation* m_CMSToLab {nullptr}
mutableprivateinherited

transient

Boost from CMS into lab. (calculated on first use, not saved to file)

Definition at line 233 of file MCInitialParticles.h.

◆ m_invariantMass

double m_invariantMass {0.0}
mutableprivateinherited

transient

invariant mass of HER+LER (calculated on first use, not saved to file)

Definition at line 235 of file MCInitialParticles.h.

◆ m_labToCMS

ROOT::Math::LorentzRotation* m_labToCMS {nullptr}
mutableprivateinherited

Boost from Lab into CMS.

(calculated on first use, not saved to file)

Definition at line 231 of file MCInitialParticles.h.

◆ m_validFlag

bool m_validFlag = false
privateinherited

transient

Flag to check if a valid MCInitialParticles object was already generated and filled in an event.

Definition at line 237 of file MCInitialParticles.h.


The documentation for this class was generated from the following file: