22 struct NoIntersection {
23 bool operator()(
const TVector3& v)
const {
24 return TMath::IsNaN(v.z());
35 , mMagField(magneticField)
36 , mNRadLengths(nRadiationLengths)
37 , mSigmaRPhi(resolution) {
49 if (TMath::IsNaN(val)) {
50 std::cerr <<
"MS nan!" << std::endl;
66 if (TMath::IsNaN(val)) {
67 std::cerr <<
"Intrinsic nan!" << std::endl;
85 double y = GetVariable(pIn, kP);
90 HandleBogusValues(pOut, kP);
91 if (pOut.
GetP() < 0.) {
92 std::cerr <<
"p " << pOut.
GetP() << std::endl;
94 if (TMath::IsNaN(pOut.
GetP())) {
95 std::cerr <<
"p nan" << std::endl;
virtual double IntrinsicContribution(const erhic::VirtualParticle &) const
virtual Double_t GetP() const =0
void Smear(const erhic::VirtualParticle &, ParticleMCS &)
virtual double MultipleScatteringContribution(const erhic::VirtualParticle &) const
double mSigmaRPhi
Point resolution.
void SetVertexConstraint(bool constrain)
double mNRadLengths
Number of radiation lengths (dimensionless)
double mMagField
Magnetic field strength in Tesla.
virtual double Resolution(const erhic::VirtualParticle &) const
virtual bool Accepts(const erhic::VirtualParticle &) const =0
virtual double Generate(double midpoint, double width)
virtual int NPoints(const erhic::VirtualParticle &) const =0
bool Is(const erhic::VirtualParticle &prt) const
virtual double LPrime(const erhic::VirtualParticle &) const =0
Tracker(double magneticField=2., double nRadiationLengths=0.01, double resolution=0.001)
virtual TLorentzVector Get4Vector() const =0
virtual Double_t GetP() const
Abstract base class for a general particle.
Distributor Distribution
Random distribution.