Main Page   Modules   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

mMuiRoadAssoc Class Reference
[Analysis Modules]

Take our track and a list of candidate roads, and pick the road closest to the track. More...

#include <mMuiRoadAssoc.h>

List of all members.

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


Detailed Description

Take our track and a list of candidate roads, and pick the road closest to the track.


Analysis Module Interface Specification

Object Description Privilege
const mMutMyModulePar* Parameter Table immutable

INSERT ADDITIONAL IOC SPECIFICATIONS HERE

Definition at line 39 of file mMuiRoadAssoc.h.


Constructor & Destructor Documentation

~mMuiRoadAssoc  
 

Definition at line 43 of file mMuiRoadAssoc.cxx.

00043 { }


Member Function Documentation

double distance PHPoint    p1,
PHPoint    p2
[private]
 

Definition at line 138 of file mMuiRoadAssoc.cxx.

References p1, and p2.

Referenced by event.

00138                                                      {
00139   double x1 = p1.getX();
00140   double y1 = p1.getY();
00141   double z1 = p1.getZ();
00142   double x2 = p2.getX();
00143   double y2 = p2.getY();
00144   double z2 = p2.getZ();
00145 
00146   return std::sqrt( MUTOO::SQUARE(x2-x1)+MUTOO::SQUARE(y2-y1)+MUTOO::SQUARE(z2-z1));
00147 }

PHBoolean event PHCompositeNode *    [virtual]
 

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 }

void set_interface_ptrs PHCompositeNode *    top_node [private]
 

Reset IOC and external interface pointers

Definition at line 128 of file mMuiRoadAssoc.cxx.

References _mod_par, and _trk_map.

Referenced by event.

00128                                                                {  
00129 
00130   // module runtime parameters
00131   //
00132   _mod_par = TMutNode<mMuiRoadAssocPar>::find_node(top_node,"mMuiRoadAssocPar");
00133 
00134   _trk_map = TMutNode<TMutTrkMap>::find_node(top_node,"TMutTrkMap");
00135   
00136 } 


Member Data Documentation

const mMuiRoadAssocPar* _mod_par [private]
 

Definition at line 57 of file mMuiRoadAssoc.h.

Referenced by event, and set_interface_ptrs.

TMuiRoadMapO* _road_map [private]
 

Definition at line 59 of file mMuiRoadAssoc.h.

PHTimer _timer [private]
 

Definition at line 62 of file mMuiRoadAssoc.h.

Referenced by event.

TMutTrkMap* _trk_map [private]
 

Definition at line 58 of file mMuiRoadAssoc.h.

Referenced by event, and set_interface_ptrs.


The documentation for this class was generated from the following files:
MUIOO: PHENIX Muon Identifier Analysis Framework. Documentation by doxygen
Last modified: