BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TrkFundHit.cxx
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// File and Version Information:
3// $Id: TrkFundHit.cxx,v 1.4 2011/02/17 11:53:41 zhangy Exp $
4//
5// Description:
6//
7// Environment:
8// Software developed for the BaBar Detector at the SLAC B-Factory.
9//
10// Author(s): Steve Schaffner
11//
12// We may want to inline some of these functions some day.
13//
14// Revision History:
15// 20000523 M. Kelsey -- Add concrete printAll() implementation which
16// calls through to subclass print(), then dumps HOT list.
17//------------------------------------------------------------------------
18#include "TrkBase/TrkFundHit.h"
19#include "TrkBase/TrkHitOnTrk.h"
20#include "TrkBase/TrkHitOnTrkIter.h"
21#include "TrkBase/TrkPredicates.h"
22#include <algorithm>
23#include <assert.h>
24#include <iostream>
25// Remove!:
26// MHK Restore, for use in printAll()
27#include "TrkBase/TrkRecoTrk.h"
28using std::endl;
29using std::ostream;
30
31int debug_nHit = 0;
32
34 // std::cout << " @ TrkFundHit constructor: " << ++debug_nHit << " addr: " << this <<
35 // std::endl;
36}
37
39 // std::cout << " @ ~TrkFundHit() : " << --debug_nHit << " addr: " << this << std::endl;
40 // hitlist cleanup done in derived classes
41}
42
44 assert( _hitList.empty() );
45 // std::cout << " @ TrkFundHit copy constructor : " << ++debug_nHit << " addr: " << this <<
46 // std::endl;
47}
48
50 // std::cout << " @ TrkFundHit operator= : " << debug_nHit << " addr: " << this << std::endl;
51 assert( _hitList.empty() );
52 return *this;
53}
54
56 // if (hitList->contains(hit)) {
57 // return;
58 // }
59 // FIXME: check hot corresponds to this hit??
60 // std::cout << "TrkFundHit setUsedHit "<<((MdcHit*)(hit->hit()))->layernumber()<<"
61 //"<<((MdcHit*)(hit->hit()))->wirenumber()<<endl; this->printAll(std::cout);//yzhang
62 // debug
63 _hitList.push_back( hit );
64 // std::cout << "after push_bak " << std::endl;//yzhang debug
65 // printAll(std::cout);//yzhang debug
66
67 return hit;
68}
69
70// return hit if on list, return 0 if not on list...
72 // std::cout << " @ setUnusedHit() : " << debug_nHit << " addr: " << this << std::endl;
73 if ( _hitList.empty() ) return 0;
74 std::vector<const TrkHitOnTrk*>::iterator i =
75 std::find( _hitList.begin(), _hitList.end(), hit );
76 if ( i == _hitList.end() ) return 0;
77 assert( *i == hit );
78 // std::cout << "TrkFundHit setUnusedHit "<<((MdcHit*)(hit->hit()))->layernumber()<<"
79 // "<<((MdcHit*)(hit->hit()))->wirenumber()<<endl;
80 // this->printAll(std::cout);//yzhang debug
81 _hitList.erase( i );
82 return hit;
83}
84
85int TrkFundHit::nUsedHits() const { return _hitList.size(); }
86
88 hot_iterator i =
89 std::find_if( begin(), end(), std::bind2nd( TrkBase::Predicates::isHotOnTrack(), trk ) );
90 return ( i == end() ? 0 : i.get() );
91}
92
93void TrkFundHit::printAll( ostream& os ) const {
94 // print(os); // Call through to get subclass info
95 os << " used by " << nUsedHits() << " HOTs" << endl;
96 if ( usedHit() )
97 {
98 for ( hot_iterator i = begin(); i != end(); ++i )
99 {
100 i->printAll( os ); // yzhang debug
101 // os << "\ttrack " << i->parentTrack()->id() << ": ";
102 // i->print(os); // NOTE: includes endl!
103 // yzhang debug
104 std::cout << " parentTrack" << std::endl; // yzhang debug
105 i->parentTrack()->printAll( std::cout );
106 // zhangy debug
107 }
108 os << endl;
109 }
110}
int debug_nHit
const TrkHitOnTrk * getHitOnTrack(const TrkRecoTrk *trk) const
const TrkHitOnTrk * setUnusedHit(const TrkHitOnTrk *hit)
virtual void printAll(std::ostream &os) const
virtual ~TrkFundHit()
int nUsedHits() const
TrkFundHit & operator=(const TrkFundHit &)
const TrkHitOnTrk * setUsedHit(const TrkHitOnTrk *hit)