Base class for all proton reconstruction tools.
More...
#include <AFP_ProtonRecoBase.h>
|
using | Momentum = std::array< double, 3 > |
| 3-momentum of reconstructed proton More...
|
|
|
xAOD::AFPProton * | createProton (const Momentum &momentum, const Measurement &my_measAFP, const int algID, std::unique_ptr< xAOD::AFPProtonContainer > &outputContainer) const |
| Creates and sets up a proton. More...
|
|
void | linkTracksToProton (const xAOD::AFPTrack *track, SG::ReadHandle< xAOD::AFPTrackContainer > &trackContainer, xAOD::AFPProton *proton) const |
| Links track pair to reconstructed proton. More...
|
|
virtual xAOD::AFPProton * | reco (const xAOD::AFPTrack *, const xAOD::AFPTrack *, std::unique_ptr< xAOD::AFPProtonContainer > &) const |
|
virtual xAOD::AFPProton * | reco (const xAOD::AFPTrack *, std::unique_ptr< xAOD::AFPProtonContainer > &) const |
|
virtual double | chi2 (double, double, double, const Measurement &) const |
|
|
Gaudi::Property< std::vector< double > > | m_detectorPositions {this, "detectorPositions", {}, "absolute values of detector positions for each station on one side"} |
|
Gaudi::Property< int > | m_side {this, "side", 0, "side id, A=0, C=1"} |
|
Gaudi::Property< double > | m_trackDistance {this, "trackDistance", 2.0, "Maximum distance between tracks in the near and the far station on xy-plane"} |
|
Gaudi::Property< bool > | m_allowSingleStationReco {this, "allowSingleStationReco", false, "Switch for allowing proton reconstruction using only far station"} |
|
SG::ReadHandleKey< xAOD::AFPTrackContainer > | m_trackContainerKey {this, "AFPTrackContainerKey", "AFPTrackContainer", "Name of the container with tracks of hits from which protons are to be reconstructed"} |
|
Gaudi::Property< std::string > | m_protonsContainerName {this, "protonsContainerName", "AFPProtonContainer", "Name of the container in which protons are saved"} |
|
double | m_detectorPositionNear = 0.0 |
| Default position of AFP near station. More...
|
|
double | m_detectorPositionFar = 0.0 |
| Default position of AFP far station. More...
|
|
const std::vector< double > | m_vertexIP = {0, 0, 0} |
| Vertex position. More...
|
|
Base class for all proton reconstruction tools.
Definition at line 34 of file AFP_ProtonRecoBase.h.
◆ Momentum
◆ AFP_ProtonRecoBase()
AFP_ProtonRecoBase::AFP_ProtonRecoBase |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ chi2()
virtual double AFP_ProtonRecoBase::chi2 |
( |
double |
, |
|
|
double |
, |
|
|
double |
, |
|
|
const Measurement & |
|
|
) |
| const |
|
inlineprotectedvirtual |
◆ createProton()
Creates and sets up a proton.
Definition at line 94 of file AFP_ProtonRecoBase.cxx.
103 auto *
proton = outputContainer->
push_back(std::make_unique<xAOD::AFPProton>());
106 constexpr
double protonMass = 0.938;
111 proton->setMethodID(algID);
◆ doProtonReco()
Definition at line 16 of file AFP_ProtonRecoBase.cxx.
23 return StatusCode::SUCCESS;
29 std::vector<const xAOD::AFPTrack*> trackNearContainer;
30 const int nearId =
m_side + 1;
32 [&nearId](
auto track) { return track->stationID() == nearId; });
35 std::vector<const xAOD::AFPTrack*> trackFarContainer;
36 const int farId = 3 *
m_side;
38 [&farId](
auto track) { return track->stationID() == farId; });
45 bool foundMatchingTrack =
false;
49 const double dx = trackFar->xLocal() - trackNear->xLocal();
50 const double dy = trackFar->yLocal() - trackNear->yLocal();
53 if (r2 > trackDistanceRadiusSq) {
55 "Tracks too far away from each other (xNear, yNear; xFar, yFar; distance) [mm]: "
56 << trackNear->xLocal() <<
", " << trackNear->yLocal() <<
"; "
57 << trackFar->xLocal() <<
", " << trackFar->yLocal() <<
"; " << r2);
68 foundMatchingTrack =
true;
90 return StatusCode::SUCCESS;
◆ linkTracksToProton()
◆ outputContainerName()
const std::string& AFP_ProtonRecoBase::outputContainerName |
( |
| ) |
const |
|
inlineoverride |
◆ reco() [1/2]
◆ reco() [2/2]
◆ m_allowSingleStationReco
Gaudi::Property<bool> AFP_ProtonRecoBase::m_allowSingleStationReco {this, "allowSingleStationReco", false, "Switch for allowing proton reconstruction using only far station"} |
|
protected |
◆ m_detectorPositionFar
double AFP_ProtonRecoBase::m_detectorPositionFar = 0.0 |
|
protected |
◆ m_detectorPositionNear
double AFP_ProtonRecoBase::m_detectorPositionNear = 0.0 |
|
protected |
◆ m_detectorPositions
Gaudi::Property<std::vector<double> > AFP_ProtonRecoBase::m_detectorPositions {this, "detectorPositions", {}, "absolute values of detector positions for each station on one side"} |
|
protected |
◆ m_protonsContainerName
Gaudi::Property<std::string> AFP_ProtonRecoBase::m_protonsContainerName {this, "protonsContainerName", "AFPProtonContainer", "Name of the container in which protons are saved"} |
|
protected |
◆ m_side
Gaudi::Property<int> AFP_ProtonRecoBase::m_side {this, "side", 0, "side id, A=0, C=1"} |
|
protected |
◆ m_trackContainerKey
SG::ReadHandleKey<xAOD::AFPTrackContainer> AFP_ProtonRecoBase::m_trackContainerKey {this, "AFPTrackContainerKey", "AFPTrackContainer", "Name of the container with tracks of hits from which protons are to be reconstructed"} |
|
protected |
◆ m_trackDistance
Gaudi::Property<double> AFP_ProtonRecoBase::m_trackDistance {this, "trackDistance", 2.0, "Maximum distance between tracks in the near and the far station on xy-plane"} |
|
protected |
◆ m_vertexIP
const std::vector<double> AFP_ProtonRecoBase::m_vertexIP = {0, 0, 0} |
|
protected |
◆ m_xSigma
constexpr double AFP_ProtonRecoBase::m_xSigma = 10e-6 |
|
staticconstexprprotected |
◆ m_ySigma
constexpr double AFP_ProtonRecoBase::m_ySigma = 30e-6 |
|
staticconstexprprotected |
The documentation for this class was generated from the following files:
bool toContainedElement(BaseConstReference data, ElementType element, IProxyDict *sg=0)
Set from element pointer and a reference to the container (storable)