31 double zmin,
double zmax,
32 double Bb,
double nrl,
33 double sigmaRPhi,
double N)
39 , mZMin(std::min(zmin, zmax))
40 , mZMax(std::max(zmin, zmax)) {
47 std::cout << ClassName() <<
" with:" << std::endl <<
52 "\tmagnetic field " <<
mMagField <<
" Tesla\n" <<
54 "\tpoint resolution " <<
mSigmaRPhi * 1.e6 <<
" microns\n" <<
55 "\t" <<
mNPlanes <<
" planes" << std::endl;
79 TVector3 intersection(0., 0., std::numeric_limits<double>::quiet_NaN());
82 intersection.SetXYZ(radius, 0., z);
87 TVector3 PlanarTracker::ComputeIntersectionWithPlane(
92 TVector3 intersection(0., 0., std::numeric_limits<double>::quiet_NaN());
95 intersection.SetXYZ(r, 0., z);
101 float r1 = 0., r2 = 0., pi = 3.1415926535;
102 double zPlane1 = 0., zPlane2 = 0., Length = 0.;
107 for (
int i = 0; i <
mNPlanes; i++) {
109 r1 = fabs(tan(p.
GetTheta()) * zPlane1);
111 if (((p.
GetTheta() < pi / 2.) && (zPlane1 > 0.)) ||
112 ((p.
GetTheta() > pi / 2.) && (zPlane1 < 0.))) {
114 r2 = fabs(tan(p.
GetTheta()) * zPlane2);
119 Length = sqrt((zPlane2 - zPlane1) * (zPlane2 - zPlane1) +
120 (r2 - r1) * (r2 - r1));
125 float r1 = 0., r2 = 0., pi = 3.1415926535;
126 double zPlane1 = 0., zPlane2 = 0.;
128 for (
int i = 0; i <
mNPlanes; i++) {
130 r1 = fabs(tan(p.
GetTheta()) * zPlane1);
132 if (((p.
GetTheta() < pi / 2.) && (zPlane1 > 0.)) ||
133 ((p.
GetTheta() > pi / 2.) && (zPlane1 < 0.))) {
135 r2 = fabs(tan(p.
GetTheta()) * zPlane2);
140 return fabs(r2 - r1);
144 double zPlane = 0., pi = 3.1415926535;
150 r = fabs(tan(p.
GetTheta()) * zPlane);
153 if ((p.
GetTheta() < pi / 2.) && (zPlane > 0)) n++;
154 if ((p.
GetTheta() > pi / 2.) && (zPlane < 0)) n++;
double mInnerRadius
Inner radius (m)
TVector3 ComputeIntersectionWithRadius(const erhic::VirtualParticle &, double radius) const
virtual void Print(Option_t *="") const
virtual double GetThetaMin() const
double mOuterRadius
Outer radius (m)
double mSigmaRPhi
Point resolution.
double mNRadLengths
Number of radiation lengths (dimensionless)
double LPrime(const erhic::VirtualParticle &) const
virtual bool Accepts(const erhic::VirtualParticle &) const
double mMagField
Magnetic field strength in Tesla.
virtual TVector3 GetVertex() const =0
double mZMin
Lower (most negative) z face.
virtual double GetThetaMax() const
double mNPlanes
Number of planes.
virtual Double_t GetTheta() const =0
virtual int NPoints(const erhic::VirtualParticle &) const
double mZMax
Upper (most positive) z face.
Abstract base class for a general particle.
double L(const erhic::VirtualParticle &) const