StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StEEmcPointMap.cxx
1 
10 #include "StEEmcPointMap.h"
11 
12 #include <set>
13 #include <Rtypes.h>
14 #include "StRoot/St_base/StMessMgr.h"
15 #include "StRoot/St_base/Stypes.h"
16 #include "StEEmcStripEndPointData.h"
17 #include "StEEmcUtil/EEmcGeom/EEmcGeomSimple.h"
18 #include "StRoot/StEEmcUtil/EEmcGeom/EEmcGeomDefs.h"
19 #include "StRoot/StEEmcPool/StEEmcGeoId/StEEmcGeoId.h"
20 
21 // 15 degrees
22 #ifndef PI_OVER_TWELVE
23 #define PI_OVER_TWELVE 0.2617993877991494263
24 #endif
25 
26 // 30 degrees
27 #ifndef TWO_PI_OVER_TWELVE
28 #define TWO_PI_OVER_TWELVE 0.5235987755982988527
29 #endif
30 
31 // Cut-off for the edge
32 #ifndef EDGE_FACTOR
33 #define EDGE_FACTOR 1.025
34 #endif
35 
36 
37 void StEEmcPointMap_t::getStripLineParam( Float_t stripGeoId, Float_t& a, Float_t& b ) {
38  Float_t x1, x2, y1, y2;
39  getStripEndPoints( stripGeoId, x1, y1, x2, y2 );
40 
41  Float_t theta = atan2( y2 - y1, x2 - x1 );
42 
43  // correct for rounding error: quantize theta to 5 degree marks
44  // 0.0872664 [rad] = 5 [degrees]
45  theta = 0.0872664*static_cast< Int_t >( theta/0.0872664 + 0.5 );
46 
47  a = tan( theta );
48  b = y1 - a * x1;
49 };
50 
51 
52 void StEEmcPointMap_t::getStripEndPoints( Float_t stripGeoId, Float_t& x1, Float_t& y1, Float_t& x2, Float_t& y2 ) {
53 
54  // make sure the data is loaded
55  if( mStripDataVec.empty() )
56  loadData();
57 
58  // geo qualifers for the strip
59  Short_t stripSector, stripIndex;
60  Bool_t layerIsV;
61 
62  // decode geo id
63  StEEmcGeoId_t::decodeSmd( stripGeoId, stripSector, layerIsV, stripIndex );
64 
65  if( (UInt_t)stripIndex > mStripDataVec.size() ){
66  LOG_ERROR << "Asked for invalid strip: " << endm;
67  LOG_ERROR << "\tGeoId " << stripGeoId << ", sector " << stripSector << " layer " << ( layerIsV ? 'V' : 'U' ) << ", index " << stripIndex << endm;
68  LOG_ERROR << "\tStrip end point data currently loaded for " << mStripDataVec.size() << " strips." << endm;
69  x1 = y1 = x2 = y2 = 0;
70  return;
71  };
72 
73  // find the correct strip
74  StEEmcStripEndPointDataVec_t::const_iterator stripDataSetIter = mStripDataVec.begin();
75  std::advance( stripDataSetIter, stripIndex );
76 
77  // rotate the point into the correct coordinate system
78  // note: negative compared to other rotations in this class
79  Float_t dphiU = -(stripSector * TWO_PI_OVER_TWELVE - PI_OVER_TWELVE);
80 
81  Float_t x1_ = stripDataSetIter->getX();
82  Float_t y1_ = stripDataSetIter->getY1();
83  Float_t x2_ = stripDataSetIter->getX();
84  Float_t y2_ = stripDataSetIter->getY2();
85 
86  Float_t frac = stripGeoId - (Int_t)(stripGeoId);
87  if( frac ){
88  ++stripDataSetIter;
89  if( stripDataSetIter != mStripDataVec.end() ){
90  Float_t x1b_ = stripDataSetIter->getX();
91  Float_t y1b_ = stripDataSetIter->getY1();
92  Float_t x2b_ = stripDataSetIter->getX();
93  Float_t y2b_ = stripDataSetIter->getY2();
94 
95  x1_ += frac*(x1b_ - x1_);
96  y1_ += frac*(y1b_ - y1_);
97  x2_ += frac*(x2b_ - x2_);
98  y2_ += frac*(y2b_ - y2_);
99  };
100  };
101 
102  if( layerIsV ){
103  Float_t temp = x1_;
104  x1_ = y1_;
105  y1_ = temp;
106 
107  temp = x2_;
108  x2_ = y2_;
109  y2_ = temp;
110  };
111 
112  x1 = x1_*cos( dphiU ) - y1_*sin( dphiU );
113  y1 = y1_*cos( dphiU ) + x1_*sin( dphiU );
114 
115  x2 = x2_*cos( dphiU ) - y2_*sin( dphiU );
116  y2 = y2_*cos( dphiU ) + x2_*sin( dphiU );
117 
118 };
119 
120 Float_t StEEmcPointMap_t::getStripDCA( Float_t pointX, Float_t pointY, Short_t stripGeoId ) const {
121  //
122  // THE STRIP
123  //
124 
125  // geo qualifers for the strip
126  Short_t stripSector, stripIndex;
127  Bool_t layerIsV;
128 
129  // decode geo id
130  StEEmcGeoId_t::decodeSmd( stripGeoId, stripSector, layerIsV, stripIndex );
131 
132  // find the correct strip
133  StEEmcStripEndPointDataVec_t::const_iterator stripDataSetIter = mStripDataVec.begin();
134  std::advance( stripDataSetIter, stripIndex );
135 
136  //
137  // THE POINT
138  //
139 
140  // rotate the point into the correct coordinate system
141  Float_t dphiU = stripSector * TWO_PI_OVER_TWELVE - PI_OVER_TWELVE;
142  Float_t pointXtrans = pointX*cos( dphiU ) - pointY*sin( dphiU );
143  Float_t pointYtrans = pointY*cos( dphiU ) + pointX*sin( dphiU );
144 
145  if( layerIsV ){
146  Float_t temp = pointXtrans;
147  pointXtrans = pointYtrans;
148  pointYtrans = temp;
149  };
150 
151  //
152  // THE DCA
153  //
154  Float_t dX = 0;
155  Float_t dY = 0;
156 
157  if( pointYtrans > stripDataSetIter->getY2() ){
158  // is above, so get DCA to top endpoint
159  dX = pointXtrans - stripDataSetIter->getX();
160  dY = pointYtrans - stripDataSetIter->getY2();
161 
162  } else if( pointYtrans < stripDataSetIter->getY1() ){
163  // is below, so DCA to bottom endpoint
164  dX = pointXtrans - stripDataSetIter->getX();
165  dY = pointYtrans - stripDataSetIter->getY1();
166 
167  } else {
168  // In between, so compute dca to the line.
169  // But line is verticle, so distance is just the x distance
170  dX = pointXtrans - stripDataSetIter->getX();
171  dY = 0;
172  };
173 
174  // prepare to check for special edge case
175  Bool_t isEdge = ( !layerIsV && (stripSector == 2 || stripSector == 8 )) || (layerIsV && (stripSector == 3 || stripSector == 9 ));
176  Float_t phi = atan2( pointYtrans, pointXtrans );
177 
178  // check
179  if( isEdge && phi < TWO_PI_OVER_TWELVE*EDGE_FACTOR ){
180  Float_t altY1 = stripDataSetIter->getX()*tan( TWO_PI_OVER_TWELVE*EDGE_FACTOR );
181 
182  // check whether point is below the between-sector edge, or
183  // if is inside the center edge. If is below the
184  // between-sector edge, use alternate cut-off.
185  if( altY1 > stripDataSetIter->getY1() )
186  dY = pointYtrans-altY1;
187  };
188 
189  return sqrt( dX*dX + dY*dY );
190 };
191 
192 
193 Float_t StEEmcPointMap_t::getTowerDCA( Float_t x, Float_t y, Short_t towerGeoId ) const {
194  Short_t sector;
195  Short_t subsector;
196  Short_t etaBin;
197 
198  StEEmcGeoId_t::decodeTow( towerGeoId, sector, subsector, etaBin );
199 
200  TVector3 towerCenter = EEmcGeomSimple::Instance().getTowerCenter( sector, subsector, etaBin );
201 
202  Float_t dX = x - towerCenter.X();
203  Float_t dY = y - towerCenter.Y();
204 
205  return sqrt( dX*dX + dY*dY );
206 };
207 
208 // r is a max distance to search
209 Short_t StEEmcPointMap_t::getStripsNearestPoint( Float_t x, Float_t y, Float_t r ) const{
210  Short_t geoId = -1;
211  Float_t dist = 0.5;
212  std::set< Short_t > stripSet;
213 
214  for( ; dist < r && geoId < 0; dist += 0.5 ){
215  getStripsNearPoint( x, y, dist, stripSet );
216 
217  if( stripSet.size() == 1 ){
218  geoId = *(stripSet.begin());
219  } else if (!stripSet.empty() ){
220  Float_t smallestDist = 2*r;
221  Short_t geoIdOfSmallest = -1;
222 
223  std::set< Short_t >::iterator iter;
224  for( iter = stripSet.begin(); iter != stripSet.end(); ++iter ){
225  Float_t thisDist = getStripDCA( x, y, *iter );
226  if( thisDist < smallestDist ){
227  smallestDist = thisDist;
228  geoIdOfSmallest = *iter;
229  };
230  };
231  geoId = geoIdOfSmallest;
232  };
233  };
234 
235  return geoId;
236 };
237 
238 
239 void StEEmcPointMap_t::getStripsNearPoint( Float_t x, Float_t y, Float_t r, std::set< Short_t >& stripSet ) const {
240 
241  Float_t phi = atan2( y, x );
242 
243  // note: 2.5 is the number of sectors between the beginning of sector 0 and phi = 0
244  Float_t sectorFrac = ( 2.5 - phi/TWO_PI_OVER_TWELVE );
245  Short_t sector = (Short_t)sectorFrac;
246 
247  // need to round the other way if negative
248  if( sectorFrac <= 0 )
249  --sector;
250 
251  sector %= kEEmcNumSectors;
252  if( sector < 0 )
253  sector += kEEmcNumSectors;
254 
255  // rotate x,y into correct area to compare with map
256  Float_t dphiU = sector * TWO_PI_OVER_TWELVE - PI_OVER_TWELVE;
257  Float_t x2 = x*cos( dphiU ) - y*sin( dphiU );
258  Float_t y2 = y*cos( dphiU ) + x*sin( dphiU );
259 
260  // add contributions from regular sector
261  addSmdContribution( x2, y2, r, sector, 'U', 0, stripSet );
262  addSmdContribution( x2, y2, r, sector, 'V', 0, stripSet );
263 
264  if( mCrossSectorBoundaries ){
265  // convention is as follows, e.g.: a point in sector 5 is to the
266  // positive side of sector 6 and the negative side of sector 4.
267 
268  // place point just to the left (increasing phi) of the sector
269  Float_t x3 = x2*cos( TWO_PI_OVER_TWELVE ) - y2*sin( TWO_PI_OVER_TWELVE );
270  Float_t y3 = y2*cos( TWO_PI_OVER_TWELVE ) + x2*sin( TWO_PI_OVER_TWELVE );
271 
272  // add contributions
273  Short_t newSector = (sector + 1) % kEEmcNumSectors;
274  addSmdContribution( x3, y3, r, newSector, 'U', 1, stripSet );
275  addSmdContribution( x3, y3, r, newSector, 'V', 1, stripSet );
276 
277  // place point just to the right (decreasing phi) of the sector
278  Float_t x4 = x2*cos( -TWO_PI_OVER_TWELVE ) - y2*sin( -TWO_PI_OVER_TWELVE );
279  Float_t y4 = y2*cos( -TWO_PI_OVER_TWELVE ) + x2*sin( -TWO_PI_OVER_TWELVE );
280 
281  // add contributions. Note: modulo doesn't fix the sign, so add
282  // in an extra factor of kEEmcNumSectors.
283  newSector = (sector - 1 + kEEmcNumSectors) % kEEmcNumSectors;
284  addSmdContribution( x4, y4, r, newSector, 'U', -1, stripSet );
285  addSmdContribution( x4, y4, r, newSector, 'V', -1, stripSet );
286  };
287 };
288 
289 
290 // Sector corresponse to the sector of the specific strips in
291 // question, not the sector of the x, y position. Sector side:
292 // defines if point is to the left (larger phi, sectorSide == 1 ), to
293 // the right ( smaller phi, sectorSide == -1 ), or within the sector
294 // (sectorSide == 0).
295 void StEEmcPointMap_t::addSmdContribution( Float_t x, Float_t y, Float_t r, Short_t sector, Char_t layer, Short_t sectorSide, std::set< Short_t >& stripSet ) const {
296  std::set< Short_t > stripIdxSet;
297  std::set< Short_t >::iterator stripIdxSetIter;
298 
299 
300  // flip if this is a V layer
301  if( layer == 'V' ){
302  Double_t temp = x;
303  x = y;
304  y = temp;
305  };
306 
307  StEEmcStripEndPointDataVec_t::const_iterator low_end = std::lower_bound( mStripDataVec.begin(), mStripDataVec.end(), StEEmcStripEndPointData_t( 0, x-r, 0, 0 ) );
308  StEEmcStripEndPointDataVec_t::const_iterator up_end = std::upper_bound( mStripDataVec.begin(), mStripDataVec.end(), StEEmcStripEndPointData_t( 0, x+r, 0, 0 ) );
309  StEEmcStripEndPointDataVec_t::const_iterator stripDataSetIter;
310 
311  Bool_t isEdge = (layer == 'U' && (sector == 2 || sector == 8 )) || (layer == 'V' && (sector == 3 || sector == 9 ));
312 
313  for( ; low_end != up_end; ++low_end )
314  stripIdxSet.insert( low_end->getStripIndex() );
315 
316  // erase last strip from, as no fiber
317  stripIdxSet.erase( kEEmcNumStrips-1 );
318 
319  // remove more strips if one of the shorter sectors
320  if( isEdge ) {
321  stripIdxSetIter = stripIdxSet.lower_bound( kEEmcNumEdgeStrips-3 );
322 
323  if( stripIdxSetIter != stripIdxSet.end() )
324  stripIdxSet.erase( stripIdxSetIter, stripIdxSet.end() );
325  };
326 
327  // compute once here, rather than many times later
328  Float_t thresRsquared = r*r;
329  //Float_t pointRsquared = x*x + y*y;
330  Float_t phi = atan2( y, x );
331 
332  // now add strips to overall set
333  for( stripIdxSetIter = stripIdxSet.begin(); stripIdxSetIter != stripIdxSet.end(); ++stripIdxSetIter ){
334 
335  // always check actual dca: if inside, but near the edge, could
336  // otherwise let through dca > r
337 
338  // get pointer to the strip
339  stripDataSetIter = mStripDataVec.begin();
340  std::advance( stripDataSetIter, *stripIdxSetIter );
341 
342  // compute distance
343  Float_t xdist = x - stripDataSetIter->getX();
344  Float_t ydist = 0;
345  if( y < stripDataSetIter->getY1() )
346  ydist = y - stripDataSetIter->getY1();
347  if( y > stripDataSetIter->getY2() )
348  ydist = y - stripDataSetIter->getY2();
349 
350  // special case: sectors would normally overlap boundary, but do not
351 
352  if( isEdge && phi < TWO_PI_OVER_TWELVE*EDGE_FACTOR ){
353  Float_t altY1 = stripDataSetIter->getX()*tan( TWO_PI_OVER_TWELVE*EDGE_FACTOR );
354 
355  // check whether point is below the between-sector edge, or
356  // if is inside the center edge. If is below the
357  // between-sector edge, use alternate cut-off. For alternate
358  // cut-off, do not actually have the endpoint in this case,
359  // but 30.75 degrees ( = 1.025 * pi/6 rad ) is a pretty good
360  // guess
361  if( altY1 > stripDataSetIter->getY1() )
362  ydist = y-altY1;
363  };
364 
365  Float_t dist_sq = xdist*xdist + ydist*ydist;
366 
367  if( dist_sq < thresRsquared ){
368  stripSet.insert( StEEmcGeoId_t::encodeSmd( sector, (layer == 'V'), *stripIdxSetIter ) );
369 
370  stripDataSetIter = mStripDataVec.begin();
371  std::advance( stripDataSetIter, *stripIdxSetIter );
372 
373  };
374  };
375 };
376 
377 void StEEmcPointMap_t::getTowersNearPoint( Float_t x, Float_t y, Float_t r, std::set< Short_t >& towerSet ){
378  Int_t ierr = kStOK;
379 
380  Float_t phi = atan2( y, x );
381 
382  Float_t rOfXY = sqrt( x*x + y*y );
383 
384  if( r > rOfXY ){
385  LOG_ERROR << "Invalid point, distance combination: (" << x << ", " << y << "), " << r << endm;
386  ierr = kStErr;
387  };
388 
389  if( !ierr ){
390  Float_t dphi = asin( r/rOfXY );
391 
392  Short_t kNumPhiBins = kEEmcNumSectors*kEEmcNumSubSectors;
393 
394  // note: 12.5 is the number of phi bins between the beginning of sector 0 and phi = 0
395  Float_t phiFrac1 = ( 12.5 - (phi+dphi)/TWO_PI_OVER_TWELVE*kEEmcNumSubSectors );
396  Short_t phiBin1 = (Short_t)phiFrac1;
397 
398  // need to round the other way if negative
399  if( phiFrac1 <= 0 )
400  --phiBin1;
401 
402  // take care of negative as well as too large
403  phiBin1 += kNumPhiBins;
404  phiBin1 %= kNumPhiBins;
405 
406  Float_t phiFrac2 = ( 12.5 - (phi-dphi)/TWO_PI_OVER_TWELVE*kEEmcNumSubSectors );
407  Short_t phiBin2 = (Short_t)phiFrac2;
408 
409  // need to round the other way if negative
410  if( phiFrac2 <= 0 )
411  --phiBin2;
412 
413  // take care of negative as well as too large
414  phiBin2 += kNumPhiBins;
415  phiBin2 %= kNumPhiBins;
416 
417  if( phiBin2 < phiBin1 )
418  phiBin2 += kNumPhiBins;
419 
420  // assume point is at the z position of the SMD
421  Float_t minTheta = atan2( rOfXY - r, kEEmcZSMD );
422  Float_t maxTheta = atan2( rOfXY + r, kEEmcZSMD );
423 
424  Float_t minEta = - log( tan( maxTheta / 2 ));
425  Float_t maxEta = - log( tan( minTheta / 2 ));
426 
427  const Float_t *etaBinRange = EEmcGeomSimple::Instance().getEtaBinRangeArray();
428  Short_t minEtaBin = 0;
429  Short_t maxEtaBin = kEEmcNumEtas-1;
430 
431  if( minEta > etaBinRange[ kEEmcNumEtas ] && maxEta < etaBinRange[ 0 ] ){
432 
433  // note: eta bins are in decreasing eta, so need to check maxEta
434  // to find min eta bin
435  for( ; minEtaBin <= kEEmcNumEtas+1 && etaBinRange[ minEtaBin ] > maxEta; ++minEtaBin );
436 
437  // minEtaBin set to first one that failed, so decrease if possible
438  if( minEtaBin )
439  --minEtaBin;
440 
441  for( maxEtaBin = minEtaBin; maxEtaBin <= kEEmcNumEtas+1 && etaBinRange[ maxEtaBin ] > minEta; ++maxEtaBin );
442 
443  // maxEtaBin set to first one that failed, so decrease if possible
444  if( maxEtaBin )
445  --maxEtaBin;
446 
447 
448  // Now have the valid range of eta bins and phi bins, loop over these bins and convert to tower Ids
449  for( Short_t etaBin = minEtaBin; etaBin <= maxEtaBin; ++etaBin )
450  for( Short_t phiBin = phiBin1; phiBin <= phiBin2; ++phiBin )
451  towerSet.insert( StEEmcGeoId_t::encodeTow( phiBin%kNumPhiBins, etaBin ) );
452  };
453  };
454 };
455 
456 
457 Short_t StEEmcPointMap_t::getTowerNearestPoint( Float_t x, Float_t y ){
458  Short_t towIdx = -1;
459 
460  Float_t phi = atan2( y, x );
461  Float_t rOfXY = sqrt( x*x + y*y );
462 
463  Short_t kNumPhiBins = kEEmcNumSectors*kEEmcNumSubSectors;
464 
465  // note: 12.5 is the number of phi bins between the beginning of sector 0 and phi = 0
466  Float_t phiFrac = ( 12.5 - phi/TWO_PI_OVER_TWELVE*kEEmcNumSubSectors );
467  Short_t phiBin = (Short_t)phiFrac;
468 
469  // need to round the other way if negative
470  if( phiFrac <= 0 )
471  --phiBin;
472 
473  // take care of negative as well as too large
474  phiBin += kNumPhiBins;
475  phiBin %= kNumPhiBins;
476 
477  // assume point is at the z position of the SMD
478  Float_t theta = atan2( rOfXY, kEEmcZSMD );
479  Float_t eta = - log( tan( theta / 2 ));
480 
481  const Float_t *etaBinRange = EEmcGeomSimple::Instance().getEtaBinRangeArray();
482  Short_t etaBin = 0;
483 
484  if( eta > etaBinRange[ kEEmcNumEtas ] && eta < etaBinRange[ 0 ] ){
485 
486  // note: eta bins are in decreasing eta
487  for( ; etaBin < kEEmcNumEtas && eta < etaBinRange[ etaBin+1 ]; ++etaBin );
488 
489  towIdx = StEEmcGeoId_t::encodeTow( phiBin%kNumPhiBins, etaBin );
490  };
491 
492  return towIdx;
493 };
494 
495 Short_t StEEmcPointMap_t::getSectorOfPoint( Float_t x, Float_t y ){
496  Float_t phi = atan2( y, x );
497 
498  Float_t sectorFrac = ( 2.5 - phi/TWO_PI_OVER_TWELVE );
499  Short_t sector = (Short_t)sectorFrac;
500 
501  // need to round the other way if negative
502  if( sectorFrac <= 0 )
503  --sector;
504 
505  sector %= kEEmcNumSectors;
506  if( sector < 0 )
507  sector += kEEmcNumSectors;
508 
509  return sector;
510 };
511 
512 void StEEmcPointMap_t::convertStripUVtoXY( Short_t sector, Float_t u, Float_t v, Float_t& x, Float_t& y ) {
513 
514  // 'float' geoId's have a fractional strip position
515  // just add the fraction on to the end
516  Float_t uGeoId = StEEmcGeoId_t::encodeSmd( sector, 0, (Int_t)(u) ) + u - (Int_t)(u);
517  Float_t vGeoId = StEEmcGeoId_t::encodeSmd( sector, 1, (Int_t)(v) ) + v - (Int_t)(v);
518 
519  // get equations for the lines
520  Float_t uA, uB, vA, vB;
521  getStripLineParam( uGeoId, uA, uB );
522  getStripLineParam( vGeoId, vA, vB );
523 
524  // get intersection
525  x = (uB - vB)/(vA - uA);
526  y = uA*x + uB;
527 };
528 
529 StEEmcPointMap_t& StEEmcPointMap_t::instance(){
530  static StEEmcPointMap_t pointmap;
531  return pointmap;
532 };
533 
534 // the static data member
535 const StEEmcStripEndPointDataVec_t StEEmcPointMap_t::mStripDataVec;
536 
537 // constructor
538 StEEmcPointMap_t::StEEmcPointMap_t( Bool_t crossSectorBoundaries ) : mCrossSectorBoundaries( crossSectorBoundaries ) {
539  loadData();
540 };
541 
542 // load the static data
543 void StEEmcPointMap_t::loadData(){
544  if( mStripDataVec.empty() ){
545  // remove constness so it can be filled
546  StEEmcStripEndPointDataVec_t *stripDataSetPtr = const_cast< StEEmcStripEndPointDataVec_t* >( &mStripDataVec );
547 
548  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 0, 41.3655, 65.4309, 67.7721 ) );
549  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 1, 41.8705, 65.1089, 68.6468 ) );
550  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 2, 42.3755, 64.7814, 69.5215 ) );
551  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 3, 42.8805, 64.4482, 70.3962 ) );
552  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 4, 43.3855, 64.1093, 71.2709 ) );
553  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 5, 43.8905, 63.7647, 72.1456 ) );
554  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 6, 44.3955, 63.4141, 73.0203 ) );
555  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 7, 44.9005, 63.0575, 73.8950 ) );
556  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 8, 45.4055, 62.6949, 74.7696 ) );
557  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 9, 45.9105, 62.3260, 75.6443 ) );
558  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 10, 46.4155, 61.9509, 76.5190 ) );
559  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 11, 46.9205, 61.5693, 77.3937 ) );
560  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 12, 47.4255, 61.1811, 78.2684 ) );
561  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 13, 47.9305, 60.7863, 79.1431 ) );
562  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 14, 48.4355, 60.3847, 80.0177 ) );
563  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 15, 48.9405, 59.9761, 80.8924 ) );
564  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 16, 49.4455, 59.5605, 81.7671 ) );
565  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 17, 49.9505, 59.1376, 82.6418 ) );
566  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 18, 50.4555, 58.7073, 83.5165 ) );
567  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 19, 50.9605, 58.2695, 84.3912 ) );
568  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 20, 51.4655, 57.8240, 85.2659 ) );
569  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 21, 51.9705, 57.3705, 86.1405 ) );
570  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 22, 52.4755, 56.9090, 87.0152 ) );
571  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 23, 52.9805, 56.4391, 87.8899 ) );
572  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 24, 53.4855, 55.9608, 88.7646 ) );
573  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 25, 53.9905, 55.4737, 89.6393 ) );
574  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 26, 54.4955, 54.9777, 90.5140 ) );
575  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 27, 55.0005, 54.4725, 91.3887 ) );
576  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 28, 55.5055, 53.9578, 92.2633 ) );
577  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 29, 56.0105, 53.4334, 93.1380 ) );
578  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 30, 56.5155, 52.8990, 94.0127 ) );
579  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 31, 57.0205, 52.3543, 94.8874 ) );
580  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 32, 57.5255, 51.7989, 95.7621 ) );
581  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 33, 58.0305, 51.2325, 96.6368 ) );
582  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 34, 58.5355, 50.6548, 97.5115 ) );
583  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 35, 59.0405, 50.0652, 98.3861 ) );
584  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 36, 59.5455, 49.4635, 99.2608 ) );
585  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 37, 60.0505, 48.8492, 100.1355 ) );
586  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 38, 60.5555, 48.2218, 101.0102 ) );
587  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 39, 61.0605, 47.5807, 101.8849 ) );
588  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 40, 61.5655, 46.9254, 102.7596 ) );
589  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 41, 62.0705, 46.2554, 103.6343 ) );
590  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 42, 62.5755, 45.5699, 104.5089 ) );
591  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 43, 63.0805, 44.8682, 105.3836 ) );
592  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 44, 63.5855, 44.1497, 106.2583 ) );
593  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 45, 64.0905, 43.4133, 107.1330 ) );
594  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 46, 64.5955, 42.6583, 108.0077 ) );
595  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 47, 65.1005, 41.8836, 108.8824 ) );
596  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 48, 65.6055, 41.0880, 109.7571 ) );
597  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 49, 66.1105, 40.2705, 110.6317 ) );
598  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 50, 66.6155, 39.4295, 111.5064 ) );
599  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 51, 67.1205, 38.5635, 112.3811 ) );
600  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 52, 67.6255, 37.6709, 113.2558 ) );
601  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 53, 68.1305, 36.7497, 114.1305 ) );
602  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 54, 68.6355, 35.7977, 115.0052 ) );
603  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 55, 69.1405, 35.3711, 115.8799 ) );
604  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 56, 69.6455, 35.6626, 116.7545 ) );
605  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 57, 70.1505, 35.9542, 117.6292 ) );
606  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 58, 70.6555, 36.2458, 118.5039 ) );
607  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 59, 71.1605, 36.5373, 119.3786 ) );
608  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 60, 71.6655, 36.8289, 120.2533 ) );
609  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 61, 72.1705, 37.1204, 121.1280 ) );
610  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 62, 72.6755, 37.4120, 122.0026 ) );
611  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 63, 73.1805, 37.7036, 122.8773 ) );
612  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 64, 73.6855, 37.9951, 123.7520 ) );
613  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 65, 74.1905, 38.2867, 124.6267 ) );
614  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 66, 74.6955, 38.5783, 125.5014 ) );
615  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 67, 75.2005, 38.8698, 126.3761 ) );
616  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 68, 75.7055, 39.1614, 127.2508 ) );
617  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 69, 76.2105, 39.4529, 128.1255 ) );
618  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 70, 76.7155, 39.7445, 129.0001 ) );
619  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 71, 77.2205, 40.0361, 129.8748 ) );
620  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 72, 77.7255, 40.3276, 130.7495 ) );
621  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 73, 78.2305, 40.6192, 131.6242 ) );
622  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 74, 78.7355, 40.9108, 132.4989 ) );
623  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 75, 79.2405, 41.2023, 133.3736 ) );
624  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 76, 79.7455, 41.4939, 134.2482 ) );
625  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 77, 80.2505, 41.7854, 135.1229 ) );
626  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 78, 80.7555, 42.0770, 135.9976 ) );
627  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 79, 81.2605, 42.3686, 136.8723 ) );
628  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 80, 81.7655, 42.6601, 137.7470 ) );
629  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 81, 82.2705, 42.9517, 138.6217 ) );
630  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 82, 82.7755, 43.2432, 139.4964 ) );
631  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 83, 83.2805, 43.5348, 140.3711 ) );
632  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 84, 83.7855, 43.8264, 141.2457 ) );
633  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 85, 84.2905, 44.1179, 142.1204 ) );
634  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 86, 84.7955, 44.4095, 142.9951 ) );
635  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 87, 85.3005, 44.7011, 143.8698 ) );
636  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 88, 85.8055, 44.9926, 144.7445 ) );
637  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 89, 86.3105, 45.2842, 145.6192 ) );
638  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 90, 86.8155, 45.5757, 146.4939 ) );
639  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 91, 87.3205, 45.8673, 147.3685 ) );
640  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 92, 87.8255, 46.1589, 148.2432 ) );
641  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 93, 88.3305, 46.4504, 149.1179 ) );
642  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 94, 88.8355, 46.7420, 149.9926 ) );
643  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 95, 89.3405, 47.0336, 150.8673 ) );
644  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 96, 89.8455, 47.3251, 151.7420 ) );
645  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 97, 90.3505, 47.6167, 152.6167 ) );
646  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 98, 90.8555, 47.9082, 153.4913 ) );
647  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 99, 91.3605, 48.1998, 154.3660 ) );
648  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 100, 91.8655, 48.4914, 155.2407 ) );
649  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 101, 92.3705, 48.7829, 156.1154 ) );
650  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 102, 92.8755, 49.0745, 156.9901 ) );
651  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 103, 93.3805, 49.3660, 157.8648 ) );
652  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 104, 93.8855, 49.6576, 158.7394 ) );
653  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 105, 94.3905, 49.9492, 159.6141 ) );
654  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 106, 94.8955, 50.2407, 160.4888 ) );
655  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 107, 95.4005, 50.5323, 161.3635 ) );
656  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 108, 95.9055, 50.8239, 162.2382 ) );
657  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 109, 96.4105, 51.1154, 163.1129 ) );
658  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 110, 96.9155, 51.4070, 163.9876 ) );
659  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 111, 97.4205, 51.6985, 164.8623 ) );
660  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 112, 97.9255, 51.9901, 165.7369 ) );
661  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 113, 98.4305, 52.2817, 166.6116 ) );
662  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 114, 98.9355, 52.5732, 167.4863 ) );
663  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 115, 99.4405, 52.8648, 168.3610 ) );
664  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 116, 99.9455, 53.1564, 169.2357 ) );
665  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 117, 100.4505, 53.4479, 170.1104 ) );
666  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 118, 100.9555, 53.7395, 170.9850 ) );
667  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 119, 101.4605, 54.0310, 171.8597 ) );
668  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 120, 101.9655, 54.3226, 172.7344 ) );
669  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 121, 102.4705, 54.6142, 173.6091 ) );
670  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 122, 102.9755, 54.9057, 174.4838 ) );
671  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 123, 103.4805, 55.1973, 175.3585 ) );
672  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 124, 103.9855, 55.4888, 176.2332 ) );
673  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 125, 104.4905, 55.7804, 177.1078 ) );
674  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 126, 104.9955, 56.0720, 177.9825 ) );
675  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 127, 105.5005, 56.3635, 178.8572 ) );
676  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 128, 106.0055, 56.6551, 179.7319 ) );
677  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 129, 106.5105, 56.9467, 180.6066 ) );
678  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 130, 107.0155, 57.2382, 181.4813 ) );
679  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 131, 107.5205, 57.5298, 182.3560 ) );
680  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 132, 108.0255, 57.8213, 183.2307 ) );
681  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 133, 108.5305, 58.1129, 184.3468 ) );
682  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 134, 109.0355, 58.4045, 184.0486 ) );
683  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 135, 109.5405, 58.6960, 183.7485 ) );
684  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 136, 110.0455, 58.9876, 183.4465 ) );
685  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 137, 110.5505, 59.2791, 183.1426 ) );
686  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 138, 111.0555, 59.5707, 182.8368 ) );
687  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 139, 111.5605, 59.8623, 182.5291 ) );
688  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 140, 112.0655, 60.1538, 182.2195 ) );
689  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 141, 112.5705, 60.4454, 181.9079 ) );
690  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 142, 113.0755, 60.7370, 181.5945 ) );
691  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 143, 113.5805, 61.0285, 181.2790 ) );
692  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 144, 114.0855, 61.3201, 180.9616 ) );
693  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 145, 114.5905, 61.6116, 180.6423 ) );
694  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 146, 115.0955, 61.9032, 180.3210 ) );
695  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 147, 115.6005, 62.1948, 179.9976 ) );
696  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 148, 116.1055, 62.4863, 179.6723 ) );
697  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 149, 116.6105, 62.7779, 179.3450 ) );
698  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 150, 117.1155, 63.0695, 179.0156 ) );
699  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 151, 117.6205, 63.3610, 178.6842 ) );
700  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 152, 118.1255, 63.6526, 178.3507 ) );
701  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 153, 118.6305, 63.9441, 178.0152 ) );
702  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 154, 119.1355, 64.2357, 177.6777 ) );
703  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 155, 119.6405, 64.5273, 177.3380 ) );
704  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 156, 120.1455, 64.8188, 176.9963 ) );
705  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 157, 120.6505, 65.1104, 176.6524 ) );
706  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 158, 121.1555, 65.4020, 176.3065 ) );
707  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 159, 121.6605, 65.6935, 175.9583 ) );
708  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 160, 122.1655, 65.9851, 175.6081 ) );
709  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 161, 122.6705, 66.2766, 175.2557 ) );
710  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 162, 123.1755, 66.5682, 174.9012 ) );
711  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 163, 123.6805, 66.8598, 174.5444 ) );
712  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 164, 124.1855, 67.1513, 174.1855 ) );
713  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 165, 124.6905, 67.4429, 173.8243 ) );
714  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 166, 125.1955, 67.7344, 173.4610 ) );
715  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 167, 125.7005, 68.0260, 173.0954 ) );
716  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 168, 126.2055, 68.3176, 172.7275 ) );
717  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 169, 126.7105, 68.6091, 172.3574 ) );
718  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 170, 127.2155, 68.9007, 171.9850 ) );
719  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 171, 127.7205, 69.1923, 171.6103 ) );
720  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 172, 128.2255, 69.4838, 171.2333 ) );
721  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 173, 128.7305, 69.7754, 170.8540 ) );
722  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 174, 129.2355, 70.0669, 170.4723 ) );
723  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 175, 129.7405, 70.3585, 170.0883 ) );
724  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 176, 130.2455, 70.6501, 169.7019 ) );
725  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 177, 130.7505, 70.9416, 169.3131 ) );
726  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 178, 131.2555, 71.2332, 168.9219 ) );
727  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 179, 131.7605, 71.6419, 168.5283 ) );
728  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 180, 132.2655, 72.5166, 168.1323 ) );
729  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 181, 132.7705, 73.3913, 167.7337 ) );
730  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 182, 133.2755, 74.2659, 167.3328 ) );
731  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 183, 133.7805, 75.1406, 166.9293 ) );
732  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 184, 134.2855, 76.0153, 166.5233 ) );
733  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 185, 134.7905, 76.8900, 166.1149 ) );
734  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 186, 135.2955, 77.7647, 165.7038 ) );
735  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 187, 135.8005, 78.6394, 165.2902 ) );
736  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 188, 136.3055, 79.5140, 164.8740 ) );
737  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 189, 136.8105, 80.3887, 164.4552 ) );
738  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 190, 137.3155, 81.2634, 164.0338 ) );
739  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 191, 137.8205, 82.1381, 163.6097 ) );
740  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 192, 138.3255, 82.7200, 163.1830 ) );
741  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 193, 138.8305, 83.3347, 162.7535 ) );
742  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 194, 139.3355, 83.7504, 162.3214 ) );
743  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 195, 139.8405, 84.0118, 161.8866 ) );
744  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 196, 140.3455, 84.1096, 161.4489 ) );
745  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 197, 140.8505, 83.9558, 161.0086 ) );
746  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 198, 141.3555, 77.0644, 160.5654 ) );
747  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 199, 141.8605, 77.3560, 160.1194 ) );
748  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 200, 142.3655, 77.6475, 159.6706 ) );
749  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 201, 142.8705, 77.9391, 159.2188 ) );
750  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 202, 143.3755, 78.2307, 158.7643 ) );
751  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 203, 143.8805, 78.5222, 158.3067 ) );
752  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 204, 144.3855, 78.8138, 157.8463 ) );
753  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 205, 144.8905, 79.1054, 157.3829 ) );
754  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 206, 145.3955, 79.3969, 156.9164 ) );
755  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 207, 145.9005, 79.6885, 156.4470 ) );
756  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 208, 146.4055, 79.9800, 155.9745 ) );
757  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 209, 146.9105, 80.2716, 155.4989 ) );
758  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 210, 147.4155, 80.5632, 155.0203 ) );
759  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 211, 147.9205, 80.8547, 154.5385 ) );
760  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 212, 148.4255, 81.1463, 154.0535 ) );
761  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 213, 148.9305, 81.4379, 153.5654 ) );
762  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 214, 149.4355, 81.7294, 153.0740 ) );
763  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 215, 149.9405, 82.0210, 152.5794 ) );
764  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 216, 150.4455, 82.3125, 152.0815 ) );
765  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 217, 150.9505, 82.6041, 151.5802 ) );
766  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 218, 151.4555, 82.8957, 151.0757 ) );
767  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 219, 151.9605, 83.1872, 150.5677 ) );
768  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 220, 152.4655, 83.4788, 150.0563 ) );
769  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 221, 152.9705, 83.7703, 149.5415 ) );
770  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 222, 153.4755, 84.0619, 149.0231 ) );
771  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 223, 153.9805, 84.3535, 148.5013 ) );
772  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 224, 154.4855, 84.6450, 147.9758 ) );
773  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 225, 154.9905, 84.9366, 147.4468 ) );
774  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 226, 155.4955, 85.2282, 146.9141 ) );
775  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 227, 156.0005, 85.5197, 146.3778 ) );
776  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 228, 156.5055, 85.8113, 145.8377 ) );
777  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 229, 157.0105, 86.1028, 145.2939 ) );
778  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 230, 157.5155, 86.3944, 144.7463 ) );
779  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 231, 158.0205, 86.6860, 144.1948 ) );
780  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 232, 158.5255, 86.9775, 143.6394 ) );
781  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 233, 159.0305, 87.2691, 143.0801 ) );
782  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 234, 159.5355, 87.5607, 142.5168 ) );
783  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 235, 160.0405, 87.8522, 141.9495 ) );
784  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 236, 160.5455, 88.1438, 141.3781 ) );
785  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 237, 161.0505, 88.4353, 140.8025 ) );
786  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 238, 161.5555, 88.7269, 140.2228 ) );
787  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 239, 162.0605, 89.1230, 139.6389 ) );
788  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 240, 162.5655, 89.9977, 139.0506 ) );
789  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 241, 163.0705, 90.8724, 138.4581 ) );
790  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 242, 163.5755, 91.7471, 137.8611 ) );
791  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 243, 164.0805, 92.6218, 137.2596 ) );
792  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 244, 164.5855, 93.4964, 136.6537 ) );
793  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 245, 165.0905, 94.3711, 136.0432 ) );
794  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 246, 165.5955, 95.2458, 135.4280 ) );
795  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 247, 166.1005, 96.1205, 134.8082 ) );
796  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 248, 166.6055, 96.9952, 134.1836 ) );
797  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 249, 167.1105, 97.8699, 133.5541 ) );
798  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 250, 167.6155, 98.7446, 132.9198 ) );
799  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 251, 168.1205, 99.6192, 132.2804 ) );
800  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 252, 168.6255, 100.2036, 131.6361 ) );
801  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 253, 169.1305, 100.8238, 130.9866 ) );
802  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 254, 169.6355, 101.2431, 130.3319 ) );
803  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 255, 170.1405, 101.5078, 129.6720 ) );
804  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 256, 170.6455, 101.6095, 129.0067 ) );
805  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 257, 171.1505, 101.4636, 128.3360 ) );
806  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 258, 171.6555, 94.5581, 127.6597 ) );
807  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 259, 172.1605, 94.8497, 126.9779 ) );
808  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 260, 172.6655, 95.1413, 126.2903 ) );
809  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 261, 173.1705, 95.4328, 125.5970 ) );
810  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 262, 173.6755, 95.7244, 124.8977 ) );
811  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 263, 174.1805, 96.0159, 124.1925 ) );
812  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 264, 174.6855, 96.3075, 123.4812 ) );
813  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 265, 175.1905, 96.5991, 122.7636 ) );
814  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 266, 175.6955, 96.8906, 122.0398 ) );
815  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 267, 176.2005, 97.1822, 121.3095 ) );
816  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 268, 176.7055, 97.4738, 120.5727 ) );
817  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 269, 177.2105, 97.7653, 119.8293 ) );
818  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 270, 177.7155, 98.0569, 119.0790 ) );
819  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 271, 178.2205, 98.3484, 118.3219 ) );
820  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 272, 178.7255, 98.6400, 117.5577 ) );
821  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 273, 179.2305, 98.9316, 116.7863 ) );
822  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 274, 179.7355, 99.2231, 116.0076 ) );
823  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 275, 180.2405, 99.5147, 115.2215 ) );
824  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 276, 180.7455, 99.8062, 114.4276 ) );
825  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 277, 181.2505, 100.0978, 113.6260 ) );
826  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 278, 181.7555, 100.3894, 112.8165 ) );
827  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 279, 182.2605, 100.6809, 111.9988 ) );
828  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 280, 182.7655, 100.9725, 111.1728 ) );
829  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 281, 183.2705, 101.2641, 110.3383 ) );
830  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 282, 183.7755, 101.5556, 109.4951 ) );
831  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 283, 184.2805, 101.8472, 108.6431 ) );
832  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 284, 184.7855, 102.1388, 107.7819 ) );
833  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 285, 185.2905, 102.4303, 106.9114 ) );
834  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 286, 185.7955, 102.7219, 106.0314 ) );
835  stripDataSetPtr->push_back( StEEmcStripEndPointData_t( 287, 186.3005, 103.0134, 105.1415 ) );
836 
837  std::sort( stripDataSetPtr->begin(), stripDataSetPtr->end() );
838  };
839 };
840 
841 ClassImp( StEEmcPointMap_t );
842 
843 /*
844  * $Id: StEEmcPointMap.cxx,v 1.1 2012/08/29 15:44:17 sgliske Exp $
845  * $Log: StEEmcPointMap.cxx,v $
846  * Revision 1.1 2012/08/29 15:44:17 sgliske
847  * Moved from offline/users/sgliske/StRoot/StEEmcPool
848  *
849  *
850  */
TVector3 getTowerCenter(const UInt_t sec, const UInt_t sub, const UInt_t etabin) const
static EEmcGeomSimple & Instance()
returns a reference to a static instance of EEmcGeomSimple
Definition: Stypes.h:40
Definition: Stypes.h:44