ATLAS Offline Software
|
#include <FastCaloSimCaloExtrapolation.h>
Public Types | |
enum | SUBPOS { SUBPOS_MID = TFCSExtrapolationState::SUBPOS_MID, SUBPOS_ENT = TFCSExtrapolationState::SUBPOS_ENT, SUBPOS_EXT = TFCSExtrapolationState::SUBPOS_EXT } |
enum | HITPOSITION { INSIDE, OUTSIDE, ON } |
Public Member Functions | |
FastCaloSimCaloExtrapolation (const std::string &t, const std::string &n, const IInterface *p) | |
~FastCaloSimCaloExtrapolation ()=default | |
virtual StatusCode | initialize () override final |
virtual StatusCode | finalize () override final |
virtual void | extrapolate (TFCSExtrapolationState &result, const TFCSTruthState *truth, const std::vector< G4FieldTrack > &caloSteps) const override final |
virtual void | extrapolate (TFCSExtrapolationState &result, const TFCSTruthState *truth) const override final |
Protected Member Functions | |
const IFastCaloSimGeometryHelper * | GetCaloGeometry () const |
bool | extrapolateToCylinder (const std::vector< G4FieldTrack > &caloSteps, float cylR, float cylZ, Amg::Vector3D &extPos, Amg::Vector3D &momDir) const |
Finds best extrapolation extPos from the caloSteps for a cylinder defined by radius cylR and half-length cylZ as well as corresponding momentum direction. More... | |
void | extrapolateToID (TFCSExtrapolationState &result, const std::vector< G4FieldTrack > &caloSteps, const TFCSTruthState *truth) const |
Extrapolates to ID using three uniquely defined cylinder surfaces. More... | |
void | extrapolateToLayers (TFCSExtrapolationState &result, const std::vector< G4FieldTrack > &caloSteps, const TFCSTruthState *truth) const |
Extrapolates to all other layers of the calorimeter. More... | |
void | findPCA (float cylR, float cylZ, Amg::Vector3D &hitPos1, Amg::Vector3D &hitPos2, Amg::Vector3D &PCA) const |
Finds Point of Closest Approach (PCA) on the cylinder defined by radius cylR and half-length cylZ of a line segment spanned by two hit positions to a cylinder. More... | |
void | getIterativePCA (float cylR, float cylZ, Amg::Vector3D &BoundA, Amg::Vector3D &BoundB, Amg::Vector3D &PCA) const |
Finds PCA iteratively given two bounds A and B on a line segment, used for (rare) cases with no easy analytical solutions. More... | |
bool | extrapolateWithIntersection (const std::vector< G4FieldTrack > &caloSteps, float cylR, float cylZ, Amg::Vector3D &extPos, Amg::Vector3D &momDir) const |
Extrapolates position on cylinder by finding intersections of subsequent hit positions, intersection is considered if we detect a travel through the surface with the line segment or we find a forward intersection (in the travel direction of the particle) which lies on the line segment, returns false if no such postion is found. More... | |
bool | extrapolateWithPCA (const std::vector< G4FieldTrack > &caloSteps, float cylR, float cylZ, Amg::Vector3D &extPos, Amg::Vector3D &momDir) const |
Extrapolates to the cylinder using the PCA to the polygon spanned by the individual line segments from the caloSteps. More... | |
int | whichIntersection (float cylR, float cylZ, Amg::Vector3D &hitPos1, Amg::Vector3D &hitPos2, Amg::Vector3D &intersectionA, Amg::Vector3D intersectionB) const |
Returns ID of more sensible intersection between line segment spanned by hitPos1 and hitPos2 and cylinder. More... | |
int | circleLineIntersection2D (float circR, Amg::Vector3D &pointA, Amg::Vector3D &pointB, Amg::Vector3D &intersectA, Amg::Vector3D &intersectB) const |
Analytically computes 2D intersections between circle of radius circR and (infinite) line spanned by pointA nad pointB. More... | |
int | cylinderLineIntersection (float cylR, float cylZ, Amg::Vector3D &pointA, Amg::Vector3D &pointB, Amg::Vector3D &intersectA, Amg::Vector3D &intersectB) const |
Analytically computes the intersection between the (infinite) line defined by pointA and pointB and the cylinder cover (without endcaps) More... | |
CylinderIntersections | getCylinderIntersections (float cylR, float cylZ, Amg::Vector3D &hitPos1, Amg::Vector3D &hitPos2) const |
Analytically computes the intersection between the (infinite) line spanned by hitPos1 and hitPos2 with a cylinder. More... | |
void | minmaxeta (int sample, double eta, double &mineta, double &maxeta) const |
bool | isCaloBarrel (int sample) const |
double | deta (int sample, double eta) const |
double | rzmid (int sample, double eta) const |
double | rzent (int sample, double eta) const |
double | rzext (int sample, double eta) const |
double | rmid (int sample, double eta) const |
double | rent (int sample, double eta) const |
double | rext (int sample, double eta) const |
double | zmid (int sample, double eta) const |
double | zent (int sample, double eta) const |
double | zext (int sample, double eta) const |
double | rpos (int sample, double eta, int subpos=CaloSubPos::SUBPOS_MID) const |
double | zpos (int sample, double eta, int subpos=CaloSubPos::SUBPOS_MID) const |
double | rzpos (int sample, double eta, int subpos=CaloSubPos::SUBPOS_MID) const |
Static Protected Member Functions | |
static double | getPointLineSegmentDistance (Amg::Vector3D &point, Amg::Vector3D &hitPos1, Amg::Vector3D &hitPos2) |
Computes the distance between a point and the line segment spanned by hitPos1 and hitPos2. More... | |
static bool | isOnSegment (Amg::Vector3D &point, Amg::Vector3D &hitPos1, Amg::Vector3D &hitPos2) |
Returns true if point lies on the line segment spanned by hitPos1 and hitPos2, otherwise returns false. More... | |
static bool | cylinderEndcapIntersection (float cylR, float cylZ, bool positiveEndcap, Amg::Vector3D &pointA, Amg::Vector3D &pointB, Amg::Vector3D &intersection) |
Computes intersection between the (infinite) line spanned by pointA and pointB with the positive (negative) endcap of a cylinder, returns true if intersection is found. More... | |
static bool | doesTravelThroughSurface (float cylR, float cylZ, Amg::Vector3D &hitPos1, Amg::Vector3D &hitPos2) |
Returns true if the line segment spanned by hitPos1 and hitPos2 crosses the cylinder surface, false otherwise. More... | |
static enum HITPOSITION | whereOnCylinder (float cylR, float cylZ, Amg::Vector3D &hitPos) |
Checks if position of hitPos is inside, outside or on the cylinder bounds. More... | |
static Amg::Vector3D | projectOnCylinder (float cylR, float cylZ, Amg::Vector3D &hitPos) |
Projects position hitPos onto the cylinder surface and returns projected position. More... | |
Protected Attributes | |
HepPDT::ParticleDataTable * | m_particleDataTable {nullptr} |
FloatArrayProperty | m_CaloBoundaryR {this, "CaloBoundaryR", {1148.0,120.0,41.0}} |
FloatArrayProperty | m_CaloBoundaryZ {this, "CaloBoundaryZ", {3550.0,4587.0,4587.0}} |
PublicToolHandle< IFastCaloSimCaloTransportation > | m_CaloTransportation {this, "CaloTransportation", "FastCaloSimCaloTransportation"} |
PublicToolHandle< IFastCaloSimGeometryHelper > | m_CaloGeometryHelper {this, "CaloGeometryHelper", "FastCaloSimGeometryHelper"} |
Definition at line 31 of file FastCaloSimCaloExtrapolation.h.
Enumerator | |
---|---|
INSIDE | |
OUTSIDE | |
ON |
Definition at line 48 of file FastCaloSimCaloExtrapolation.h.
Enumerator | |
---|---|
SUBPOS_MID | |
SUBPOS_ENT | |
SUBPOS_EXT |
Definition at line 42 of file FastCaloSimCaloExtrapolation.h.
FastCaloSimCaloExtrapolation::FastCaloSimCaloExtrapolation | ( | const std::string & | t, |
const std::string & | n, | ||
const IInterface * | p | ||
) |
Definition at line 47 of file FastCaloSimCaloExtrapolation.cxx.
|
default |
|
protected |
Analytically computes 2D intersections between circle of radius circR and (infinite) line spanned by pointA nad pointB.
Definition at line 565 of file FastCaloSimCaloExtrapolation.cxx.
|
staticprotected |
Computes intersection between the (infinite) line spanned by pointA and pointB with the positive (negative) endcap of a cylinder, returns true if intersection is found.
Definition at line 772 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Analytically computes the intersection between the (infinite) line defined by pointA and pointB and the cylinder cover (without endcaps)
Definition at line 730 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 880 of file FastCaloSimCaloExtrapolation.cxx.
|
staticprotected |
Returns true if the line segment spanned by hitPos1 and hitPos2 crosses the cylinder surface, false otherwise.
Definition at line 866 of file FastCaloSimCaloExtrapolation.cxx.
|
finaloverridevirtual |
Definition at line 84 of file FastCaloSimCaloExtrapolation.cxx.
|
finaloverridevirtual |
Definition at line 72 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Finds best extrapolation extPos from the caloSteps for a cylinder defined by radius cylR and half-length cylZ as well as corresponding momentum direction.
Definition at line 237 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Extrapolates to ID using three uniquely defined cylinder surfaces.
Definition at line 94 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Extrapolates to all other layers of the calorimeter.
Definition at line 166 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Extrapolates position on cylinder by finding intersections of subsequent hit positions, intersection is considered if we detect a travel through the surface with the line segment or we find a forward intersection (in the travel direction of the particle) which lies on the line segment, returns false if no such postion is found.
Definition at line 264 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Extrapolates to the cylinder using the PCA to the polygon spanned by the individual line segments from the caloSteps.
Definition at line 342 of file FastCaloSimCaloExtrapolation.cxx.
|
finaloverridevirtual |
Definition at line 66 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Finds Point of Closest Approach (PCA) on the cylinder defined by radius cylR and half-length cylZ of a line segment spanned by two hit positions to a cylinder.
Definition at line 382 of file FastCaloSimCaloExtrapolation.cxx.
|
inlineprotected |
Definition at line 59 of file FastCaloSimCaloExtrapolation.h.
|
protected |
Analytically computes the intersection between the (infinite) line spanned by hitPos1 and hitPos2 with a cylinder.
Definition at line 649 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Finds PCA iteratively given two bounds A and B on a line segment, used for (rare) cases with no easy analytical solutions.
Definition at line 488 of file FastCaloSimCaloExtrapolation.cxx.
|
staticprotected |
Computes the distance between a point and the line segment spanned by hitPos1 and hitPos2.
Definition at line 834 of file FastCaloSimCaloExtrapolation.cxx.
|
finaloverridevirtual |
Definition at line 52 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 875 of file FastCaloSimCaloExtrapolation.cxx.
|
staticprotected |
Returns true if point lies on the line segment spanned by hitPos1 and hitPos2, otherwise returns false.
Definition at line 871 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 885 of file FastCaloSimCaloExtrapolation.cxx.
|
staticprotected |
Projects position hitPos onto the cylinder surface and returns projected position.
Definition at line 614 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 905 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 920 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 890 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 935 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 915 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 930 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 900 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 945 of file FastCaloSimCaloExtrapolation.cxx.
|
staticprotected |
Checks if position of hitPos is inside, outside or on the cylinder bounds.
Definition at line 834 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Returns ID of more sensible intersection between line segment spanned by hitPos1 and hitPos2 and cylinder.
Definition at line 796 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 910 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 925 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 895 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 940 of file FastCaloSimCaloExtrapolation.cxx.
|
protected |
Definition at line 122 of file FastCaloSimCaloExtrapolation.h.
|
protected |
Definition at line 123 of file FastCaloSimCaloExtrapolation.h.
|
protected |
Definition at line 128 of file FastCaloSimCaloExtrapolation.h.
|
protected |
Definition at line 126 of file FastCaloSimCaloExtrapolation.h.
|
protected |
Definition at line 119 of file FastCaloSimCaloExtrapolation.h.