21 m_minXYdist2Z( 0.03 ),
48 const std::vector<Trk::PositionAndWeight> & VectorOfPoints)
const
58 const std::vector<Trk::PositionAndWeight> & VectorOfPoints,
59 std::unique_ptr<IMode3dInfo>&
info)
const
62 auto myinfo_p = std::make_unique<Mode3dFromFsmw1dInfo>();
64 info = std::move (myinfo_p);
65 return getMode (myinfo, vx, vy, VectorOfPoints);
73 const std::vector<Amg::Vector3D> & VectorOfPoints)
const
77 std::vector<Amg::Vector3D>::const_iterator
begin = VectorOfPoints.begin();
78 std::vector<Amg::Vector3D>::const_iterator
end = VectorOfPoints.end();
80 std::vector<double> allx;
81 std::vector<double> ally;
82 std::vector<double> allz;
84 for (std::vector<Amg::Vector3D>::const_iterator
i =
begin;
i!=
end; ++
i) {
85 allx.push_back((*i).x());
86 ally.push_back((*i).y());
87 allz.push_back((*i).z());
103 const std::vector<Amg::Vector3D> & VectorOfPoints,
104 std::unique_ptr<IMode3dInfo>& )
const
106 return getMode (vx, vy, VectorOfPoints);
114 const std::vector<Trk::PositionAndWeight> & VectorOfPoints)
const
120 std::vector<Trk::PositionAndWeight>::const_iterator
begin = VectorOfPoints.begin();
121 std::vector<Trk::PositionAndWeight>::const_iterator
end = VectorOfPoints.end();
125 if ( VectorOfPoints.empty() )
return tmpseed ;
126 if ( VectorOfPoints.size() == 1 )
130 std::vector< Amg::Vector3D > tmpphi;
131 std::vector< Amg::Vector3D > tmpradi;
132 std::vector< Amg::Vector3D > tmpz;
136 std::vector<Trk::PositionAndWeight> vectorOfPoints ;
138 for (std::vector<PositionAndWeight>::const_iterator
i =
begin;
i!=
end; ++
i) {
139 double wght =
i->second ;
140 double px =
i->first.x() ;
if (
px == 0 )
px += 0.000001 ;
141 double py =
i->first.y() ;
142 double phi = atan2 (
py,
px ) ;
146 tmpphi.emplace_back(
phi, wght, 1.0*
idx ) ;
147 tmpradi.emplace_back(
r, wght, 1.0*
idx ) ;
148 tmpz.emplace_back(
i->first.z(), wght, 1.0*
idx ) ;
150 info.pushPoint (
phi,
r,
i->first.z(), wght);
151 vectorOfPoints.push_back( *
i ) ;
161 std::vector< std::pair< std::pair <double, std::pair<int,int> >,
double > > allphi;
162 std::vector< std::pair< std::pair <double, std::pair<int,int> >,
double > > allradi;
163 std::vector< std::pair< std::pair <double, std::pair<int,int> >,
double > > allz;
166 for (
unsigned i = 0 ;
i < tmpphi.size() ;
i++ )
168 std::pair<int,int> xidphi( (
int)( tmpphi[
i].
z()),
idx ) ;
169 std::pair<int,int> xidradi( (
int)( tmpradi[
i].
z() ),
idx ) ;
170 std::pair<int,int> xidz( (
int)( tmpz[
i].
z() ),
idx ) ;
172 std::pair <double, std::pair<int,int> >
phi( tmpphi[
i].
x(), xidphi ) ;
173 std::pair <double, std::pair<int,int> > radi( tmpradi[
i].
x(), xidradi ) ;
174 std::pair <double, std::pair<int,int> > zz( tmpz[
i].
x(), xidz ) ;
176 std::pair< std::pair <double, std::pair<int,int> >,
double > wghtphi(
phi, tmpphi[
i].
y() ) ;
177 allphi.push_back( wghtphi ) ;
178 std::pair< std::pair <double, std::pair<int,int> >,
double > wghtradi( radi, tmpradi[
i].
y() ) ;
179 allradi.push_back( wghtradi ) ;
180 std::pair< std::pair <double, std::pair<int,int> >,
double > wghtz( zz, tmpz[
i].
y() ) ;
181 allz.push_back( wghtz ) ;
190 bool phibroader = false ;
206 bool radiusbroader = false ;
210 ATH_MSG_DEBUG(
" One more searching for a mode in radius !" );
212 radiusbroader = true ;
219 ATH_MSG_DEBUG(
" " << radisz <<
" modes found along radius " );
237 double tmpsdX = 0., tmpsdY = 0., tmpsdXY = 0. ;
243 if ( olphiradi.empty() )
245 if ( phisz > 1 && radisz > 1 )
251 ATH_MSG_DEBUG(
" One more searching for a mode in phi or/and radius !" );
255 ATH_MSG_DEBUG(
" " <<
" more modes found : " << phisz <<
" "<< radisz );
258 if ( olphiradi.empty() )
261 if ( phibroader && radiusbroader )
266 if ( olphiZ.empty() && olradiZ.empty() )
268 else if ( !olphiZ.empty() && olradiZ.empty() )
270 else if ( olphiZ.empty() && !olradiZ.empty() )
275 if ( ol_phi_radi_Z.empty() )
282 tmpsdX = tmpseed.x() - vx ;
283 tmpsdY = tmpseed.y() - vy ;
284 tmpsdXY = sqrt( tmpsdX*tmpsdX + tmpsdY*tmpsdY ) ;
294 ATH_MSG_DEBUG(
" One more searching for WIDER mode in phi or/and radius !" );
301 if ( ! radiusbroader )
309 if ( olphiradi.empty() )
314 if ( olphiZ.empty() && olradiZ.empty() )
316 else if ( !olphiZ.empty() && olradiZ.empty() )
318 else if ( olphiZ.empty() && !olradiZ.empty() )
323 if ( ol_phi_radi_Z.empty() )
330 tmpsdX = tmpseed.x() - vx ;
331 tmpsdY = tmpseed.y() - vy ;
332 tmpsdXY = sqrt( tmpsdX*tmpsdX + tmpsdY*tmpsdY ) ;
342 ATH_MSG_DEBUG(
" " << olphiradi.size() <<
" modes found with phi-radius correlated " );
345 if ( ol_phi_radi_Z.empty() )
349 ATH_MSG_DEBUG(
" One more searching for a mode in Z after CheckCorrelation !" );
353 if ( ol_phi_radi_Z.empty() )
358 if ( ol_phi_radi_Z.empty() )
362 tmpsdX = tmpseed.x() - vx ;
363 tmpsdY = tmpseed.y() - vy ;
364 tmpsdXY = sqrt( tmpsdX*tmpsdX + tmpsdY*tmpsdY ) ;
378 <<
" modes found with phi-radius-Z fully correlated " );
384 tmpsdX = tmpseed.x() - vx ;
385 tmpsdY = tmpseed.y() - vy ;
386 tmpsdXY = sqrt( tmpsdX*tmpsdX + tmpsdY*tmpsdY ) ;
396 const std::vector< IndexedWeighted > & position,
397 int expectMax )
const
401 int tot = position.size() ;
404 unsigned int M = idxs->size() ;
409 ATH_MSG_WARNING(
" No necessary to search so many ( > 3 ) modes, skip " );
413 std::vector< std::vector< IndexedWeighted > > position_OR ;
420 for (
unsigned int splt = 0 ; splt < M + 1 ; splt ++ )
423 std::vector< IndexedWeighted > tmpor ;
425 std::vector< std::pair< int, int> > idxplt =
426 ( splt == M ? (*idxs)[splt-1] : (*idxs)[splt] ) ;
428 int sz = idxplt.size() - 1 ;
430 std::vector<IndexedWeighted>::const_iterator origin = position.begin() ;
431 std::vector<IndexedWeighted>::const_iterator
begin = origin ;
432 std::vector<IndexedWeighted>::const_iterator
end = position.end() ;
436 offset = idxplt[0].second - 1 ;
440 }
else if ( splt == M )
448 std::vector< std::pair< int, int> > idxprevious = (*idxs)[splt-1] ;
453 offset = idxplt[0].second ;
454 if ( offset < 2 || offset >=
tot - 2 ) continue ;
461 ATH_MSG_DEBUG(
" new searching domain is defined in splitted region " << splt );
462 tmpor.insert( tmpor.end(),
begin,
end ) ;
464 position_OR.push_back( tmpor ) ;
467 position_OR.push_back( position ) ;
469 for (
unsigned int splt = 0 ; splt < position_OR.size() ; splt ++ )
471 ATH_MSG_DEBUG(
" In split " << splt <<
" after overlap removal " );
472 std::vector< IndexedWeighted > spltposi = position_OR[splt] ;
473 int spltgot = 0, lastgot = 0 ;
476 std::vector< std::pair< int,int> > idx_tmp =
getFsmw1dMode( spltposi, expectMax ) ;
477 if ( !idx_tmp.empty() )
479 idxs->push_back( idx_tmp ) ;
483 if ( spltgot == lastgot ) break ;
485 if ( lastgot > 0 ) break ;
486 }
while ( spltgot < expectMax ) ;
498 const std::vector<Trk::PositionAndWeight>& vectorOfPoints,
508 for (
unsigned int i = 0 ;
i <
aa.size() ;
i++ )
511 std::vector<std::pair< int, int> >
ax =
aa[
i] ;
515 std::vector<int > axidx ;
516 for (
unsigned int ia = 0 ; ia <
ax.size() ; ia ++ )
518 axidx.push_back(
ax[ia].
first ) ;
522 std::vector< std::pair<int,int> >
supp ;
523 std::vector< std::pair< int, int> >
bx ;
524 for (
unsigned int j = 0 ; j < bb.size() ; j++ )
531 for (
unsigned int k = 0 ;
k <
bx.size() ;
k ++ )
535 if (
it != axidx.end() )
546 for (
unsigned int k = 0 ;
k <
bx.size() ;
k ++ )
550 if (
it == axidx.end() )
563 corre.push_back(
supp ) ;
568 #ifdef Mode3dFromFsmw1d_DEBUG
569 if ( corre.size() == 0 )
return corre ;
571 if ( !corre.empty() )
return corre ;
574 ATH_MSG_DEBUG(
" Korrelation failed by indices match, now try 3D distance ... " );
576 double mindistcut = 999999999.9 , mindist = 999999999.9 ;
581 double aX = 0., aY = 0., aZ = 0. ;
582 std::vector<int > axidx ;
585 int idxA = ia.first ;
586 axidx.push_back( idxA ) ;
588 std::vector<Trk::PositionAndWeight>::const_iterator Aposi = vectorOfPoints.begin() + idxA ;
590 ATH_MSG_DEBUG(
" Mode idx accepted with full phi-radius correlation : " << idxA );
592 double wght = Aposi->second ;
593 aX += Aposi->first.x()*wght ;
594 aY += Aposi->first.y()*wght ;
595 aZ += Aposi->first.z()*wght ;
607 std::vector< std::pair<int,int> >
supp ;
608 double bX = 0., bY = 0., bZ = 0., Bwght = 0. ;
609 for (
const auto&
bx : bb)
611 for (
const auto &
ib :
bx)
613 int idxB =
ib.first ;
614 std::vector<Trk::PositionAndWeight>::const_iterator Bposi = vectorOfPoints.begin() + idxB ;
616 double wght = Bposi->second ;
618 bX = Bposi->first.x()*wght ;
619 bY = Bposi->first.y()*wght ;
620 bZ = Bposi->first.z()*wght ;
635 double dist = ( bX*bX + bY*bY + bZ*bZ )/( Awght + Bwght ) ;
637 if ( dist < mindist )
640 mindistcut = sqrt( dist*( Awght + Bwght ) ) ;
642 ATH_MSG_DEBUG(
" Distance between modes for Korrelation : " << mindistcut );
646 #ifdef Mode3dFromFsmw1d_DEBUG
647 info.setCorre (zin, mindistcut);
653 for (
const auto &
m :
bx)
656 if (
it == axidx.end() )
supp.emplace_back(
m.first,
m.second ) ;
659 corre.push_back(
supp ) ;
668 std::vector< std::pair< int, int > >
670 int minModeDiff)
const
674 std::vector< std::pair< int, int > >
idx(0) ;
677 std::vector<IndexedWeighted>::const_iterator origin = posidxwght.begin();
678 std::vector<IndexedWeighted>::const_iterator
begin= origin ;
679 std::vector<IndexedWeighted>::const_iterator
end=posidxwght.end();
681 double overallweight(0.);
682 std::vector<IndexedWeighted>::const_iterator best_begin=
begin;
683 std::vector<IndexedWeighted>::const_iterator best_end=
end;
685 double last_value(1e100);
687 bool isthelast=
false;
689 if ( posidxwght.size() == 1 )
691 std::vector<IndexedWeighted>::const_iterator mid = posidxwght.begin();
692 idx.emplace_back( mid->first.second.first, mid->first.second.second ) ;
696 while ( ! isthelast )
703 if (
step < minModeDiff ) break ;
705 std::vector<IndexedWeighted>::const_iterator j_end=
begin+
step-1;
706 for (std::vector<IndexedWeighted>::const_iterator j=
begin;j!=j_end;++j)
707 overallweight+=j->second;
716 std::vector<IndexedWeighted>::const_iterator i_last =
begin+
step;
717 for (std::vector<IndexedWeighted>::const_iterator
i=
begin;
i!=(
end-
step);++
i, ++i_last)
722 overallweight+= i_last->second;
724 double new_value = ( ( (
i+
step)->
first ).first - (
i->first ).
first )/overallweight;
726 <<
step + 1 <<
" at best "<< best_end - best_begin );
728 if ( new_value < last_value )
730 last_value= new_value ;
735 overallweight -=
i->second;
747 if ( best_end - best_begin <= minModeDiff )
757 std::vector<IndexedWeighted>::const_iterator mid = posidxwght.begin();
760 if (
m_broaden && ( best_end - best_begin ) <= 2 && best_begin != mid )
762 mid = best_begin - 1 ;
763 idx.emplace_back( mid->first.second.first, mid->first.second.second ) ;
764 ATH_MSG_DEBUG(
" found 1d mode " << ( mid->first ).first <<
" "
765 << ( mid->first ).second.first <<
" "<< mid->first.second.second );
769 for ( mid = best_begin ; mid != best_end ; ++mid )
772 idx.emplace_back( mid->first.second.first, mid->first.second.second ) ;
773 ATH_MSG_DEBUG(
" found 1d mode " << ( mid->first ).first <<
" "
774 << ( mid->first ).second.first <<
" "<< mid->first.second.second );
778 if (
m_broaden && ( best_end - best_begin ) <= 2 )
780 mid = posidxwght.end();
781 if ( best_end != mid )
784 idx.emplace_back( mid->first.second.first, mid->first.second.second ) ;
785 ATH_MSG_DEBUG(
" found 1d mode " << ( mid->first ).first <<
" "
786 << ( mid->first ).second.first <<
" "<< mid->first.second.second );
797 const std::vector<Trk::PositionAndWeight>& vectorOfPoints,
799 const double vy)
const
804 unsigned int sizeVP = vectorOfPoints.size() ;
808 vectorOfPoints.begin()->first.y(),
809 vectorOfPoints.begin()->first.z() ) ;
811 std::vector<Trk::PositionAndWeight> VP = vectorOfPoints ;
816 std::vector<Trk::PositionAndWeight>::const_iterator pwitr = VP.begin() ;
818 for ( ; pwitr != VP.end() ; ++pwitr, ++
offset)
820 double X = ( pwitr->first ).
x() - vx ;
821 double Y = ( pwitr->first ).
y() - vy ;
822 double XY = sqrt(
X*
X +
Y*
Y ) ;
829 pwitr = VP.begin() +
offset ;
831 for (
unsigned int mpw = 0 ; mpw < vectorOfPoints.size() ; mpw ++ )
834 if ( (
tmp.first ).x() == ( pwitr->first ).x()
835 && (
tmp.first ).y() == ( pwitr->first ).y()
836 && (
tmp.first ).z() == ( pwitr->first ).z()
839 info.pushIndex ( mpw ) ;
844 double wght = pwitr->second ;
845 double inv_wght = 1. / wght ;
846 double seedX = ( pwitr->first ).
x() ;
847 double seedY = ( pwitr->first ).
y() ;
848 double seedZ = ( pwitr->first ).
z() ;
851 for (std::vector<PositionAndWeight>::const_iterator
i = pwitr + 1 ;
i!=VP.end(); ++
i )
853 double sdX = (
i->first ).
x() ;
854 double sdY = (
i->first ).
y() ;
855 double sdZ = (
i->first ).
z() ;
861 double dist = sqrt( sdX*sdX + sdY*sdY + sdZ*sdZ ) ;
869 seedX = seedX*wght + sdX*wt ;
870 seedY = seedY*wght + sdY*wt ;
871 seedZ = seedZ*wght + sdZ*wt ;
890 const std::vector<Trk::PositionAndWeight>& vectorOfPoints,
893 double seedX = 0., seedY = 0., seedZ = 0. ;
894 double maxWght = -99.9 ;
895 for (
const auto& modes : phiradiZol)
897 double totwght = 0. ;
898 double seedX0 = 0., seedY0 = 0., seedZ0 = 0. ;
899 for (
const auto &
mode : modes)
903 ATH_MSG_DEBUG(
" Mode idx accepted with full phi-radius-Z correlation : " <<
idx );
905 std::vector<Trk::PositionAndWeight>::const_iterator posi = vectorOfPoints.begin() +
idx ;
906 double wght = posi->second ;
907 seedX0 += posi->first.x()*wght ;
908 seedY0 += posi->first.y()*wght ;
909 seedZ0 += posi->first.z()*wght ;
914 if ( totwght > maxWght )
917 seedX = seedX0/totwght ;
918 seedY = seedY0/totwght ;
919 seedZ = seedZ0/totwght ;
921 info.pushIndices (modes);
932 const std::vector<Trk::PositionAndWeight>& vectorOfPoints,
936 double mindistcut = 999999999.9 , mindist = 999999999.9 ;
937 double seedX = 0., seedY = 0., seedZ = 0. ;
939 for (
const auto& xymodes : phiradi)
942 double xyX = 0., xyY = 0., xyZ = 0. ;
943 for (
const auto & xymode : xymodes)
945 int idxXY = xymode.first ;
946 std::vector<Trk::PositionAndWeight>::const_iterator posi = vectorOfPoints.begin() + idxXY ;
948 ATH_MSG_DEBUG(
" Mode idx accepted with full phi-radius correlation : " << idxXY );
950 double wght = posi->second ;
951 xyX += posi->first.x()*wght ;
952 xyY += posi->first.y()*wght ;
953 xyZ += posi->first.z()*wght ;
965 double zX = 0., zY = 0., zZ = 0., zwght = 0. ;
966 for (
const auto& zmodes : Z)
968 for (
const auto & zmode : zmodes)
970 int idxZ = zmode.first ;
971 std::vector<Trk::PositionAndWeight>::const_iterator zposi = vectorOfPoints.begin() + idxZ ;
973 double wghtZ = zposi->second ;
975 zX = zposi->first.x()*wghtZ ;
976 zY = zposi->first.y()*wghtZ ;
977 zZ = zposi->first.z()*wghtZ ;
993 double dist = ( zX*zX + zY*zY + zZ*zZ )/( xywght + zwght ) ;
995 if ( dist < mindist )
998 mindistcut = sqrt( dist*( xywght + zwght ) ) ;
1002 double totwght = xywght + zwght ;
1006 seedX = ( xyX*xywght + zX*zwght )/totwght ;
1007 seedY = ( xyY*xywght + zY*zwght )/totwght ;
1008 seedZ = ( xyZ*xywght + zZ*zwght )/totwght ;
1010 info.pushIndices (xymodes);
1011 info.pushIndices (zmodes);
1022 const std::vector<Trk::PositionAndWeight>& vectorOfPoints,
1027 double mindistcut = 999999999.9 , mindist = 999999999.9 ;
1028 double seedX = 0., seedY = 0., seedZ = 0. ;
1030 for (
const auto& pmodes :
phi)
1033 double pX = 0., pY = 0., pZ = 0. ;
1035 for (
const auto & pmode : pmodes)
1037 int idxp = pmode.first ;
1038 std::vector<Trk::PositionAndWeight>::const_iterator pposi = vectorOfPoints.begin() + idxp ;
1039 double xw = pposi->second ;
1040 pX += pposi->first.x()*xw ;
1041 pY += pposi->first.y()*xw ;
1042 pZ += pposi->first.z()*xw ;
1054 for (
const auto& rmodes : radi)
1057 double rX = 0., rY = 0., rZ = 0. ;
1059 for (
const auto & rmode : rmodes)
1061 int idxr = rmode.first ;
1062 std::vector<Trk::PositionAndWeight>::const_iterator rposi = vectorOfPoints.begin() + idxr ;
1063 double xw = rposi->second ;
1064 rX += rposi->first.x()*xw ;
1065 rY += rposi->first.y()*xw ;
1066 rZ += rposi->first.z()*xw ;
1078 double Dxy = ( ( pX - rX )*( pX - rX ) + ( pY - rY )*( pY - rY )
1079 + ( pZ - rZ )*( pZ - rZ ) )/( pwght + rwght ) ;
1081 for (
const auto& zmodes : Z)
1084 double zX = 0., zY = 0., zZ = 0. ;
1086 for (
const auto & zmode : zmodes)
1088 int idxz = zmode.first ;
1089 std::vector<Trk::PositionAndWeight>::const_iterator zposi = vectorOfPoints.begin() + idxz ;
1090 double xw = zposi->second ;
1091 zX += zposi->first.x()*xw ;
1092 zY += zposi->first.y()*xw ;
1093 zZ += zposi->first.z()*xw ;
1105 double distpz = ( pX - zX )*( pX - zX ) + ( pY - zY )*( pY - zY )
1106 + ( pZ - zZ )*( pZ - zZ ) ;
1107 double distrz = ( rX - zX )*( rX - zX ) + ( rY - zY )*( rY - zY )
1108 + ( rZ - zZ )*( rZ - zZ ) ;
1109 double dist = distpz/( pwght + zwght ) + distrz/( rwght + zwght ) + Dxy ;
1112 if ( dist < mindist )
1116 mindistcut = 0.3333*( sqrt( distpz ) + sqrt( distrz ) + sqrt( Dxy*( pwght + rwght ) ) ) ;
1120 double totwght = pwght + rwght + zwght ;
1121 seedX = ( pX*pwght + rX*rwght + zX*zwght )/totwght ;
1122 seedY = ( pY*pwght + rY*rwght + zY*zwght )/totwght ;
1123 seedX = ( pZ*pwght + rZ*rwght + zZ*zwght )/totwght ;
1125 info.pushIndices (pmodes);
1126 info.pushIndices (rmodes);
1127 info.pushIndices (zmodes);
1140 ( std::vector<float> &
phi,
1141 std::vector<float> & radi,
1142 std::vector<float> &
z,
1143 std::vector<float> & wght )
const
1145 std::vector<int> allidx ;
1148 for (
const std::pair<int, int >&
p :
tmp) {
1149 allidx.push_back(
p.first ) ;
1154 for (
const std::pair<int, int >&
p :
tmp) {
1155 if (
std::find( allidx.begin(), allidx.end(),
p.first ) == allidx.end()) {
1156 allidx.push_back(
p.first ) ;
1162 for (
const std::pair<int, int >&
p :
tmp) {
1163 if (
std::find( allidx.begin(), allidx.end(),
p.first ) == allidx.end()) {
1164 allidx.push_back(
p.first ) ;
1169 unsigned int min = allidx.size() ;
1175 for (
int idx : allidx) {
1186 const std::vector<int>&
1189 return m_UsedCrossingPointsIndices;
1195 (
double &cXY,
double &cZ )
const
1204 (std::vector<const Trk::TrackParameters*>& perigees ,
1205 const std::vector<const Trk::TrackParameters*> & perigeeList)
const
1208 std::vector<int> trklist(0) ;
1210 for (
int ndx : m_UsedCrossingPointsIndices) {
1211 std::pair<int,int> trk = m_trkidx.at( ndx ) ;
1213 if (
std::find( trklist.begin(), trklist.end(), trk.first ) == trklist.end() )
1214 trklist.push_back( trk.first ) ;
1215 if (
std::find( trklist.begin(), trklist.end(), trk.second ) == trklist.end() )
1216 trklist.push_back( trk.second ) ;
1219 std::sort( trklist.begin(), trklist.end() ) ;
1221 for (
int t : trklist)
1223 perigees.push_back( perigeeList[
t] ) ;
1226 return perigees.size() ;
1233 m_UsedCrossingPointsIndices.push_back(
idx ) ;
1239 (std::vector< std::pair <int, int> >&& trkidx)
1241 m_trkidx = std::move (trkidx);
1247 (
const std::vector< std::pair<int,int> >& modes)
1249 for (
const std::pair<int,int>&
p : modes) {
1250 m_UsedCrossingPointsIndices.push_back(
p.first ) ;
1257 (
float phi,
float r,
float z,
float w)
1259 m_phi_stk.push_back (
phi);
1260 m_radi_stk.push_back (
r);
1261 m_z_stk.push_back (
z);
1262 m_wght_stk.push_back (
w);