All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Attributes | Static Private Attributes | List of all members
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 38 of file GFWireHitPolicy.cxx.

38 :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 69 of file GFWireHitPolicy.cxx.

70 {
71  // raw x1, y1, z1, x2, y2, z2, rdrift, zreco
72  TMatrixT<Double_t> rC = hit->getRawHitCoord();
73 
74  assert(rC.GetNrows()==7);
75 
76  TVector3 wire1(rC[0][0], rC[1][0], rC[2][0]);
77  TVector3 wire2(rC[3][0], rC[4][0], rC[5][0]);
78  TVector3 wiredirection = wire1 - wire2;
79 
80  TVector3 vaxis = plane.getV();
81  wiredirection.SetMag(1.);
82  vaxis.SetMag(1.);
83 
84  if(fabs(TMath::Abs(wiredirection.Dot(vaxis)) - 1) > 1e-3)
85  {
86 
87  std::cout << "GFWireHitPolicy: plane not valid!!" << std::endl;
88  }
89 }
process_name hit
Definition: cheaterreco.fcl:51
do i e
BEGIN_PROLOG could also be cout
const genf::GFDetPlane & genf::GFWireHitPolicy::detPlane ( GFAbsRecoHit hit,
GFAbsTrackRep rep 
)

Get detector plane Calls GFAbsTrackRep::extrapolateToLine for POCA.

Definition at line 93 of file GFWireHitPolicy.cxx.

94 {
95 
96  TMatrixT<Double_t> x=hit->getRawHitCoord();
97  assert(x.GetNrows()==7);
98  TVector3 wire1(x[0][0],x[1][0],x[2][0]);
99  TVector3 wire2(x[3][0],x[4][0],x[5][0]);
100 
101  // distance of one (the first) of the wire extremities from the plane
102  Double_t d_from_refplane = fDetPlane.dist(wire1).Mag();
103  if(d_from_refplane < 1e-5) return fDetPlane;
104 
105 
106  // point of closest approach
107  TVector3 poca, poca_onwire, dirInPoca;
108 
109  rep->extrapolateToLine(wire1, wire2, poca, dirInPoca, poca_onwire);
110 
111 
112  Double_t distance;
113  distance = TMath::Sqrt(fabs(((wire1-poca).Mag2()*(wire2-wire1).Mag2()-pow((wire1-poca).Dot(wire2-wire1),2))/(wire2-wire1).Mag2()));
114 
115  // check poca inside tube
116  if(distance > fMaxdistance) {
117  GFException exc("distance poca-wire > maxdistance", __LINE__,__FILE__);
118  throw exc;
119  }
120 
121  // find plane
122  // unitary vector along distance
123  // poca (on track), poca_onwire (on wire)
124  TVector3 fromwiretoextr = poca - poca_onwire;
125  fromwiretoextr.SetMag(1.);
126  // unitary vector along the wire
127  TVector3 wiredirection = wire2 - wire1;
128  wiredirection.SetMag(1.);
129 
130  // check orthogonality
131  if(fabs(fromwiretoextr * wiredirection) > 1e-3) {
132  GFException exc("fromwiretoextr*wiredirection > 1e-3", __LINE__,__FILE__);
133  throw exc;
134  }
135 
136  TVector3 U;
137  U = fromwiretoextr;
138  TVector3 V;
139  V = wiredirection;
140  U.SetMag(1.);
141  V.SetMag(1.);
142 
143  TVector3 O = poca_onwire;
144 
145  fDetPlane = GFDetPlane(O, U, V);
146 
147  return fDetPlane;
148 }
process_name opflash particleana ie x
TVector3 dist(const TVector3 &point) const
Definition: GFDetPlane.cxx:214
process_name hit
Definition: cheaterreco.fcl:51
BEGIN_PROLOG V
double distance(geo::Point_t const &point, CathodeDesc_t const &cathode)
Returns the distance of a point from the cathode.
Exception class for error handling in GENFIT (provides storage for diagnostic information) ...
Definition: GFException.h:48
Var Sqrt(const Var &v)
Use to take sqrt of a var.
Definition: Var.cxx:172
do i e
double genf::GFWireHitPolicy::getMaxDistance ( )
inline

Definition at line 80 of file GFWireHitPolicy.h.

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

Definition at line 83 of file GFWireHitPolicy.h.

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 41 of file GFWireHitPolicy.cxx.

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

Hit covariances in detector plane.

Definition at line 55 of file GFWireHitPolicy.cxx.

56 {
57  checkPlane(hit, plane);
58 
59  TMatrixT<Double_t> returnCov(1,1);
60  TMatrixT<Double_t> rawCov = hit->getRawHitCov();
61 
62  returnCov[0][0] = rawCov[6][6];
63 
64  return returnCov;
65 }
process_name hit
Definition: cheaterreco.fcl:51
void checkPlane(GFAbsRecoHit *, const GFDetPlane &)
Check if the detector plane is valid.
void genf::GFWireHitPolicy::setMaxDistance ( double  d)
inline

Definition at line 81 of file GFWireHitPolicy.h.

Member Data Documentation

GFDetPlane genf::GFWireHitPolicy::fDetPlane
private

Definition at line 89 of file GFWireHitPolicy.h.

double genf::GFWireHitPolicy::fMaxdistance
private

Definition at line 90 of file GFWireHitPolicy.h.

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

Definition at line 85 of file GFWireHitPolicy.h.


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