85 TGeoBBox* stripBox = (TGeoBBox*)stripPhysicalNode->GetShape();
87 double xSize = 2.0 * stripBox->GetDX();
88 double ySize = 2.0 * stripBox->GetDY();
89 double zSize = 2.0 * stripBox->GetDZ();
96 double eTrans[3], *pTrans;
99 double eLocal[3], *pLocal;
101 for (
int i = 0; i < 3; i++ ) pLocal[i] = 0.0;
102 stripPhysicalNode->GetNode()->LocalToMaster( pLocal, pTrans );
104 m_CenterPos.setX( pTrans[0] );
105 m_CenterPos.setY( pTrans[1] );
106 m_CenterPos.setZ( pTrans[2] );
108 m_Xmin = pTrans[0] - 0.5 * xSize;
109 m_Xmax = pTrans[0] + 0.5 * xSize;
110 m_Ymin = pTrans[1] - 0.5 * ySize;
111 m_Ymax = pTrans[1] + 0.5 * ySize;
112 m_Zmin = pTrans[2] - 0.5 * zSize;
113 m_Zmax = pTrans[2] + 0.5 * zSize;
115 m_CenterSigma.setX( un * xSize );
116 m_CenterSigma.setY( un * ySize );
117 m_CenterSigma.setZ( un * zSize );
140 const Hep3Vector lineDir )
const {
145 HepPlane3D stripSide[6];
148 HepPoint3D p0Xmin( m_Xmin, m_Ymin, m_dzFarFrontGas );
149 HepPoint3D p1Xmin( m_Xmin, m_Ymax, m_dzFarFrontGas );
150 HepPoint3D p2Xmin( m_Xmin, m_Ymin, m_dzFarBackGas );
151 HepPlane3D plane0( p0Xmin, p1Xmin, p2Xmin );
152 stripSide[0] = plane0;
155 HepPoint3D p0Xmax( m_Xmax, m_Ymin, m_dzFarFrontGas );
156 HepPoint3D p1Xmax( m_Xmax, m_Ymax, m_dzFarFrontGas );
157 HepPoint3D p2Xmax( m_Xmax, m_Ymin, m_dzFarBackGas );
158 HepPlane3D plane1( p0Xmax, p1Xmax, p2Xmax );
159 stripSide[1] = plane1;
162 HepPoint3D p0Ymin( m_Xmin, m_Ymin, m_dzFarFrontGas );
163 HepPoint3D p1Ymin( m_Xmax, m_Ymin, m_dzFarFrontGas );
164 HepPoint3D p2Ymin( m_Xmin, m_Ymin, m_dzFarBackGas );
165 HepPlane3D plane2( p0Ymin, p1Ymin, p2Ymin );
166 stripSide[2] = plane2;
169 HepPoint3D p0Ymax( m_Xmin, m_Ymax, m_dzFarFrontGas );
170 HepPoint3D p1Ymax( m_Xmax, m_Ymax, m_dzFarFrontGas );
171 HepPoint3D p2Ymax( m_Xmin, m_Ymax, m_dzFarBackGas );
172 HepPlane3D plane3( p0Ymax, p1Ymax, p2Ymax );
173 stripSide[3] = plane3;
176 HepPoint3D p0Zmin( m_Xmin, m_Ymin, m_dzFarFrontGas );
177 HepPoint3D p1Zmin( m_Xmax, m_Ymin, m_dzFarFrontGas );
178 HepPoint3D p2Zmin( m_Xmin, m_Ymax, m_dzFarFrontGas );
179 HepPlane3D plane4( p0Zmin, p1Zmin, p2Zmin );
180 stripSide[4] = plane4;
183 HepPoint3D p0Zmax( m_Xmin, m_Ymin, m_dzFarBackGas );
184 HepPoint3D p1Zmax( m_Xmax, m_Ymin, m_dzFarBackGas );
185 HepPoint3D p2Zmax( m_Xmin, m_Ymax, m_dzFarBackGas );
186 HepPlane3D plane5( p0Zmax, p1Zmax, p2Zmax );
187 stripSide[5] = plane5;
194 int numIntersections = 0;
196 bool intersectFlag = 0;
199 for (
int sideID = 0; sideID < 6; sideID++ )
203 if ( intersectFlag &&
204 ( gCross.x() >= m_Xmin - 1 ) &&
205 ( gCross.x() <= m_Xmax + 1 ) && ( gCross.y() >= m_Ymin - 1 ) &&
206 ( gCross.y() <= m_Ymax + 1 ) &&
207 ( ( gCross.z() >= m_dzFarFrontGas && gCross.z() <= m_dzNearFrontGas ) ||
208 ( gCross.z() >= m_dzNearBackGas && gCross.z() <= m_dzFarBackGas ) ) )
220 if ( numIntersections > 2 )
227 if ( numIntersections > 0 )
return true;
void SetStrip(const float x1, const float x2, const float y1, const float y2, const float xSize, const float ySize, const float zSize)
Set the edge, center and sigma of the strip (in the gap coordinate system).