31 m_statusBits(statusBits),
34 m_xPosition(xPosition),
35 m_timeTicks(timeTicks),
65 fPosition(Eigen::Vector3f::Zero()),
85 unsigned int statusBits,
86 const Eigen::Vector3f& position,
92 float overlapFraction,
93 float chargeAsymmetry,
97 const std::vector<float>& hitDelTSigVec,
98 const std::vector<geo::WireID>& wireIDs) :
100 fStatusBits(statusBits),
102 fTotalCharge(totalCharge),
103 fAvePeakTime(avePeakTime),
104 fDeltaPeakTime(deltaPeakTime),
105 fSigmaPeakTime(sigmaPeakTime),
106 fHitChiSquare(hitChiSquare),
107 fOverlapFraction(overlapFraction),
108 fChargeAsymmetry(chargeAsymmetry),
109 fDocaToAxis(docaToAxis),
110 fArclenToPoca(arclenToPoca),
111 fHitDelTSigVec(hitDelTSigVec),
112 fWireIDVector(wireIDs)
138 unsigned int statusBits,
139 const Eigen::Vector3f& position,
145 float overlapFraction,
146 float chargeAsymmetry,
150 const std::vector<float>& hitDelTSigVec,
151 const std::vector<geo::WireID>& wireIDs)
179 o <<
"ClusterHit3D has " << c.
getHits().size() <<
" hits associated";
195 m_avePosition(Eigen::Vector3f::Zero()),
201 m_numHitsUsed(nHits),
202 m_eigenValues(eigenValues),
203 m_eigenVectors(eigenVecs),
204 m_avePosition(avePos),
205 m_aveHitDoca(aveHitDoca)
219 o << std::setiosflags(std::ios::fixed) << std::setprecision(2);
220 o <<
" PCAxis ID run with " << a.
m_numHitsUsed <<
" space points" << std::endl;
224 o <<
" - average doca: " << a.
m_aveHitDoca << std::endl;
230 o <<
" Principal Components Axis is not valid" << std::endl;
246 m_startPosition{0.,0.,0.},
247 m_endPosition{0.,0.,0.},
254 const float* startPosition,
255 const float* endPosition,
257 m_statusBits(statusBits),
258 m_pcaResults(pcaResults),
259 m_totalCharge(totalCharge),
260 m_startPosition{startPosition[0],startPosition[1],startPosition[2]},
261 m_endPosition{endPosition[0],endPosition[1],endPosition[2]},
324 o << std::setiosflags(std::ios::fixed) << std::setprecision(2);
void initialize(size_t id, unsigned int statusBits, const Eigen::Vector3f &position, float totalCharge, float avePeakTime, float deltaPeakTime, float sigmaPeakTime, float hitChiSquare, float overlapFraction, float chargeAsymmetry, float docaToAxis, float arclenToPoca, const ClusterHit2DVec &hitVec, const std::vector< float > &hitDelTSigVec, const std::vector< geo::WireID > &wireIDVec)
double std(const std::vector< short > &wf, const double ped_mean, size_t start, size_t nsample)
float fDeltaPeakTime
Largest delta peak time of associated recob::Hits.
void setWireID(const geo::WireID &wid) const
bool m_svdOK
SVD Decomposition was successful.
Cluster3D operator+(Cluster3D)
float fTotalCharge
Sum of charges of all associated recob::Hits.
void flipAxis(size_t axis)
double m_aveHitDoca
Average doca of hits used in PCA.
Declaration of signal hit object.
const geo::WireID & WireID() const
const float * getStartPosition() const
unsigned m_statusBits
Volatile status information of this 3D hit.
size_t fID
"id" of this hit (useful for indexing)
float Integral() const
Integral under the calibrated signal waveform of the hit, in tick x ADC units.
geo::View_t View() const
View for the plane of the hit.
WireID_t Wire
Index of the wire within its plane.
float fSigmaPeakTime
Quad sum of peak time sigmas.
float m_docaToAxis
DOCA of hit at POCA to associated cluster axis.
float fAvePeakTime
Average peak time of all associated recob::Hits.
std::ostream & operator<<(std::ostream &o, const ClusterHit2D &c)
const recob::Hit * getHit() const
std::vector< geo::WireID > fWireIDVector
Wire ID's for the planes making up hit.
std::vector< float > fHitDelTSigVec
Delta t of hit to matching pair / sig.
EigenValues m_eigenValues
Eigen values from SVD decomposition.
const recob::Hit * m_hit
Hit we are augmenting.
process_name standard_reco_uboone reco
IDparameter< geo::WireID > WireID
Member type of validated geo::WireID parameter.
float m_arcLenToPoca
arc length to POCA along cluster axis
Eigen::Vector3f EigenValues
unsigned int fStatusBits
Volatile status information of this 3D hit.
float m_timeTicks
The time (in ticks) for this hit.
float fOverlapFraction
Hit overlap fraction start/stop of triplet.
Eigen::Vector3f m_avePosition
Average position of hits fed to PCA.
float fHitChiSquare
Hit ChiSquare relative to the average time.
PlaneID_t Plane
Index of the plane within its TPC.
float fDocaToAxis
DOCA to the associated cluster axis.
float PeakTimeMinusRMS(float sigmas=+1.) const
std::vector< const reco::ClusterHit2D * > ClusterHit2DVec
bool operator<(const ClusterHit2D &a, const ClusterHit2D &b)
float fChargeAsymmetry
Assymetry of average of two closest to third charge.
ClusterHit2DVec fHitVector
Hits comprising this 3D hit.
float fArclenToPoca
arc length along axis to DOCA point
geo::WireID m_wireID
Keep track this particular hit's wireID.
Eigen::Matrix3f EigenVectors
float SigmaPeakTime() const
Uncertainty for the signal peak, in tick units.
ClusterHit2DVec m_hitVector
2D representation of charge deposited in the TDC/wire plane
constexpr PlaneID const & planeID() const
EigenVectors m_eigenVectors
The three principle axes.
float m_xPosition
The x coordinate for this hit.
float PeakTimePlusRMS(float sigmas=+1.) const
Returns a time sigmas RMS away from the peak time.
const ClusterHit2DVec & getHits() const
int getClusterIdx() const
void UpdateParameters(const reco::ClusterHit2D *hit)
Eigen::Vector3f fPosition
position of this hit combination in world coordinates
int m_numHitsUsed
Number of hits in the decomposition.