public abstract class Surface extends Object
There are two conceptual levels of concrete surfaces: 1. Pure surfaces are unbounded and are used to specify the set of track parameters used in VTrack. They derive directly from Surface. Typically these are named SurfXXX. 2. Bounded surfaces are derived from pure surfaces. Typically these are named BSurfXXX.
Typically the first two track parameters specify the position on the surface, the next two the direction of the track and the last is q/p where q is the charge (in natural units where the electron is -1) and p is the total momentum in GeV/c. Note that the radius of curvature (in cm) is then Rc = cos(tht) / [ 0.003 * (q/p) * B ] where B is the magnetic field in Tesla and tht is the angle between the field and the direction. Also 0.003 is actually 0.0029979....
This is an abstract class. Classes VTrack and Hit maintain pointers of this type.
Add attributes Interactor and SimInteractor to Surface to allow tracks made up of Hits to be refit, allowing for multiple scattering and energy loss. Will not need Layer to do this for us.
add methods interact() and simInteract() to smear and simulate, respectively.
Modifier and Type | Field and Description |
---|---|
private Interactor |
_interactor |
private SimInteractor |
_siminteractor |
Constructor and Description |
---|
Surface()
default constructor
|
Modifier and Type | Method and Description |
---|---|
boolean |
boundEqual(Surface srf)
Return true if two surfaces are exactly the same
including bounds.
|
TrackSurfaceDirection |
direction(TrackVector vec)
Return the direction consistent with the specified track vector.
|
boolean |
equals(Surface srf)
Equality operator.
|
String |
genericType()
Return the generic type of this class.
|
Interactor |
getInteractor()
Return the Interactor.
|
void |
interact(ETrack tre)
Interact the track parameters.
|
boolean |
isPure()
Return whether this surface is pure.
|
abstract Surface |
newPureSurface()
Return a new surface corresponding to the underlying pure surface.
|
Surface |
newSurface()
Return a new Surface of the full type (clone).
|
abstract double |
parameter(int i)
Return the surface parameter with specified index (0, 1, 2, 3, 4).
|
boolean |
pureEqual(Surface srf)
Return true if two surfaces have the same pure surface.
|
boolean |
pureLessThan(Surface srf)
Ordering operator.
|
abstract CrossStat |
pureStatus(VTrack trv)
Return the crossing status for a track without error.
|
abstract String |
pureType()
pure type of object
|
double |
qOverP(TrackVector vec)
Return q/p in 1/GeV/c.
|
protected boolean |
safeBoundEqual(Surface srf) |
protected abstract boolean |
safePureEqual(Surface srf) |
protected abstract boolean |
safePureLessThan(Surface srf) |
void |
setInteractor(Interactor interactor)
Set the Interactor.
|
void |
setSimInteractor(SimInteractor siminteractor)
Set the SimInteractor.
|
void |
simInteract(VTrack trv)
smear the track parameters
If the Surface contains a SimInteractor, smear the track accordingly.
|
SimInteractor |
simInteractor()
Return the SimInteractor.
|
abstract SpacePath |
spacePath(TrackVector vec,
TrackSurfaceDirection dir)
Return the position and direction of a track vector.
|
abstract SpacePoint |
spacePoint(TrackVector vec)
Return the position of a track vector.
|
static String |
staticType()
The type name for the class
|
CrossStat |
status(ETrack tre)
Return the crossing status for a track with error.
|
CrossStat |
status(VTrack trv)
Return the crossing status for a track without or with error.
|
String |
toString()
String representation of the Surface.
|
String |
type()
Return the full type.
|
static String |
typeName()
The type name for the class
|
abstract TrackVector |
vecDiff(TrackVector vec1,
TrackVector vec2)
Return the difference between two vectors on the surface.
|
private Interactor _interactor
private SimInteractor _siminteractor
public static String typeName()
public static String staticType()
public String type()
public String genericType()
public boolean isPure()
public boolean boundEqual(Surface srf)
srf
- Surface to be compared topublic boolean pureEqual(Surface srf)
srf
- Surface to comparepublic boolean pureLessThan(Surface srf)
srf
- Surface to be compared to.public double qOverP(TrackVector vec)
vec
- TrackVectorpublic TrackSurfaceDirection direction(TrackVector vec)
vec
- TrackVectorpublic void interact(ETrack tre)
tre
- ETrackpublic void setInteractor(Interactor interactor)
interactor
- TrackInteractorpublic Interactor getInteractor()
public void simInteract(VTrack trv)
trv
- VTrack to be smearedpublic void setSimInteractor(SimInteractor siminteractor)
siminteractor
- Interactor to set for this surfacepublic SimInteractor simInteractor()
public String toString()
protected abstract boolean safePureEqual(Surface srf)
protected abstract boolean safePureLessThan(Surface srf)
public abstract String pureType()
public abstract Surface newPureSurface()
public abstract CrossStat pureStatus(VTrack trv)
trv
- VTrackpublic abstract double parameter(int i)
i
- indexpublic abstract TrackVector vecDiff(TrackVector vec1, TrackVector vec2)
vec1
- TrackVectorvec2
- TrackVectorpublic abstract SpacePoint spacePoint(TrackVector vec)
vec
- TrackVectorpublic abstract SpacePath spacePath(TrackVector vec, TrackSurfaceDirection dir)
vec
- TrackVectordir
- TrackSurfaceDirectionprotected boolean safeBoundEqual(Surface srf)
public Surface newSurface()
public CrossStat status(VTrack trv)
trv
- VTrackpublic CrossStat status(ETrack tre)
tre
- ETrackpublic boolean equals(Surface srf)
srf
- Surface to be compared toCopyright © 2016 Linear Collider Detector (LCD). All rights reserved.