Findlet to extrapolate found tracks to the PXD sensors and calculate intercepts.
More...
#include <ToPXDExtrapolator.h>
|
using | IOTypes = std::tuple< AIOTypes... > |
| Types that should be served to apply on invokation.
|
|
using | IOVectors = std::tuple< std::vector< AIOTypes >... > |
| Vector types that should be served to apply on invokation.
|
|
|
| ToPXDExtrapolator () |
| Find intercepts in the 2D Hough space.
|
|
void | exposeParameters (ModuleParamList *moduleParamList, const std::string &prefix) override |
| Expose the parameters of the sub findlets.
|
|
void | initialize () override |
| Create the store arrays.
|
|
void | apply (const std::vector< std::pair< double, double >> &uTracks, const std::vector< std::pair< double, double >> &vTracks, std::vector< std::pair< VxdID, long >> &uExtrapolations, std::vector< std::pair< VxdID, long >> &vExtrapolations) override |
| Load in the prepared hits and create tracks for extrapolation to PXD.
|
|
virtual std::string | getDescription () |
| Brief description of the purpose of the concret findlet.
|
|
virtual void | apply (ToVector< AIOTypes > &... ioVectors)=0 |
| Main function executing the algorithm.
|
|
void | beginRun () override |
| Receive and dispatch signal for the beginning of a new run.
|
|
void | beginEvent () override |
| Receive and dispatch signal for the start of a new event.
|
|
void | endRun () override |
| Receive and dispatch signal for the end of the run.
|
|
void | terminate () override |
| Receive and dispatch Signal for termination of the event processing.
|
|
|
using | ToVector = typename ToVectorImpl< T >::Type |
| Short hand for ToRangeImpl.
|
|
|
void | extrapolateUTrack (const double trackPhi, const double trackRadius, const uint layer, std::vector< std::pair< VxdID, long >> &uExtrapolations) |
| extrapolate the u-track to the two PXD layers More...
|
|
void | extrapolateVTrack (const long tanLambda, const uint layer, std::vector< std::pair< VxdID, long >> &vExtrapolations) |
| extrapolate the v-track to the two PXD layers More...
|
|
|
double | m_param_phiCutL1 = M_PI / 3. |
| Create ROIs in phi only if the absolute difference in phi between sensor and track is smaller than this value on L1.
|
|
double | m_param_phiCutL2 = M_PI / 4. |
| Create ROIs in phi only if the absolute difference in phi between sensor and track is smaller than this value on L2.
|
|
bool | m_param_createPXDIntercepts = false |
| Create PXDIntercepts?
|
|
std::string | m_param_PXDInterceptStoreArrayName = "DATCONFPGAPXDIntercepts" |
| name of the PXDIntercept StoreArray
|
|
StoreArray< PXDIntercept > | m_pxdIntercepts |
| PXDIntercept StoreArray.
|
|
const long | centerZShiftLayer1 [2] = {36825500, -8825500} |
| shift of the sensor center along z for L1, in µm for use of mhp_z > (lengh/-2)+shiftZ && mhp_z < (lengh/2)+shiftZ
|
|
const long | centerZShiftLayer2 [2] = {50145500, -12145500} |
| shift of the sensor center along z for L2, in µm for use of mhp_z > (lengh/-2)+shiftZ && mhp_z < (lengh/2)+shiftZ
|
|
const long | layerRadius [2] = {14285, 22121} |
| radius of L1 and L2, in µm
|
|
const long | sensorLength [2] = {44800000, 61440000} |
| length of the modules flr L1 and L2, in µm
|
|
const long | sensorMinY = -3600000 |
| minimum y coordinate for a ladder in the position of ladder 1 (perpendicular to the x-axis), in µm
|
|
const long | sensorMaxY = 8900000 |
| maximum y coordinate for a ladder in the position of ladder 1 (perpendicular to the x-axis), in µm
|
|
const long | shiftY = (sensorMaxY + sensorMinY) / 2 |
| shift of the sensor center in r-phi
|
|
const uint | laddersPerLayer [2] = {8, 12} |
| number of ladders per layer
|
|
std::vector< ProcessingSignalListener * > | m_subordinaryProcessingSignalListeners |
| References to subordinary signal processing listener contained in this findlet.
|
|
bool | m_initialized = false |
| Flag to keep track whether initialization happend before.
|
|
bool | m_terminated = false |
| Flag to keep track whether termination happend before.
|
|
std::string | m_initializedAs |
| Name of the type during initialisation.
|
|
Findlet to extrapolate found tracks to the PXD sensors and calculate intercepts.
Definition at line 29 of file ToPXDExtrapolator.h.
◆ extrapolateUTrack()
void extrapolateUTrack |
( |
const double |
trackPhi, |
|
|
const double |
trackRadius, |
|
|
const uint |
layer, |
|
|
std::vector< std::pair< VxdID, long >> & |
uExtrapolations |
|
) |
| |
|
private |
extrapolate the u-track to the two PXD layers
- Parameters
-
trackPhi | azimtutal angle of the track |
trackRadius | radius of the track |
layer | PXD layer to extrapolate to |
uExtrapolations | vector containing the extrapolated positions in u |
Definition at line 105 of file ToPXDExtrapolator.cc.
109 for (uint ladder = 1; ladder <=
laddersPerLayer[layer - 1]; ladder++) {
110 double sensorPhi = M_PI / (
laddersPerLayer[layer - 1] / 2) * (ladder - 1);
111 if (sensorPhi > M_PI) {
112 sensorPhi -= 2. * M_PI;
115 double angleDiff = trackPhi - sensorPhi;
116 if (angleDiff > M_PI) {
117 angleDiff -= 2. * M_PI;
119 if (angleDiff < -M_PI) {
120 angleDiff += 2. * M_PI;
128 double y = -trackRadius *
convertFloatToInt(cos(angleDiff), 3) + sqrt(trackRadiusSquared - b * b);
131 long localUPosition = y -
shiftY;
135 uExtrapolations.emplace_back(sensorID, localUPosition);
138 sensorID =
VxdID(layer, ladder, 2);
139 uExtrapolations.emplace_back(sensorID, localUPosition);
Class to uniquely identify a any structure of the PXD and SVD.
long convertFloatToInt(double value, int power)
Convert float or double to long int for more similarity to the FPGA implementation.
◆ extrapolateVTrack()
void extrapolateVTrack |
( |
const long |
tanLambda, |
|
|
const uint |
layer, |
|
|
std::vector< std::pair< VxdID, long >> & |
vExtrapolations |
|
) |
| |
|
private |
extrapolate the v-track to the two PXD layers
- Parameters
-
tanLambda | azimtutal angle of the track |
layer | PXD layer to extrapolate to |
vExtrapolations | vector containing the extrapolated positions in v |
Definition at line 144 of file ToPXDExtrapolator.cc.
The documentation for this class was generated from the following files: