LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
genf::GFWireHitPolicy Class Reference

policy class for hits in wire detectors (STT and DCH) which do not measure the coordinate along the wire More...

#include "GFWireHitPolicy.h"

Inheritance diagram for genf::GFWireHitPolicy:

Public Member Functions

 GFWireHitPolicy ()
 
const GFDetPlanedetPlane (GFAbsRecoHit *, GFAbsTrackRep *)
 Get detector plane Calls GFAbsTrackRep::extrapolateToLine for POCA. More...
 
TMatrixT< Double_t > hitCoord (GFAbsRecoHit *, const GFDetPlane &)
 Hit coordinates in detector plane. More...
 
TMatrixT< Double_t > hitCov (GFAbsRecoHit *, const GFDetPlane &)
 Hit covariances in detector plane. More...
 
void checkPlane (GFAbsRecoHit *, const GFDetPlane &)
 Check if the detector plane is valid. More...
 
virtual ~GFWireHitPolicy ()
 
double getMaxDistance ()
 
void setMaxDistance (double d)
 
const std::string & getName ()
 

Private Attributes

GFDetPlane fDetPlane
 
double fMaxdistance
 

Static Private Attributes

static const std::string fPolicyName = "GFWireHitPolicy"
 

Detailed Description

policy class for hits in wire detectors (STT and DCH) which do not measure the coordinate along the wire

Author
Christian Höppner (Technische Universität München, original author)
Lia Lavezzi (INFN Pavia, original author)
Sebastian Neubert (Technische Universität München, original author)

This policy is not valid for any kind of plane orientation choice: to use it you MUST choose a plane described by u and v axes with v coincident with the wire (and u orthogonal to it, obviously). The hit will be described by 7 coordinates: w_x1, w_y1, w_z1, w_x2, w_y2, w_z2, rdrift where w_ji (with j = x, y, z and i = 1, 2) are the wire extremities coordinates; rdrift = distance from the wire (u coordinate in the plane)

Definition at line 54 of file GFWireHitPolicy.h.

Constructor & Destructor Documentation

genf::GFWireHitPolicy::GFWireHitPolicy ( )

Definition at line 36 of file GFWireHitPolicy.cxx.

36 :fMaxdistance(1.E50) {;}
virtual genf::GFWireHitPolicy::~GFWireHitPolicy ( )
inlinevirtual

Definition at line 78 of file GFWireHitPolicy.h.

78 {;}

Member Function Documentation

void genf::GFWireHitPolicy::checkPlane ( GFAbsRecoHit hit,
const GFDetPlane plane 
)

Check if the detector plane is valid.

Definition at line 67 of file GFWireHitPolicy.cxx.

References e, genf::GFAbsRecoHit::getRawHitCoord(), and genf::GFDetPlane::getV().

Referenced by hitCoord(), and hitCov().

68 {
69  // raw x1, y1, z1, x2, y2, z2, rdrift, zreco
70  TMatrixT<Double_t> rC = hit->getRawHitCoord();
71 
72  assert(rC.GetNrows()==7);
73 
74  TVector3 wire1(rC[0][0], rC[1][0], rC[2][0]);
75  TVector3 wire2(rC[3][0], rC[4][0], rC[5][0]);
76  TVector3 wiredirection = wire1 - wire2;
77 
78  TVector3 vaxis = plane.getV();
79  wiredirection.SetMag(1.);
80  vaxis.SetMag(1.);
81 
82  if(fabs(TMath::Abs(wiredirection.Dot(vaxis)) - 1) > 1e-3)
83  {
84 
85  std::cout << "GFWireHitPolicy: plane not valid!!" << std::endl;
86  }
87 }
Detector simulation of raw signals on wires.
Float_t e
Definition: plot.C:34
const genf::GFDetPlane & genf::GFWireHitPolicy::detPlane ( GFAbsRecoHit hit,
GFAbsTrackRep rep 
)

Get detector plane Calls GFAbsTrackRep::extrapolateToLine for POCA.

Definition at line 91 of file GFWireHitPolicy.cxx.

References genf::GFDetPlane::dist(), e, genf::GFAbsTrackRep::extrapolateToLine(), fDetPlane, fMaxdistance, genf::GFAbsRecoHit::getRawHitCoord(), and x.

92 {
93 
94  TMatrixT<Double_t> x=hit->getRawHitCoord();
95  assert(x.GetNrows()==7);
96  TVector3 wire1(x[0][0],x[1][0],x[2][0]);
97  TVector3 wire2(x[3][0],x[4][0],x[5][0]);
98 
99  // distance of one (the first) of the wire extremities from the plane
100  Double_t d_from_refplane = fDetPlane.dist(wire1).Mag();
101  if(d_from_refplane < 1e-5) return fDetPlane;
102 
103 
104  // point of closest approach
105  TVector3 poca, poca_onwire, dirInPoca;
106 
107  rep->extrapolateToLine(wire1, wire2, poca, dirInPoca, poca_onwire);
108 
109 
110  Double_t distance;
111  distance = TMath::Sqrt(fabs(((wire1-poca).Mag2()*(wire2-wire1).Mag2()-pow((wire1-poca).Dot(wire2-wire1),2))/(wire2-wire1).Mag2()));
112 
113  // check poca inside tube
114  if(distance > fMaxdistance) {
115  GFException exc("distance poca-wire > maxdistance", __LINE__,__FILE__);
116  throw exc;
117  }
118 
119  // find plane
120  // unitary vector along distance
121  // poca (on track), poca_onwire (on wire)
122  TVector3 fromwiretoextr = poca - poca_onwire;
123  fromwiretoextr.SetMag(1.);
124  // unitary vector along the wire
125  TVector3 wiredirection = wire2 - wire1;
126  wiredirection.SetMag(1.);
127 
128  // check orthogonality
129  if(fabs(fromwiretoextr * wiredirection) > 1e-3) {
130  GFException exc("fromwiretoextr*wiredirection > 1e-3", __LINE__,__FILE__);
131  throw exc;
132  }
133 
134  TVector3 U;
135  U = fromwiretoextr;
136  TVector3 V;
137  V = wiredirection;
138  U.SetMag(1.);
139  V.SetMag(1.);
140 
141  TVector3 O = poca_onwire;
142 
143  fDetPlane = GFDetPlane(O, U, V);
144 
145  return fDetPlane;
146 }
Float_t x
Definition: compare.C:6
TVector3 dist(const TVector3 &point) const
Definition: GFDetPlane.cxx:209
Detector simulation of raw signals on wires.
Exception class for error handling in GENFIT (provides storage for diagnostic information) ...
Definition: GFException.h:50
Float_t e
Definition: plot.C:34
double genf::GFWireHitPolicy::getMaxDistance ( )
inline

Definition at line 80 of file GFWireHitPolicy.h.

References fMaxdistance.

80 {return fMaxdistance;}
const std::string& genf::GFWireHitPolicy::getName ( )
inline

Definition at line 83 of file GFWireHitPolicy.h.

References fPolicyName.

83 {return fPolicyName;}
static const std::string fPolicyName
TMatrixT< Double_t > genf::GFWireHitPolicy::hitCoord ( GFAbsRecoHit hit,
const GFDetPlane plane 
)

Hit coordinates in detector plane.

Definition at line 39 of file GFWireHitPolicy.cxx.

References checkPlane(), and genf::GFAbsRecoHit::getRawHitCoord().

40 {
41  TMatrixT<Double_t> returnMat(1,1);
42 
43  checkPlane(hit, plane);
44 
45  // raw x1, y1, z1, x2, y2, z2, rdrift
46  TMatrixT<Double_t> rC = hit->getRawHitCoord();
47 
48  returnMat[0][0] = rC[6][0];
49  return returnMat;
50 }
void checkPlane(GFAbsRecoHit *, const GFDetPlane &)
Check if the detector plane is valid.
Detector simulation of raw signals on wires.
TMatrixT< Double_t > genf::GFWireHitPolicy::hitCov ( GFAbsRecoHit hit,
const GFDetPlane plane 
)

Hit covariances in detector plane.

Definition at line 53 of file GFWireHitPolicy.cxx.

References checkPlane(), and genf::GFAbsRecoHit::getRawHitCov().

54 {
55  checkPlane(hit, plane);
56 
57  TMatrixT<Double_t> returnCov(1,1);
58  TMatrixT<Double_t> rawCov = hit->getRawHitCov();
59 
60  returnCov[0][0] = rawCov[6][6];
61 
62  return returnCov;
63 }
void checkPlane(GFAbsRecoHit *, const GFDetPlane &)
Check if the detector plane is valid.
Detector simulation of raw signals on wires.
void genf::GFWireHitPolicy::setMaxDistance ( double  d)
inline

Definition at line 81 of file GFWireHitPolicy.h.

References d, and fMaxdistance.

81 {fMaxdistance=d;}
Float_t d
Definition: plot.C:237

Member Data Documentation

GFDetPlane genf::GFWireHitPolicy::fDetPlane
private

Definition at line 89 of file GFWireHitPolicy.h.

Referenced by detPlane().

double genf::GFWireHitPolicy::fMaxdistance
private

Definition at line 90 of file GFWireHitPolicy.h.

Referenced by detPlane(), getMaxDistance(), and setMaxDistance().

const std::string genf::GFWireHitPolicy::fPolicyName = "GFWireHitPolicy"
staticprivate

Definition at line 85 of file GFWireHitPolicy.h.

Referenced by getName().


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