![]() |
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.
1.8.18