All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Attributes | List of all members
trkf::KHitWireLine Class Reference

#include <KHitWireLine.h>

Inheritance diagram for trkf::KHitWireLine:
trkf::KHit< 1 > trkf::KHitBase

Public Member Functions

 KHitWireLine (const detinfo::DetectorPropertiesData &detProp, const art::Ptr< recob::Hit > &hit, const std::shared_ptr< const Surface > &psurf)
 Constructor from Hit. More...
 
 KHitWireLine (const geo::WireID &wireid, double x, double xerr)
 Constructor from wire id (mainly for testing). More...
 
const art::Ptr< recob::Hit > & getHit () const
 Get original hit. More...
 
bool subpredict (const KETrack &tre, KVector< 1 >::type &pvec, KSymMatrix< 1 >::type &perr, KHMatrix< 1 >::type &hmatrix) const override
 
- Public Member Functions inherited from trkf::KHit< 1 >
 KHit ()
 Default constructor. More...
 
 KHit (const std::shared_ptr< const Surface > &psurf)
 Initializing Constructor – surface only. More...
 
 KHit (const std::shared_ptr< const Surface > &psurf, const typename KVector< N >::type &mvec, const typename KSymMatrix< N >::type &merr)
 Fully Initializing Constructor. More...
 
virtual ~KHit ()
 Destructor. More...
 
void setMeasVector (const typename KVector< N >::type &mvec)
 Set measurement vector. More...
 
void setMeasError (const typename KSymMatrix< N >::type &merr)
 Set measurement error. More...
 
const KVector< N >::typegetMeasVector () const
 Measurement vector. More...
 
const KSymMatrix< N >::typegetMeasError () const
 Measurement error matrix. More...
 
const KVector< N >::typegetPredVector () const
 Prediction vector. More...
 
const KSymMatrix< N >::typegetPredError () const
 Prediction matrix. More...
 
const KVector< N >::typegetResVector () const
 Residual vector. More...
 
const KSymMatrix< N >::typegetResError () const
 Residual error matrix. More...
 
const KSymMatrix< N >::typegetResInvError () const
 Residual inv. error matrix. More...
 
const KHMatrix< N >::typegetH () const
 Kalman H-matrix. More...
 
double getChisq () const
 Incremental chisquare. More...
 
bool predict (const KETrack &tre, const Propagator &prop, const KTrack *ref=0) const
 Prediction method (return false if fail). More...
 
void update (KETrack &tre) const
 Update track method. More...
 
virtual bool subpredict (const KETrack &tre, typename KVector< N >::type &pvec, typename KSymMatrix< N >::type &perr, typename KHMatrix< N >::type &hmatrix) const =0
 Calculate prediction function (return via arguments). More...
 
virtual std::ostream & Print (std::ostream &out, bool doTitle=true) const
 Printout. More...
 
- Public Member Functions inherited from trkf::KHitBase
 KHitBase ()
 Default constructor. More...
 
 KHitBase (const std::shared_ptr< const Surface > &psurf, int plane=-1)
 Initializing Constructor. More...
 
virtual ~KHitBase ()=default
 Destructor. More...
 
const std::shared_ptr< const
Surface > & 
getPredSurface () const
 Predition surface. More...
 
double getPredDistance () const
 Prediction distance. More...
 
const std::shared_ptr< const
Surface > & 
getMeasSurface () const
 Measurement surface. More...
 
int getMeasPlane () const
 Measurement plane index. More...
 
int getID () const
 Unique id. More...
 
void setMeasSurface (const std::shared_ptr< const Surface > &psurf)
 Measurement surface. More...
 
void setMeasPlane (int plane)
 Measurement plane. More...
 

Private Attributes

art::Ptr< recob::HitfHit
 

Additional Inherited Members

- Protected Attributes inherited from trkf::KHitBase
std::shared_ptr< const SurfacefPredSurf
 Prediction surface. More...
 
double fPredDist
 Prediction distance. More...
 
int fID
 Unique id. More...
 

Detailed Description

Definition at line 34 of file KHitWireLine.h.

Constructor & Destructor Documentation

trkf::KHitWireLine::KHitWireLine ( const detinfo::DetectorPropertiesData detProp,
const art::Ptr< recob::Hit > &  hit,
const std::shared_ptr< const Surface > &  psurf 
)

Constructor from Hit.

Constructor.

Arguments:

hit - Hit. psurf - Measurement surface (can be null).

The measurement surface is only a suggestion. It is allowed to be specified to allow measurements to whare surfaces to save memory.

Definition at line 31 of file KHitWireLine.cxx.

34  : KHit(psurf), fHit(hit)
35  {
36  // Extract wire id.
37  geo::WireID wireid = hit->WireID();
38 
39  // Extract time information from hit.
40 
41  double t = hit->PeakTime();
42  double terr = hit->SigmaPeakTime();
43 
44  // Don't let the time error be less than 1./sqrt(12.) ticks.
45  // This should be removed when hit errors are fixed.
46 
47  if (terr < 1. / std::sqrt(12.)) terr = 1. / std::sqrt(12.);
48 
49  // Calculate position and error.
50 
51  double x = detProp.ConvertTicksToX(t, wireid.Plane, wireid.TPC, wireid.Cryostat);
52  double xerr = terr * detProp.GetXTicksCoefficient();
53 
54  // Check the surface (determined by wire id + drift time). If the
55  // surface pointer is null, make a new SurfWireLine surface and
56  // update the base class appropriately. Otherwise, just check
57  // that the specified surface agrees with the wire id + drift time.
58 
59  if (psurf.get() == 0) {
60  std::shared_ptr<const Surface> new_psurf(new SurfWireLine(wireid, x));
61  setMeasSurface(new_psurf);
62  }
63  else {
64  SurfWireLine check_surf(wireid, x);
65  if (!check_surf.isEqual(*psurf))
66  throw cet::exception("KHitWireLine") << "Measurement surface doesn't match hit.\n";
67  }
68 
69  setMeasPlane(wireid.Plane);
70 
71  // Update measurement vector and error matrix.
72 
73  trkf::KVector<1>::type mvec(1, 0.);
74  setMeasVector(mvec);
75 
77  merr(0, 0) = xerr * xerr;
78  setMeasError(merr);
79 
80  // Set the unique id from a combination of the channel number and the time.
81 
82  fID = (hit->Channel() % 200000) * 10000 + (int(std::abs(t)) % 10000);
83  }
void setMeasSurface(const std::shared_ptr< const Surface > &psurf)
Measurement surface.
Definition: KHitBase.h:114
ublas::symmetric_matrix< double, ublas::lower, ublas::row_major, ublas::bounded_array< double, N *(N+1)/2 > > type
process_name opflash particleana ie x
art::Ptr< recob::Hit > fHit
Definition: KHitWireLine.h:58
double GetXTicksCoefficient(int t, int c) const
CryostatID_t Cryostat
Index of cryostat.
Definition: geo_types.h:212
process_name hit
Definition: cheaterreco.fcl:51
KHit()
Default constructor.
void setMeasVector(const typename KVector< N >::type &mvec)
Set measurement vector.
Definition: KHit.h:94
T abs(T value)
ublas::vector< double, ublas::bounded_array< double, N > > type
void setMeasError(const typename KSymMatrix< N >::type &merr)
Set measurement error.
Definition: KHit.h:101
PlaneID_t Plane
Index of the plane within its TPC.
Definition: geo_types.h:493
int fID
Unique id.
Definition: KHitBase.h:147
double ConvertTicksToX(double ticks, int p, int t, int c) const
void setMeasPlane(int plane)
Measurement plane.
Definition: KHitBase.h:121
TPCID_t TPC
Index of the TPC within its cryostat.
Definition: geo_types.h:406
trkf::KHitWireLine::KHitWireLine ( const geo::WireID wireid,
double  x,
double  xerr 
)

Constructor from wire id (mainly for testing).

Constructor.

Arguments:

wireid - Wire id. x - X coordinate. xerr - X error.

Definition at line 93 of file KHitWireLine.cxx.

94  : KHit(std::shared_ptr<const Surface>(new SurfWireLine(wireid, x)))
95  {
96  // Get services.
97 
98  art::ServiceHandle<geo::Geometry const> geom;
99 
100  // Get plane number.
101 
102  setMeasPlane(wireid.Plane);
103 
104  // Update measurement vector and error matrix.
105  // The measured value (aka impact parameter) is always zero.
106 
107  trkf::KVector<1>::type mvec(1, 0.);
108  setMeasVector(mvec);
109 
111  merr(0, 0) = xerr * xerr;
112  setMeasError(merr);
113  }
ublas::symmetric_matrix< double, ublas::lower, ublas::row_major, ublas::bounded_array< double, N *(N+1)/2 > > type
process_name opflash particleana ie x
KHit()
Default constructor.
void setMeasVector(const typename KVector< N >::type &mvec)
Set measurement vector.
Definition: KHit.h:94
ublas::vector< double, ublas::bounded_array< double, N > > type
void setMeasError(const typename KSymMatrix< N >::type &merr)
Set measurement error.
Definition: KHit.h:101
PlaneID_t Plane
Index of the plane within its TPC.
Definition: geo_types.h:493
void setMeasPlane(int plane)
Measurement plane.
Definition: KHitBase.h:121

Member Function Documentation

const art::Ptr<recob::Hit>& trkf::KHitWireLine::getHit ( ) const
inline

Get original hit.

Definition at line 46 of file KHitWireLine.h.

47  {
48  return fHit;
49  }
art::Ptr< recob::Hit > fHit
Definition: KHitWireLine.h:58
bool trkf::KHitWireLine::subpredict ( const KETrack tre,
KVector< 1 >::type pvec,
KSymMatrix< 1 >::type perr,
KHMatrix< 1 >::type hmatrix 
) const
override

Definition at line 116 of file KHitWireLine.cxx.

120  {
121  // Make sure that the track surface and the measurement surface are the
122  // same. Throw an exception if they are not.
123 
124  if (!getMeasSurface()->isEqual(*tre.getSurface()))
125  throw cet::exception("KHitWireLine")
126  << "Track surface not the same as measurement surface.\n";
127 
128  // Prediction is the signed impact parameter (parameter 0).
129 
130  int size = tre.getVector().size();
131  pvec.resize(1, /* preserve */ false);
132  pvec.clear();
133  pvec(0) = tre.getVector()(0);
134 
135  perr.resize(1, /* preserve */ false);
136  perr.clear();
137  perr(0, 0) = tre.getError()(0, 0);
138 
139  // Update prediction error to include contribution from track slope.
140 
141  art::ServiceHandle<geo::Geometry const> geom;
142  double pitch = geom->WirePitch();
143  double phi = tre.getVector()(2);
144  double cosphi = std::cos(phi);
145  double slopevar = pitch * pitch * cosphi * cosphi / 12.;
146  perr(0, 0) += slopevar;
147 
148  // Hmatrix - dr/dr = 1., all others are zero.
149 
150  hmatrix.resize(1, size, /* preserve */ false);
151  hmatrix.clear();
152  hmatrix(0, 0) = 1.;
153 
154  return true;
155  }
std::size_t size(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:561
const std::shared_ptr< const Surface > & getMeasSurface() const
Measurement surface.
Definition: KHitBase.h:91

Member Data Documentation

art::Ptr<recob::Hit> trkf::KHitWireLine::fHit
private

Definition at line 58 of file KHitWireLine.h.


The documentation for this class was generated from the following files: