12 #include "cetlib_except/exception.h" 32 const std::shared_ptr<const Surface>& psurf)
33 :
KHit(psurf), fHit(hit)
43 if (psurf.get() == 0) {
44 std::shared_ptr<const Surface> new_psurf(
new SurfWireX(wireid));
49 if (!check_surf.
isEqual(*psurf))
50 throw cet::exception(
"KHitWireX") <<
"Measurement surface doesn't match wire id.\n";
58 double terr = hit->
RMS();
63 if (terr < 1. / std::sqrt(12.)) terr = 1. / std::sqrt(12.);
77 merr(0, 0) = xerr * xerr;
110 merr(0, 0) = xerr * xerr;
124 throw cet::exception(
"KHitWireX") <<
"Track surface not the same as measurement surface.\n";
129 pvec.resize(1,
false);
133 perr.resize(1,
false);
142 double slopevar = pitch * pitch * slope * slope / 12.;
143 perr(0, 0) += slopevar;
147 hmatrix.resize(1, size,
false);
void setMeasSurface(const std::shared_ptr< const Surface > &psurf)
Measurement surface.
ublas::symmetric_matrix< double, ublas::lower, ublas::row_major, ublas::bounded_array< double, N *(N+1)/2 > > type
const TrackError & getError() const
Track error matrix.
bool isEqual(float x1, float x2)
const std::shared_ptr< const Surface > & getSurface() const
Surface.
double GetXTicksCoefficient(int t, int c) const
geo::WireID WireID() const
float RMS() const
RMS of the hit shape, in tick units.
Kalman filter wire-time measurement on a SurfWireX surface.
CryostatID_t Cryostat
Index of cryostat.
geo::Length_t WirePitch(geo::PlaneID const &planeid) const
Returns the distance between two consecutive wires.
art framework interface to geometry description
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
KMatrix< N, 5 >::type type
void setMeasVector(const typename KVector< N >::type &mvec)
Set measurement vector.
ublas::vector< double, ublas::bounded_array< double, N > > type
KHitWireX(const detinfo::DetectorPropertiesData &detProp, const art::Ptr< recob::Hit > &hit, const std::shared_ptr< const Surface > &psurf)
Constructor from Hit.
void setMeasError(const typename KSymMatrix< N >::type &merr)
Set measurement error.
PlaneID_t Plane
Index of the plane within its TPC.
Detector simulation of raw signals on wires.
double ConvertTicksToX(double ticks, int p, int t, int c) const
float PeakTime() const
Time of the signal peak, in tick units.
const TrackVector & getVector() const
Track state vector.
virtual bool isEqual(const Surface &surf) const
Test two surfaces for equality, within tolerance.
void setMeasPlane(int plane)
Measurement plane.
bool subpredict(const KETrack &tre, KVector< 1 >::type &pvec, KSymMatrix< 1 >::type &perr, KHMatrix< 1 >::type &hmatrix) const override
TPCID_t TPC
Index of the TPC within its cryostat.
raw::ChannelID_t Channel() const
ID of the readout channel the hit was extracted from.
Planar surface defined by wire id and x-axis.
const std::shared_ptr< const Surface > & getMeasSurface() const
Measurement surface.
cet::coded_exception< error, detail::translate > exception