Belle II Software
release-08-01-10
|
Findlet for performing the simple SVDHoughTracking ROI calculation. More...
#include <ROIFinder.h>
Public Types | |
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. | |
Public Member Functions | |
ROIFinder () | |
Constructor for adding the subfindlets. | |
~ROIFinder () | |
Default desctructor. | |
void | exposeParameters (ModuleParamList *moduleParamList, const std::string &prefix) override |
Expose the parameters of the sub findlets. | |
void | apply (const std::vector< SpacePointTrackCand > &finalTracks) override |
Function to call all the sub-findlets. More... | |
void | initialize () override |
Initialize the StoreArrays. More... | |
void | beginRun () override |
Initialize the BField. | |
void | beginEvent () override |
Clear the object pools. | |
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 | 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. | |
Protected Types | |
using | ToVector = typename ToVectorImpl< T >::Type |
Short hand for ToRangeImpl. | |
Protected Member Functions | |
void | addProcessingSignalListener (ProcessingSignalListener *psl) |
Register a processing signal listener to be notified. | |
int | getNProcessingSignalListener () |
Get the number of currently registered listeners. | |
Private Types | |
using | Super = TrackFindingCDC::Findlet< const SpacePointTrackCand > |
Parent class. | |
Private Attributes | |
bool | m_calculateROI = false |
Calculate ROI in this findlet? | |
std::string | m_storePXDInterceptsName = "SVDHoughPXDIntercepts" |
Name of the PXDIntercepts StoreArray. | |
std::string | m_storeROIsName = "SVDHoughROIs" |
Name of the ROIs StoreArray. | |
StoreArray< PXDIntercept > | m_storePXDIntercepts |
PXDIntercepts StoreArray. | |
StoreArray< ROIid > | m_storeROIs |
ROIs StoreArray. | |
bool | m_refit = true |
Refit the tracks with m_ROIFitMethod. | |
bool | m_addVirtualIP = true |
Add a virtual IP for the refit? | |
std::string | m_ROIFitMethod = "helixFit" |
Refit with this estimator, options are circleFit, tripletFit, helixFit. | |
std::unique_ptr< QualityEstimatorBase > | m_estimator |
pointer to the selected QualityEstimator | |
double | m_tolerancePhi = 0.15 |
Allowed tolerance (in radians) phi to create intercepts per sensor. | |
double | m_toleranceZ = 0.5 |
Allowed tolerance (in cm) in z to create intercepts per sensor. | |
double | m_radiusCorrectionFactorL1 = -2.0 |
Correction factor for radial bias for L1: factor * charge / radius. | |
double | m_radiusCorrectionFactorL2 = -5.0 |
Correction factor for radial bias for L2: factor * charge / radius. | |
double | m_sinPhiCorrectionFactor = 0.0 |
Correction factor for the sin(phi) modulation. | |
double | m_cosPhiCorrectionFactor = 0.0 |
Correction factor for the cos(phi) modulation. | |
double | m_zPositionCorrectionFactor = 1.0 |
Correction factor for the z position. | |
double | m_minimumROISizeUL1 = 40 |
Minimum size of ROI in u-direction on L1 in pixel. | |
double | m_minimumROISizeVL1 = 40 |
Minimum size of ROI in v-direction on L1 in pixel. | |
double | m_minimumROISizeUL2 = 35 |
Minimum size of ROI in u-direction on L2 in pixel. | |
double | m_minimumROISizeVL2 = 30 |
Minimum size of ROI in v-direction on L2 in pixel. | |
double | m_multiplierUL1 = 500 |
Multiplier term in ROI size estimation For u: size = multiplier * 1/R + minimumROISize For v: size = (1 + abs(tan(lambda)) * multiplier) + minimumROISize Multiplier term for u-direction on L1. | |
double | m_multiplierUL2 = 600 |
Multiplier term for u-direction on L2. | |
double | m_multiplierVL1 = 0.8 |
Multiplier term for v-direction on L1. | |
double | m_multiplierVL2 = 0.8 |
Multiplier term for v-direction on L2. | |
unsigned short | m_maximumROISizeU = 100 |
maximum ROI size in u in pixel | |
unsigned short | m_maximumROISizeV = 100 |
maximum ROI size in v in pixel | |
const double | c_centerZShiftLayer1 [2] = {3.68255, -0.88255} |
Shift of the center of the active area of each sensor in a ladder of layer 1 For use of mhp_z > (lengh/-2)+shiftZ && mhp_z < (lengh/2)+shiftZ. | |
const double | c_centerZShiftLayer2 [2] = {5.01455, -1.21455} |
Shift of the center of the active area of each sensor in a ladder of layer 2 For use of mhp_z > (lengh/-2)+shiftZ && mhp_z < (lengh/2)+shiftZ. | |
const double | c_sensorMinY = -0.36 |
PXD is shifted to create the windmill structure. More... | |
const double | c_sensorMaxY = 0.89 |
Maximum y coordinate if x-axis is perpendicular to the sensor: | |
const double | c_activeSensorWidth = (c_sensorMaxY - c_sensorMinY) |
PXD sensors in L1 and L2 have the same size in u direction (=width): | |
const double | c_shiftY = (c_sensorMaxY + c_sensorMinY) / 2.0 |
Shift of the center position in y if the x-axis is perpendicular to the sensor: | |
const double | c_layerRadius [2] = {1.42854, 2.21218} |
Radius of the two layers. | |
const double | c_activeSensorLength [2] = {4.48, 6.144} |
Length of the active region for L1 and L2. | |
const double | c_ladderPhiL1 [8] = {0., 0.25 * M_PI, M_PI_2, 0.75 * M_PI, M_PI, -0.75 * M_PI, -M_PI_2, -0.25 * M_PI} |
Phi values of the ladders of L1. | |
const double | c_ladderPhiL2 [12] = {0., 1. / 6. * M_PI, 1. / 3. * M_PI, M_PI_2, 2. / 3. * M_PI, 5. / 6. * M_PI, M_PI, -5. / 6. * M_PI, -2. / 3. * M_PI, -M_PI_2, -1. / 3. * M_PI, -1. / 6. * M_PI} |
Phi values of the ladders of L2. | |
double | m_bFieldZ = 1.5 |
BField in Tesla. | |
B2Vector3D | m_BeamSpotPosition |
B2Vector3D actually contining the BeamSpot position. This will be used as the starting point of the extrapolation. | |
B2Vector3D | m_BeamSpotPositionError |
B2Vector3D actually contining the BeamSpot position error. | |
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 for performing the simple SVDHoughTracking ROI calculation.
Definition at line 33 of file ROIFinder.h.
|
override |
Function to call all the sub-findlets.
Loop over both PXD layer
Loop over all ladders of layer
Loop over both modules of a ladder
Lower left corner
Upper right corner
Definition at line 179 of file ROIFinder.cc.
|
overridevirtual |
Initialize the StoreArrays.
Create the store arrays.
Reimplemented from CompositeProcessingSignalListener.
Definition at line 112 of file ROIFinder.cc.
|
private |
PXD is shifted to create the windmill structure.
Minimum y coordinate if x-axis is perpendicular to the sensor:
Definition at line 145 of file ROIFinder.h.