19#include "BDSBunchSigmaMatrix.hh"
21#include "BDSUtilities.hh"
23#include "parser/beam.h"
25#include "Randomize.hh"
26#include "CLHEP/Matrix/SymMatrix.h"
27#include "CLHEP/Matrix/Vector.h"
28#include "CLHEP/RandomObjects/RandMultiGauss.h"
29#include "CLHEP/Units/PhysicalConstants.h"
31BDSBunchSigmaMatrix::BDSBunchSigmaMatrix():
38 G4Transform3D beamlineTransformIn,
39 const G4double beamlineSIn)
46 case BDSBunchType::gaussmatrix:
75 case BDSBunchType::gauss:
77 sigmaGM[0][0] = std::pow(beam.
sigmaX, 2);
78 sigmaGM[1][1] = std::pow(beam.
sigmaXp,2);
79 sigmaGM[2][2] = std::pow(beam.
sigmaY, 2);
80 sigmaGM[3][3] = std::pow(beam.
sigmaYp,2);
81 sigmaGM[4][4] = std::pow(
sigmaT, 2);
82 sigmaGM[5][5] = std::pow(
sigmaE, 2);
91 G4cout <<
"sigmaGM" << sigmaGM << G4endl;
Common functionality for a 6D Gaussian distribution.
CLHEP::RandMultiGauss * CreateMultiGauss(CLHEP::HepRandomEngine &anEngine, const CLHEP::HepVector &mu, CLHEP::HepSymMatrix &sigma)
CLHEP::RandMultiGauss * gaussMultiGen
Randon number generator with sigma matrix and mean.
virtual void SetOptions(const BDSParticleDefinition *beamParticle, const GMAD::Beam &beam, const BDSBunchType &distrType, G4Transform3D beamlineTransformIn=G4Transform3D::Identity, const G4double beamlineS=0)
virtual void SetOptions(const BDSParticleDefinition *beamParticle, const GMAD::Beam &beam, const BDSBunchType &distrType, G4Transform3D beamlineTransformIn=G4Transform3D::Identity, const G4double beamlineS=0)
G4double sigmaE
Centre of distributions.
G4bool finiteSigmaE
Flags to ignore random number generator in case of no finite E or T.
G4double sigmaT
Centre of distributions.
G4bool finiteSigmaT
Flags to ignore random number generator in case of no finite E or T.
Wrapper for particle definition.
Improve type-safety of native enum data type in C++.
type underlying() const
return underlying value (can be used in switch statement)
double sigma45
for the gaussian sigma matrix distribution
double sigma16
for the gaussian sigma matrix distribution
double sigmaX
for the gaussian beam distribution
double sigma66
for the gaussian sigma matrix distribution
double sigma35
for the gaussian sigma matrix distribution
double sigma44
for the gaussian sigma matrix distribution
double sigmaXp
for the gaussian beam distribution
double sigma13
for the gaussian sigma matrix distribution
double sigma34
for the gaussian sigma matrix distribution
double sigmaYp
for the gaussian beam distribution
double sigma12
for the gaussian sigma matrix distribution
double sigma26
for the gaussian sigma matrix distribution
double sigma25
for the gaussian sigma matrix distribution
double sigma36
for the gaussian sigma matrix distribution
double sigma46
for the gaussian sigma matrix distribution
double sigma14
for the gaussian sigma matrix distribution
double sigma23
for the gaussian sigma matrix distribution
double sigma11
for the gaussian sigma matrix distribution
double sigma22
for the gaussian sigma matrix distribution
double sigma33
for the gaussian sigma matrix distribution
double sigma15
for the gaussian sigma matrix distribution
double sigma55
for the gaussian sigma matrix distribution
double sigma56
for the gaussian sigma matrix distribution
double sigma24
for the gaussian sigma matrix distribution
double sigmaY
for the gaussian beam distribution
G4bool IsFinite(G4double value, G4double tolerance=std::numeric_limits< double >::epsilon())