10#ifndef _DEFINE_WIRE_H_
11#define _DEFINE_WIRE_H_
14#define WireHitInvalid 2
15#define WireHitAppended 4
16#define WireHitAppendedorInvalid 6
17#define WireNeighbor0 8
18#define WireNeighbor1 16
19#define WireNeighbor2 32
20#define WireNeighbor3 64
21#define WireNeighbor4 128
22#define WireNeighbor5 256
25# define M_PI 3.14159265358979323846
28#include "KalFitAlg/lpav/Lpav.h"
31#include "CLHEP/Geometry/Point3D.h"
32#ifndef ENABLE_BACKWARDS_COMPATIBILITY
36#include "KalFitAlg/KalFitLayer_Mdc.h"
38using CLHEP::Hep3Vector;
39using CLHEP::HepMatrix;
40using CLHEP::HepSymMatrix;
41using CLHEP::HepVector;
50 static const double A[NREGION];
52 static const double F[
NLAYER];
66 unsigned int localId(
void )
const {
return localId_; }
69 unsigned int state(
void )
const {
return state_; }
70 unsigned stateAND(
const unsigned mask )
const;
71 unsigned int geoID(
void )
const {
return geoID_; }
72 unsigned int stereo(
void )
const {
return stereo_; }
80 void state(
const unsigned int i ) { state_ = i; }
85 void ddl(
const double d ) { ddl_ = d; }
86 void ddr(
const double d ) { ddr_ = d; }
92 double Acoef(
void )
const {
return A_; }
93 double lzx(
void )
const {
return lzx_; }
97 double x(
void )
const {
return x_; }
98 double y(
void )
const {
return y_; }
101 int z(
const Lpav& la,
double&
z )
const;
127 unsigned int stereo_;
136#ifdef KalFitWire_NO_INLINE
140# define KalFitWire_INLINE_DEFINE_HERE
143#ifdef KalFitWire_INLINE_DEFINE_HERE
151 state_ = ( state_ | mask ) ^ mask;
155 return M_PI * ( layer_.offset() + 2 * localId_ ) / (double)layer_.superLayer().nWire();
161 return distance_ * fabs( layer_.tanSlant() );
167 HepVector center = la.
center();
169 double dx2 = center( 1 ) - x_;
170 double dy2 = center( 2 ) - y_;
171 double par1 = dx_ * dx_ + dy_ * dy_;
172 double par2 = ( dx_ * dx2 + dy_ * dy2 ) / par1;
173 double par3 = dx_ * dy2 - dy_ * dx2;
174 double par4 = rho * rho * par1 - par3 * par3;
175 if ( par4 < 0. )
return 0;
176 par4 = sqrt( par4 ) / par1;
177 double delta = par2 + par4;
178 if ( delta >= 0. && delta < 1. )
180 z = layer_.zb() + delta * ( layer_.zf() - layer_.zb() );
186 if ( delta >= 0. && delta < 1. )
188 z = layer_.zb() + delta * ( layer_.zf() - layer_.zb() );
HepGeom::Point3D< double > HepPoint3D
HepGeom::Point3D< double > HepPoint3D
Description of a Wire class.
unsigned int geoID(void) const
~KalFitWire(void)
destructor
double distance_z(void) const
returns z_distance from the center of wire by drift distance
void stateORXOR(const unsigned mask)
double distance(void) const
returns drift distance
HepPoint3D xyPosition(void) const
KalFitWire ** neighborPtr(void)
void stateXOR(const unsigned mask)
void stateOR(const unsigned mask)
KalFitWire(const int localID, const KalFitLayer_Mdc &layer, const HepPoint3D &fwd, const HepPoint3D &bck, KalFitWire *const vt, unsigned int geoID, unsigned int stereo)
constructor
double distance(const double distance)
set drift distance
void state(const unsigned int i)
unsigned int localId(void) const
Extractor :
HepPoint3D bck(void) const
HepPoint3D fwd(void) const
Geometry :
int z(const Lpav &la, double &z) const
returns z for track la
unsigned stateAND(const unsigned mask) const
void chk_left_and_right(void)
const KalFitLayer_Mdc & layer(void) const
unsigned int state(void) const
unsigned int stereo(void) const