12 #include "cetlib_except/exception.h"
31 const art::Ptr<recob::Hit>&
hit,
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";
57 double t = hit->PeakTime();
58 double terr = hit->RMS();
63 if (terr < 1. / std::sqrt(12.)) terr = 1. / std::sqrt(12.);
68 detProp.
ConvertTicksToX(t, hit->WireID().Plane, hit->WireID().TPC, hit->WireID().Cryostat);
77 merr(0, 0) = xerr * xerr;
82 fID = (hit->Channel() % 200000) * 10000 + (
int(
std::abs(t)) % 10000);
98 art::ServiceHandle<geo::Geometry const> geom;
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);
139 art::ServiceHandle<geo::Geometry const> geom;
140 double pitch = geom->WirePitch();
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.
double std(const std::vector< short > &wf, const double ped_mean, size_t start, size_t nsample)
const std::shared_ptr< const Surface > & getSurface() const
Surface.
process_name opflash particleana ie x
double GetXTicksCoefficient(int t, int c) const
Kalman filter wire-time measurement on a SurfWireX surface.
std::size_t size(FixedBins< T, C > const &) noexcept
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.
double ConvertTicksToX(double ticks, int p, int t, int c) const
const TrackVector & getVector() const
Track state vector.
virtual bool isEqual(const Surface &surf) const
Test two surfaces for equality, within tolerance.
bool subpredict(const KETrack &tre, KVector< 1 >::type &pvec, KSymMatrix< 1 >::type &perr, KHMatrix< 1 >::type &hmatrix) const override
constexpr WireID()=default
Default constructor: an invalid TPC ID.
void setMeasPlane(int plane)
Measurement plane.
Planar surface defined by wire id and x-axis.
art framework interface to geometry description
const std::shared_ptr< const Surface > & getMeasSurface() const
Measurement surface.