#include <mMuiRoadAssoc.h>
Public Methods | |
mMuiRoadAssoc () | |
~mMuiRoadAssoc () | |
virtual PHBoolean | event (PHCompositeNode *) |
Private Methods | |
void | set_interface_ptrs (PHCompositeNode *top_node) |
double | distance (PHPoint p1, PHPoint p2) |
Private Attributes | |
const mMuiRoadAssocPar * | _mod_par |
TMutTrkMap * | _trk_map |
TMuiRoadMapO * | _road_map |
PHTimer | _timer |
Object | Description | Privilege |
const mMutMyModulePar* | Parameter Table | immutable
INSERT ADDITIONAL IOC SPECIFICATIONS HERE
|
Definition at line 39 of file mMuiRoadAssoc.h.
|
Definition at line 43 of file mMuiRoadAssoc.cxx.
00043 { } |
|
Definition at line 138 of file mMuiRoadAssoc.cxx. Referenced by event.
|
|
Definition at line 47 of file mMuiRoadAssoc.cxx. References _mod_par, _timer, _trk_map, distance, and set_interface_ptrs.
00048 { 00049 _timer.restart(); 00050 00051 try { 00052 00053 // Reset IOC pointers 00054 // 00055 set_interface_ptrs(top_node); 00056 00057 // convenience typedefs 00058 // 00059 typedef std::multimap<UShort_t, TMuiRoadMapO::value_type> road_multimap; 00060 typedef std::multimap<UShort_t, TMuiRoadMapO::value_type>::iterator multimap_iterator; 00061 typedef std::pair<multimap_iterator,multimap_iterator> Range; 00062 00063 // Loop over all the tracks....wheeeeeee...... 00064 TMutTrkMap::iterator trk_iter = _trk_map->range(); 00065 while( TMutTrkMap::pointer trk_ptr = trk_iter.next() ) { 00066 00067 road_multimap roads_to_test; 00068 TMuiRoadMapO::key_iterator road_iter = trk_ptr->get()->get_associated<TMuiRoadO>(); 00069 00070 // add each road to multimap and disassociate it from the track: 00071 while( TMuiRoadMapO::pointer road_ptr = road_iter.next() ) { 00072 roads_to_test.insert( std::make_pair( road_ptr->get()->get_depth(), road_ptr->get() )); 00073 PHKey::disassociate(trk_ptr, road_ptr); 00074 } 00075 00076 // NOW TEST EACH ROAD TO SEE WHICH IS CLOSEST... 00077 00078 // Loop over each depth: 00079 for(UShort_t depth=2;depth<5;++depth){ 00080 00081 // Loop over roads of given depth: 00082 Range range = roads_to_test.equal_range(depth); //get begin,end iters to roads of (depth) 00083 multimap_iterator map_iter = range.first; // make iter to use, starting at begin 00084 00085 // start with first road 00086 double closest_dist = DBL_MAX; 00087 multimap_iterator closest_iter = map_iter; // keep iter to closest road 00088 00089 // now see if any road is closer... 00090 for(; map_iter!=range.second; ++map_iter){ 00091 00092 // Set extrapolated point to test the road against... 00093 PHPoint road_point = map_iter->second->get_gap0_point(); 00094 double z0 = (map_iter->second->get_fit_par()).get_z(); 00095 const TMutTrkPar* trk_par = trk_ptr->get()->get_trk_par_station(MUTOO::Station3); 00096 TMutFitPar* lcl_fitpar = new TMutFitPar(trk_par->get_x(), 00097 trk_par->get_y(), 00098 trk_par->get_z(), 00099 ( trk_par->get_px()/trk_par->get_pz() ), // dx/dz 00100 ( trk_par->get_py()/trk_par->get_pz() ), // dy/dz 00101 trk_par->get_chi_square() ); 00102 const PHPoint extrap_point = TMutTrackUtil::linear_track_model(lcl_fitpar, z0); 00103 delete lcl_fitpar; 00104 00105 double dist = distance( extrap_point, road_point ); 00106 if( dist < closest_dist ){ 00107 closest_dist = dist; 00108 closest_iter = map_iter; 00109 } 00110 } 00111 if( closest_iter != range.second ) // in case a depth has no roads 00112 PHKey::associate(*trk_ptr, closest_iter->second); // for each depth, assoc closet road with track 00113 00114 } //end depth loop 00115 } //end track loop 00116 00117 } catch(std::exception& e) { 00118 MUTOO::TRACE(e.what()); 00119 return False; 00120 } 00121 00122 if(_mod_par->get_verbosity() >= MUTOO::SOME) _timer.print(); 00123 if(_mod_par->get_verbosity() >= MUTOO::ALOT) _trk_map->print(); 00124 return True; 00125 } |
|
Reset IOC and external interface pointers Definition at line 128 of file mMuiRoadAssoc.cxx. References _mod_par, and _trk_map. Referenced by event.
|
|
Definition at line 57 of file mMuiRoadAssoc.h. Referenced by event, and set_interface_ptrs. |
|
Definition at line 59 of file mMuiRoadAssoc.h. |
|
Definition at line 62 of file mMuiRoadAssoc.h. Referenced by event. |
|
Definition at line 58 of file mMuiRoadAssoc.h. Referenced by event, and set_interface_ptrs. |