38 #include <phfield/PHFieldUtility.h>
40 #include <phgeom/PHGeomUtility.h>
50 #include <GenFit/EventDisplay.h>
51 #include <GenFit/MeasuredStateOnPlane.h>
52 #include <GenFit/RKTrackRep.h>
54 #include <phgenfit/SpacepointMeasurement.h>
56 #include <phgenfit/Fitter.h>
57 #include <phgenfit/Measurement.h>
58 #include <phgenfit/PlanarMeasurement.h>
59 #include <phgenfit/Track.h>
63 #include <TMatrixDSymfwd.h>
64 #include <TMatrixTSym.h>
65 #include <TMatrixTUtils.h>
68 #include <TVectorDfwd.h>
81 namespace genfit {
class AbsTrackRep; }
83 #define LogDebug(exp) std::cout << "DEBUG: " << __FILE__ << ": " << __LINE__ << ": " << exp
84 #define LogError(exp) std::cout << "ERROR: " << __FILE__ << ": " << __LINE__ << ": " << exp
85 #define LogWarning(exp) std::cout << "WARNING: " << __FILE__ << ": " << __LINE__ << ": " << exp
90 #define _USE_ALAN_TRACK_REFITTING_
102 ofstream fout_kalman_pull(
"kalman_pull.txt");
103 ofstream fout_chi2(
"chi2.txt");
108 unsigned int nlayers_maps,
109 unsigned int nlayers_intt,
110 unsigned int nlayers_tpc,
111 unsigned int nlayers_micromegas)
113 , _nlayers_maps(nlayers_maps)
114 , _nlayers_intt(nlayers_intt)
115 , _nlayers_tpc(nlayers_tpc)
116 , _nlayers_micromegas(nlayers_micromegas)
117 , _nlayers_all(_nlayers_maps + _nlayers_intt + _nlayers_tpc + _nlayers_micromegas)
118 , _firstlayer_maps(0)
119 , _firstlayer_intt(_firstlayer_maps + _nlayers_maps)
120 , _firstlayer_tpc(_firstlayer_intt + _nlayers_intt)
121 , _firstlayer_micromegas(_firstlayer_tpc + _nlayers_tpc)
148 cout <<
"Ana Mode, creating ntuples! " << endl;
151 _analyzing_ntuple =
new TNtuple(
"ana_nt",
"ana_nt",
"pt:kappa:d:phi:dzdl:z0:nhit:ml:rec:dt");
152 cout <<
"Done" << endl;
174 <<
": layer: " <<
layer
223 cout <<
"PHGenFitTrkProp::process_event -- entered" << endl;
240 std::vector<float>
v = { vertex->
get_x(), vertex->
get_y(), vertex->
get_z() };
267 std::cout <<
"=============== PHGenFitTrkProp::print_timers: ===============" << std::endl;
280 std::cout <<
"=======================================" << std::endl;
304 fout_kalman_pull.close();
310 cout <<
" cleaning up " << endl;
350 _bbc_vertexes = findNode::getClass<BbcVertexMap>(topNode,
"BbcVertexMap");
366 unsigned int n_clu = iter->second->get_cluster_keys().size();
368 unsigned int n_clu_used = 0;
370 const std::vector<TrkrDefs::cluskey>& clusterkeys = iter->second->get_cluster_keys();
383 <<
" used: " << n_clu_used
390 if (((
float) n_clu_used / n_clu) > 0.3)
393 cout <<
"Found duplicate track. n_clu: " << n_clu <<
" c_clu_used: " << n_clu_used << endl;
414 std::cout <<
"=========================" << std::endl;
415 std::cout <<
"PHGenFitTrkProp::KalmanTrkProp: Start: Event: " <<
_event << std::endl;
416 std::cout <<
"Total Raw Tracks: " <<
_track_map->
size() << std::endl;
417 std::cout <<
"=========================" << std::endl;
432 vector<genfit::Track*> evt_disp_copy;
439 cout <<
" found " <<
_track_map->
size() <<
" track seeds " << endl;
445 SvtxTrack* tracklet = phtrk_iter->second;
449 <<
": Processing seed itrack: " << phtrk_iter->first
450 <<
": nhits: " << tracklet-> size_cluster_keys()
471 bool is_splitting_track =
false;
478 cout <<
"FAIL SvtxTrackToGenFit " << phtrk_iter->first << endl;
491 <<
": propagating Genfit track: " << phtrk_iter->first << endl;
496 unsigned int ivert = 0;
497 gftrk_iter->second->set_vertex_id(ivert);
501 cout <<
PHWHERE <<
" Track vertex is screwed up, have to quit! #" << ivert <<
" v_size: " <<
_vertex.size() << endl;
505 std::vector<TrkrDefs::cluskey> clusterkeys = gftrk_iter->second->get_cluster_keys();
507 unsigned int init_layer = UINT_MAX;
508 unsigned int min_layer = UINT_MAX;
509 unsigned int max_layer = 0;
511 for (
auto iter = clusterkeys.begin();
512 iter != clusterkeys.end(); ++iter){
516 if(layer < min_layer) min_layer =
layer;
517 if(layer > max_layer) max_layer =
layer;
520 if (!is_splitting_track)
525 init_layer = min_layer;
532 init_layer = max_layer;
536 is_splitting_track =
true;
543 init_layer = min_layer;
549 init_layer = max_layer;
558 <<
": clusterkeys size: " << gftrk_iter->second->get_cluster_keys().size()
559 <<
": quality: " << gftrk_iter->first
575 <<
": track: " << i++
576 <<
": clusterkeys size: " << iter->second->get_cluster_keys().size()
577 <<
": quality: " << iter->first
591 <<
": clusterkeys size: " << iter->second->get_cluster_keys().size()
592 <<
": quality: " << iter->first
605 cout << __LINE__ << endl;
609 evt_disp_copy.push_back(
610 new genfit::Track(*gftrk_iter_best->second->getGenFitTrack()));
615 auto key = phtrk_iter->first;
628 std::cout <<
"=========================" << std::endl;
629 std::cout <<
"PHGenFitTrkProp::KalmanTrkProp: End: Event: " <<
_event << std::endl;
630 std::cout <<
"PHGenFitTrkProp::KalmanTrkProp: End: Event: " <<
_event << std::endl;
631 std::cout <<
"Total Final Tracks: " <<
_track_map->
size() << std::endl;
636 _fitter->getEventDisplay()->addEvent(evt_disp_copy);
640 evt_disp_copy.clear();
647 MapPHGenFitTrack::iterator gftrk_iter,
652 std::cout <<
"=========================" << std::endl;
653 std::cout << __LINE__ <<
": iPHGenFitTrack: " << phtrk_iter->first << std::endl;
654 std::cout << __LINE__ <<
": _track_map->size(): " <<
_track_map->
size() << std::endl;
655 std::cout <<
"Contains: " << gftrk_iter->second->get_cluster_keys().size() <<
" clusters." << std::endl;
656 std::cout <<
"=========================" << std::endl;
661 auto track_id = track->
get_id();
671 #ifdef _DO_FULL_FITTING_
673 if (
_fitter->processTrack(gftrk_iter->second.get(),
false) != 0)
685 track.
set_chisq(gftrk_iter->second->get_chi2());
686 track.
set_ndf(gftrk_iter->second->get_ndf());
690 std::unique_ptr<genfit::MeasuredStateOnPlane> gf_state_vertex_ca =
nullptr;
693 gf_state_vertex_ca.reset(gftrk_iter->second->extrapolateToPoint(vertex_position));
700 if (!gf_state_vertex_ca)
706 TVector3
mom = gf_state_vertex_ca->getMom();
707 TVector3
pos = gf_state_vertex_ca->getPos();
708 TMatrixDSym cov = gf_state_vertex_ca->get6DCov();
711 TVectorD state = gftrk_iter->second->getGenFitTrack()->getStateSeed();
712 TVector3
pos(state(0), state(1), state(2));
713 TVector3
mom(state(3), state(4), state(5));
714 TMatrixDSym cov = gftrk_iter->second->getGenFitTrack()->getCovSeed();
717 for(
int i=0; i<6; i++){
718 for(
int j=0; j<6; j++){
727 track->
set_x(pos.X());
728 track->
set_y(pos.Y());
729 track->
set_z(pos.Z());
733 if(cluster_key<=0)
continue;
734 if(
Verbosity() > 10) cout <<
" track id: " << phtrk_iter->first <<
" adding clusterkey " << cluster_key << endl;
745 Int_t n_micromegas = 0;
758 cout <<
PHWHERE <<
" Can not have more than 4 INTT layers, quit!" << endl;
778 <<
" clusters mvtx: " << n_maps <<
" intt: " << n_intt <<
" tpc: " << n_tpc <<
" micromegas: " << n_micromegas
780 cout <<
"px = " << track->
get_px() <<
" py = " << track->
get_py()
781 <<
" pz = " << track->
get_pz() << endl;
793 cerr <<
PHWHERE <<
" Input SvtxTrack is nullptr!" << endl;
804 TVector3 seed_mom(100, 0, 0);
805 TVector3 seed_pos(0, 0, 0);
806 TMatrixDSym seed_cov(6);
807 for (
int i = 0; i < 6; i++)
809 for (
int j = 0; j < 6; j++)
811 seed_cov[i][j] = 100.;
816 std::map<float, TrkrDefs::cluskey> m_r_cluster_id;
823 float r = sqrt(x*x + y*y);
824 m_r_cluster_id.insert(std::pair<float, TrkrDefs::cluskey>(r, cluster_key));
826 if(
Verbosity() >= 2) cout <<
" Layer " << layer_out <<
" cluster " << cluster_key <<
" radius " << r << endl;
830 std::vector<PHGenFit::Measurement*> measurements;
831 for (
auto iter = m_r_cluster_id.begin();
832 iter != m_r_cluster_id.end();
847 seed_mom.SetPhi(
pos.Phi());
848 seed_mom.SetTheta(
pos.Theta());
861 double ladder_location[3] = {0.0, 0.0, 0.0};
866 0, chip_index, ladder_location);
870 n.SetXYZ(ladder_location[0], ladder_location[1], 0);
877 double hit_location[3] = {0.0, 0.0, 0.0};
883 n.SetXYZ(hit_location[0], hit_location[1], 0);
891 cout <<
"Add meas layer " << layer <<
" cluskey " << cluster_key
893 <<
" pos.X " <<
pos.X() <<
" pos.Y " <<
pos.Y() <<
" pos.Z " <<
pos.Z()
909 measurements.push_back(meas);
928 track->addMeasurements(measurements);
930 cout <<
"#trk: " <<
_ntrack <<
" ReFit nhits: " << measurements.size() << endl;
936 if (
_fitter->processTrack(track.get(),
false) != 0)
940 cout <<
"#trk: " <<
_ntrack <<
"Track fitting failed (ReFit) nhits: " << measurements.size() << endl;
962 if(
Verbosity() > 10) cout <<
PHWHERE <<
"Converting SvtxTrack to PHGenFit track: track ID " << svtxtrack->
get_id()
963 <<
" track z " << svtxtrack->
get_z()
969 std::vector<PHGenFit::Measurement*> measurements;
972 TVector3 posvtx(0.0, 0.0,0.0);
973 TVector3 resvtx(0.015, 0.015,30.0);
976 measurements.push_back(beam);
981 std::map<float, TrkrDefs::cluskey> m_r_clusterID;
991 m_r_clusterID.insert(std::pair<float, TrkrDefs::cluskey>(r, clusterkey));
993 cout <<
PHWHERE <<
" inserted r " << r <<
" clusterkey " << clusterkey
1019 for (
auto iter = m_r_clusterID.begin();
1020 iter != m_r_clusterID.end();
1030 last_cluster_key = cluster_key;
1033 measurements.push_back(meas);
1039 const float blowup_factor = 100.;
1040 TMatrixDSym seed_cov(6);
1045 seed_mom.SetXYZ(100,0,0);
1046 seed_mom.SetPhi(
pos.Phi());
1047 seed_mom.SetTheta(
pos.Theta());
1049 for (
int i = 0; i < 6; i++){
1050 for (
int j = 0; j < 6; j++){
1051 seed_cov[i][j] = 100.;
1055 seed_pos.SetXYZ(svtxtrack->
get_x(),svtxtrack->
get_y(),svtxtrack->
get_z());
1058 for (
int i = 0; i < 6; i++){
1059 for (
int j = 0; j < 6; j++){
1060 seed_cov[i][j] = blowup_factor * svtxtrack->
get_error(i, j);
1066 std::shared_ptr<PHGenFit::Track>
track(
1070 track->addMeasurements(measurements);
1072 cout <<
"#trk: " <<
_ntrack <<
" ToPHGen size:" << measurements.size() <<endl;
1074 if (
_fitter->processTrack(track.get(),
false) != 0)
1077 cout <<
"#trk: " <<
_ntrack <<
" Seed fitting failed (ToPHGen) size:" << measurements.size() <<endl;
1082 int nhits = track->get_cluster_keys().size();
1083 float chi2 = track->get_chi2();
1084 float ndf = track->get_ndf();
1086 if (nhits > 0 and chi2 > 0 and ndf > 0)
1089 MapPHGenFitTrack::value_type(
1090 TrackQuality(nhits, chi2, ndf, 0, nhits, 0, 0), track));
1097 const unsigned int ivert,
1098 MapPHGenFitTrack::iterator& track_iter,
1099 unsigned int init_layer,
unsigned int end_layer,
1100 const bool use_fitted_state_once)
1105 <<
" TrackPropPatRec"
1106 <<
" : init_layer: " << init_layer
1107 <<
" : end_layer: " << end_layer
1108 <<
" : use_fitted_state_once: " << use_fitted_state_once
1112 std::shared_ptr<PHGenFit::Track>&
track = track_iter->second;
1113 if(
Verbosity() > 10) cout << endl <<
PHWHERE <<
" Entering TrackPropPatRec for track with vertex ID " << ivert << endl;
1116 cout <<
PHWHERE <<
" WARNING: vertex ID out of range, something wrong, quit! " << endl;
1120 int direction = end_layer >= init_layer ? 1 : -1;
1121 assert(direction == 1 or direction == -1);
1123 int first_extrapolate_base_TP_id = -1;
1125 bool use_fitted_state = use_fitted_state_once;
1128 for(
int i = 0;i<
_nlayers_all;i++) layer_occupied[i] = 0;
1135 std::vector<TrkrDefs::cluskey> clusterkeys = track->get_cluster_keys();
1137 for (
unsigned int i = 0; i < clusterkeys.size(); ++i)
1139 if(clusterkeys[i]==0)
continue;
1141 layer_occupied[
layer] = 1;
1142 if(layer == init_layer)
1144 first_extrapolate_base_TP_id = i;
1150 if (first_extrapolate_base_TP_id < 0)
1153 LogError(
"first_extrapolate_base_TP_id < 0");
1157 int extrapolate_base_TP_id = first_extrapolate_base_TP_id;
1159 unsigned int consecutive_missing_layer = 0;
1164 for (
unsigned int layer = init_layer + direction;
1165 layer != end_layer + direction;
1169 if (
layer >= (
unsigned int) _nlayers_all)
break;
1170 if (layer_occupied[
layer])
continue;
1187 bool layer_updated =
false;
1193 std::cout <<
"=========================" << std::endl;
1194 std::cout << __LINE__ <<
": Event: " <<
_event <<
": _PHGenFitTracks.size(): " <<
_PHGenFitTracks.size() <<
": layer: " << layer << std::endl;
1195 std::cout <<
"=========================" << std::endl;
1200 unsigned int tempIdx = extrapolate_base_TP_id >= 0 ? extrapolate_base_TP_id : extrapolate_base_TP_id + track->get_cluster_keys().size();
1203 <<
" tempIdx: " << tempIdx
1206 if (tempIdx < track->get_cluster_keys().size())
1208 TrkrDefs::cluskey extrapolate_base_cluster_id = track->get_cluster_keys()[tempIdx];
1214 <<
": Target layer: { " << layer
1216 <<
"} : From layer: { " << from_layer
1217 <<
", " << sqrt(extrapolate_base_cluster->
getX() * extrapolate_base_cluster->
getX() + extrapolate_base_cluster->
getY() * extrapolate_base_cluster->
getY())
1218 <<
"} : ID: " << extrapolate_base_cluster_id
1242 std::unique_ptr<genfit::MeasuredStateOnPlane> state =
nullptr;
1245 state.reset(track->extrapolateToCylinder(layer_r, TVector3(0, 0, 0),
1246 TVector3(0, 0, 1), extrapolate_base_TP_id, direction));
1254 LogWarning(
"Can not extrapolate to Cylinder!") << std::endl;
1263 LogWarning(
"Can not extrapolate to Cylinder!") << std::endl;
1274 TVector3
pos = state->getPos();
1281 float phi_center = pos.Phi();
1282 float theta_center = pos.Theta();
1284 #ifdef _USE_CONSTANT_SEARCH_WIN_
1286 float phi_window = 25
e-4;
1287 float theta_window = 25
e-4;
1289 if (layer >= 3 and layer <= 6)
1291 phi_window = 300
e-4;
1297 phi_window = 3000
e-4;
1298 theta_window = 3000
e-4;
1301 TMatrixDSym cov = state->get6DCov();
1303 float phi_window =
_search_wins_phi[
layer] * sqrt(cov[0][0] + cov[1][1] + cov[0][1] + cov[1][0]) / pos.Perp();
1339 cout << __LINE__ <<
": ";
1340 printf(
"layer: %u: r: %f: phi: %f +- %f; theta: %f +- %f\n",
1342 phi_center, phi_window,
1343 theta_center, theta_window);
1353 std::vector<TrkrDefs::cluskey> new_cluster_keys =
SearchHitsNearBy(ivert, layer,
1354 theta_center, phi_center, theta_window, phi_window);
1358 cout << __LINE__ <<
": new_cluster_keys size: " << new_cluster_keys.size() << std::endl;
1361 std::vector<PHGenFit::Measurement*> measurements;
1374 measurements.push_back(meas);
1376 std::map<double, shared_ptr<PHGenFit::Track> > incr_chi2s_new_tracks;
1379 cout << __LINE__ <<
": measurements.size(): " << measurements.size() << endl;
1383 track->updateOneMeasurementKalman(measurements, incr_chi2s_new_tracks, extrapolate_base_TP_id, direction, blowup_factor, use_fitted_state);
1384 use_fitted_state =
false;
1389 cout << __LINE__ <<
": incr_chi2s_new_tracks.size(): " << incr_chi2s_new_tracks.size() << endl;
1395 if (incr_chi2s_new_tracks.size() > 0)
1397 auto iter = incr_chi2s_new_tracks.begin();
1404 <<
": iPHGenFitTrack: " << iPHGenFitTrack << endl
1405 <<
": First accepted IncrChi2: " << iter->first << endl
1406 <<
"; before update: " << track->get_cluster_keys().back()
1415 track_iter->first.nhits = tq.
nhits + 1;
1416 track_iter->first.chi2 = tq.
chi2 + iter->first;
1417 track_iter->first.ndf = tq.
ndf + 2;
1423 track_iter->second = std::shared_ptr<PHGenFit::Track>(iter->second);
1425 consecutive_missing_layer = 0;
1426 layer_updated =
true;
1427 extrapolate_base_TP_id = -1;
1431 <<
": after update: " << track->get_cluster_keys().back()
1436 << iPHGenFitTrack <<
"\t"
1445 if (incr_chi2s_new_tracks.size() > 1 and
1448 for (
auto iter = (++incr_chi2s_new_tracks.begin());
1449 iter != incr_chi2s_new_tracks.end(); ++iter)
1455 std::cout << __LINE__ <<
": "
1456 <<
"Track Spliting with "
1457 <<
"IncrChi2: " << iter->first << std::endl;
1465 iter->second->set_vertex_id(ivert);
1467 MapPHGenFitTrack::value_type(
1470 tq.
chi2 + iter->first,
1480 std::cout << __LINE__ <<
": "
1482 std::cout << __LINE__ <<
": " << track_iter->second->get_cluster_keys().back() << std::endl;
1487 cout<<__LINE__<<
": updateOneMeasurementKalman:"<<endl;
1488 std::cout<<
"iPHGenFitTrack: "<<iPHGenFitTrack
1489 <<
", layer: "<<layer
1490 <<
", #meas: "<<measurements.size()
1491 <<
", #tracks: "<<incr_chi2s_new_tracks.size()
1496 incr_chi2s_new_tracks.begin();
1497 iter != incr_chi2s_new_tracks.end(); iter++)
1499 std::cout << __LINE__ <<
": IncrChi2: " << iter->first << std::endl;
1520 ++consecutive_missing_layer;
1526 <<
": cluster keys size: " << track->get_cluster_keys().size()
1538 if (!cluster)
return nullptr;
1553 double ladder_location[3] = {0.0, 0.0, 0.0};
1557 0, chip_index, ladder_location);
1559 n.SetXYZ(ladder_location[0], ladder_location[1], 0);
1560 n.RotateZ(geom->get_stave_phi_tilt());
1565 double hit_location[3] = {0.0, 0.0, 0.0};
1569 n.SetXYZ(hit_location[0], hit_location[1], 0);
1570 n.RotateZ(geom->get_strip_phi_tilt());
1585 <<
": layer: " << layer_out
1586 <<
": pos: {" <<
pos.X() <<
", " <<
pos.Y() <<
", " <<
pos.Z() <<
"}"
1587 <<
": n: {" <<
n.X() <<
", " <<
n.Y() <<
", " <<
n.Z() <<
"}"
1589 <<
": z error: " << cluster->
getZError()
1599 std::multimap<unsigned int, TrkrDefs::cluskey> this_layer_thetaID_phiID_clusterID;
1602 for (
auto hitsetitr = hitsetrange.first;
1603 hitsetitr != hitsetrange.second;
1606 for(
auto clusIter = range.first; clusIter != range.second; ++clusIter ){
1619 float phi = atan2(y, x);
1620 float r = sqrt(x * x + y * y);
1621 float theta = atan2(r, z);
1650 this_layer_thetaID_phiID_clusterID.insert(std::make_pair(idx, cluster->
getClusKey()));
1661 const float theta_center,
const float phi_center,
const float theta_window,
1662 const float phi_window)
1664 if(
Verbosity() > 10) cout <<
"SearchHitsNearBy for ivert = " << ivert << endl;
1666 std::vector<TrkrDefs::cluskey> cluster_keys;
1668 const unsigned int max_phi_bin = 16383;
1669 const unsigned int max_z_bin = 2047;
1681 if (lower_phi < 0) lower_phi_bin = 0;
1682 if (upper_phi_bin > max_phi_bin) upper_phi_bin = max_phi_bin;
1684 if (lower_z < 0) lower_z_bin = 0;
1685 if (upper_z_bin > max_z_bin) upper_z_bin = max_z_bin;
1687 for (
unsigned int iz = lower_z_bin; iz <= upper_z_bin; ++iz)
1689 for (
unsigned int irphi = lower_phi_bin; irphi <= upper_phi_bin;
1717 if(
Verbosity() > 10) cout <<
" adding cluster with key " << iter->second << endl;
1718 cluster_keys.push_back(iter->second);
1734 <<
"layer: " << layer
1735 <<
", rphi: {" << lower_phi_bin
1736 <<
", " << upper_phi_bin
1737 <<
"}, z: {" << lower_z_bin
1738 <<
", " << upper_z_bin
1739 <<
"}, found #clusters: " << cluster_keys.size()
1743 return cluster_keys;
1747 const float theta,
const float phi)
1749 unsigned int idx = UINT_MAX;
1759 LogError(
"(theta + _half_max_theta) < 0 \n");
1766 LogError(
"(rphi + _half_max_rphi) < 0 \n");
1783 const unsigned int iz,
const unsigned int irphi)
1787 LogError(
"layer >= 128: ") << layer << endl;
1794 LogError(
"iz >= 2048: ") << iz << endl;
1800 LogError(
"irphi >= 16384: ") << irphi << endl;
1804 unsigned int index = 0;
1806 index |= (layer << 25);
1807 index |= (iz << 14);
1816 auto micromegasgeos = findNode::getClass<PHG4CylinderGeomContainer>(topNode,
"CYLINDERGEOM_MICROMEGAS");
1817 auto cellgeos = findNode::getClass<PHG4CylinderCellGeomContainer>(topNode,
"CYLINDERCELLGEOM_SVTX");
1818 auto laddergeos = findNode::getClass<PHG4CylinderGeomContainer>(topNode,
"CYLINDERGEOM_INTT");
1819 auto mapsladdergeos = findNode::getClass<PHG4CylinderGeomContainer>(topNode,
"CYLINDERGEOM_MVTX");
1821 map<float, int> radius_layer_map;
1829 const auto range = micromegasgeos->get_begin_end();
1830 for (
auto layeriter = range.first; layeriter != range.second; ++layeriter)
1831 { radius_layer_map.insert( std::make_pair(layeriter->second->get_radius(), layeriter->second->get_layer())); }
1838 cellgeos->get_begin_end();
1841 layeriter != layerrange.second; ++layeriter)
1843 radius_layer_map.insert(
1844 make_pair(layeriter->second->get_radius(),
1845 layeriter->second->get_layer()));
1853 laddergeos->get_begin_end();
1856 layeriter != layerrange.second; ++layeriter)
1858 radius_layer_map.insert(
1859 make_pair(layeriter->second->get_radius(),
1860 layeriter->second->get_layer()));
1868 mapsladdergeos->get_begin_end();
1871 layeriter != layerrange.second; ++layeriter)
1873 radius_layer_map.insert(
1874 make_pair(layeriter->second->get_radius(),
1875 layeriter->second->get_layer()));
1879 for (map<float, int>::iterator iter = radius_layer_map.begin();
1880 iter != radius_layer_map.end(); ++iter)
1889 const auto range = micromegasgeos->get_begin_end();
1890 for(
auto iter = range.first; iter != range.second; iter++)
1892 auto geo = iter->second;
1901 cellgeos->get_begin_end();
1903 for (; miter != begin_end.second; miter++)
1916 laddergeos->get_begin_end();
1918 for (; miter != begin_end.second; miter++)
1931 mapsladdergeos->get_begin_end();
1933 for (; miter != begin_end.second; miter++)