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

This class contains the initial state for the given event. More...

#include <MCInitialParticles.h>

Inheritance diagram for MCInitialParticles:
Collaboration diagram for MCInitialParticles:

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

 MCInitialParticles ()
 Default constructor.
 
 MCInitialParticles (const MCInitialParticles &b)
 Copy constructor.
 
MCInitialParticlesoperator= (const MCInitialParticles &b)
 Assignment operator.
 
bool operator== (const MCInitialParticles &b) const
 Equality operator.
 
virtual ~MCInitialParticles ()
 Free memory of the LorentzRotation if it was created.
 
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.
 
virtual void setGenerationFlags (int flags)
 Set the generation flags to be used for event generation (ORed combination of EGenerationFlags)
 
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::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

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

Private Attributes

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 initial state for the given event.

This is not to be confused with the nominal beam parameters but is an event dependent info which contains all implemented smearing effects. It is only set in Montecarlo.

Definition at line 31 of file MCInitialParticles.h.

Member Enumeration Documentation

◆ EGenerationFlags

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.

36  {
38  c_generateCMS = 1 << 0,
40  c_smearBeamEnergy = 1 << 1,
42  c_smearBeamDirection = 1 << 2,
46  c_smearVertex = 1 << 3,
49  };
@ c_smearBeam
smear the full beam momentum (energy and direction)
@ 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)

Member Function Documentation

◆ cmsToLab()

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

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.

32 {
33  //boost to CM frame
34  ROOT::Math::LorentzRotation boost(ROOT::Math::Boost(-1.*ROOT::Math::XYZVector(bX, bY, bZ)));
35 
36 
37  //rotation such that the collision axis is aligned with z-axis
38  ROOT::Math::XYZVector zaxis(0., 0., 1.); //target collision axis
39 
40  double tanAngleXZ = tan(angleXZ);
41  double tanAngleYZ = tan(angleYZ);
42  double Norm = 1 / sqrt(1 + pow(tanAngleXZ, 2) + pow(tanAngleYZ, 2));
43  ROOT::Math::XYZVector electronCMS(Norm * tanAngleXZ, Norm * tanAngleYZ, Norm); //current collision axis
44 
45  ROOT::Math::XYZVector rotAxis = zaxis.Cross(electronCMS);
46  double rotangle = asin(rotAxis.R());
47 
48  ROOT::Math::LorentzRotation rotation(ROOT::Math::AxisAngle(rotAxis, -rotangle));
49 
50 
51  ROOT::Math::LorentzRotation trans = rotation * boost;
52  ROOT::Math::LorentzRotation transI = trans.Inverse();
53  return transI;
54 }
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
double tan(double a)
tan for double
Definition: beamHelpers.h:31

◆ getGenerationFlagString()

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

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 
)
inline

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 
)
inline

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.

Member Data Documentation

◆ m_CMSToLab

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

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}
mutableprivate

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}
mutableprivate

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
private

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 files: