11 #include <Math/AxisAngle.h> 88 if(radLengths < 1E-10)
100 double m2 = particle.
momentum().mass2();
104 double pbeta = p2 /
e;
108 double theta0 = 0.0136 / pbeta * particle.
charge()
110 * (1. + 0.038 *
std::log(radLengths));
119 ROOT::Math::AxisAngle rotation2(particle.
momentum().Vect(), phi);
122 particle.
momentum().SetXYZT(rotated.X(),
141 double norm = particle.
position().Rho();
166 throw cms::Exception(
"fastsim::MultipleScattering") <<
"particle no longer on layer's surface";
174 double x = fabs(aVector.X());
175 double y = fabs(aVector.Y());
176 double z = fabs(aVector.Z());
192 "fastsim::MultipleScattering"
T getParameter(std::string const &) const
Implementation of a generic detector layer (base class for forward/barrel layers).
const math::XYZTLorentzVector & position() const
Return position of the particle.
double flatShoot(double xmin=0.0, double xmax=1.0) const
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
virtual bool isForward() const =0
Returns false/true depending if the object is a (non-abstract) barrel/forward layer.
~MultipleScattering() override
Default destructor.
Base class for any interaction model between a particle and a tracker layer.
XYZVector orthogonal(const XYZVector &aVector) const
Return an orthogonal vector.
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
const double getGeomProperty() const
Return geometric attribute of the layer.
double charge() const
Return charge of the particle.
virtual const double getThickness(const math::XYZTLorentzVector &position) const =0
Return thickness of the layer at a given position.
MultipleScattering(const std::string &name, const edm::ParameterSet &cfg)
Constructor.
double radLenInCm_
Radiation length of material (usually silicon X0=9.360)
math::XYZVector XYZVector
double gaussShoot(double mean=0.0, double sigma=1.0) const
Implementation of multiple scattering in the tracker layers.
const math::XYZTLorentzVector & momentum() const
Return momentum of the particle.
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition of a generic FastSim Particle which can be propagated through the detector (formerly Parti...
math::XYZVector XYZVector
void interact(Particle &particle, const SimplifiedGeometry &layer, std::vector< std::unique_ptr< Particle > > &secondaries, const RandomEngineAndDistribution &random) override
Perform the interaction.
double minPt_
Cut on minimum pT of particle.