BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/MdcPatRec/TrkBase/include/TrkBase/TrkExpectedTrk.h
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// File and Version Information:
3// $Id: TrkExpectedTrk.h,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $
4//
5// Description:
6// Class TrkExpectedTrack Stores lists of expected hits for a given
7// set of tracks.
8//
9// Environment:
10// Software developed for Babar experiment @ Slac B-factory.
11//
12// Author List:
13// Eric A Charles UW-Madison
14//
15//------------------------------------------------------------------------
16
17#ifndef TRKEXPECTEDTRACK_HH
18#define TRKEXPECTEDTRACK_HH
19
20//-------------
21// C Headers --
22//-------------
23extern "C" {}
24
25//---------------
26// C++ Headers --
27//---------------
28#include <algorithm>
29#include <iostream>
30#include <map>
31#include <vector>
32
33//----------------------
34// Base Class Headers --
35//----------------------
36
37//-------------------------------
38// Collaborating Class Headers --
39//-------------------------------
40
41#include "MdcRecoUtil/PdtPid.h"
42#include "TrkBase/TrkFitTypeKey.h"
43
44//------------------------------------
45// Collaborating Class Declarations --
46//------------------------------------
47
48class TrkRecoTrk;
49class TrkRep;
50class TrkFit;
52class TrkExpectedHot;
53class TrkHitOnTrk;
54class TrkFundHit;
55class TrkExpectedMap;
56class TrkDetElemId;
57class GTrack;
58
59// ---------------------
60// -- Class Interface --
61// ---------------------
62
63class TrkExpectedTrk {
64
65 //--------------------
66 // Instance Members --
67 //--------------------
68
69public:
70 // Constructor
71
72 // c'tor from a track, uses the default fit unless overridden,
73 // this also registers the expected track in the map,
74 // finally, it sets the tracks fit type as the default type,
75 // it does not, however, actully make the TrkExpectedHotSets
77 const GTrack* gTrk = 0, TrkExpectedMap* exMap = 0 );
78
79 // Destructor
80 virtual ~TrkExpectedTrk();
81
82 // Operators
83 bool operator==( const TrkExpectedTrk& rhs ) const { return this == &rhs; }
84
85 // Selectors (const)
86 const TrkHitOnTrk* getHot( const TrkFundHit* hit, const TrkFitTypeKey& key ) const;
87
88 const TrkRep* refRep() const { return _refRep; }
89
90 const GTrack* gTrack() const { return _gTrk; }
91
92 const TrkRecoTrk* track() const;
93
94 // these are ways of getting the hots sets
95 // by element id
96 const TrkExpectedHotSet* exHotSet( const TrkDetElemId& elemId ) const;
97 // by hot and fund hit
98 const TrkExpectedHotSet* exHotSet( const TrkHitOnTrk* hot ) const;
99 const TrkExpectedHotSet* exHotSet( const TrkFundHit* hit ) const;
100
101 // these are ways of getting the ex hots them-selves
102 // by element id
103 const TrkExpectedHot* exHot( const TrkDetElemId& elemId,
104 const TrkFitTypeKey key = TrkFitTypeKey( 0 ) ) const;
105
106 // by hot and fund hit
107 const TrkExpectedHot* exHot( const TrkHitOnTrk* hot ) const;
108 const TrkExpectedHot* exHot( const TrkFundHit* hit,
109 const TrkFitTypeKey key = TrkFitTypeKey( 0 ) ) const;
110
111 void fillExHotSets( std::vector<TrkExpectedHotSet*>& hotSets ) const;
112 void fillExHots( const TrkFitTypeKey& key, std::vector<TrkExpectedHot*>& hots ) const;
113
114 // get the number of overlaps with a rep
115 int overLap( const TrkRep* rep ) const {
116 // FIXME: std::count doesn't work with the BaBar config of Sun WS6U1..
117 // return std::count(_reps.begin(),_reps.end(),rep);
118 typedef std::vector<const TrkRep*>::const_iterator i_t;
119 int j = 0;
120 for ( i_t i = _reps.begin(); i != _reps.end(); ++i )
121 {
122 if ( *i == rep ) ++j;
123 }
124 return j;
125 }
126
127 // Accessing methods for the class private members:
128 const std::map<TrkDetElemId, TrkExpectedHotSet*>& expectedHots() const {
129 return _exHotTable;
130 }
131
132 // modifiers
133 void printFit( const TrkFitTypeKey& key, std::ostream& os = std::cout ) const;
134
135protected:
136 // Helper functions
137 // add in the un-parsed hots from a rep
138 bool parseHotFromMap( const TrkHitOnTrk* hot, const bool fillGaps );
143
144 const TrkRep* getRep( const TrkRecoTrk* aTrk, const PdtPid::PidType type ) const;
145
146 bool addExHotSet( const TrkDetElemId& elemId, TrkExpectedHotSet* val );
147
148private:
149 // friends
150 friend class TrkExpectedHotFactory;
151
152 // Data members
153 std::vector<const TrkRep*> _reps;
154 const TrkExpectedMap* _parentMap;
155 std::map<TrkDetElemId, TrkExpectedHotSet*> _exHotTable;
156 const TrkRep* _refRep;
157 const GTrack* _gTrk;
158};
159
160#endif
*************DOUBLE PRECISION m_pi *DOUBLE PRECISION m_HvecTau2 DOUBLE PRECISION m_HvClone2 DOUBLE PRECISION m_gamma1 DOUBLE PRECISION m_gamma2 DOUBLE PRECISION m_thet1 DOUBLE PRECISION m_thet2 INTEGER m_IFPHOT *COMMON c_Taupair $ !Spin Polarimeter vector first Tau $ !Spin Polarimeter vector second Tau $ !Clone Spin Polarimeter vector first Tau $ !Clone Spin Polarimeter vector second Tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning nd tau $ !Random Euler angle for cloning nd tau $ !Random Euler angle for cloning nd tau $ !phi of HvecTau1 $ !theta of HvecTau1 $ !phi of HvecTau2 $ !theta of HvecTau2 $ !super key
Definition Taupair.h:42
bool addExHotSet(const TrkDetElemId &elemId, TrkExpectedHotSet *val)
const TrkExpectedHot * exHot(const TrkHitOnTrk *hot) const
const TrkExpectedHotSet * exHotSet(const TrkFundHit *hit) const
void fillExHotSets(std::vector< TrkExpectedHotSet * > &hotSets) const
virtual ~TrkExpectedTrk()
bool parseHotSetFromMap(TrkExpectedHotSet *hotSet)
const TrkExpectedHot * exHot(const TrkFundHit *hit, const TrkFitTypeKey key=TrkFitTypeKey(0)) const
bool parseHotsFromMap(const TrkFitTypeKey &key)
void printFit(const TrkFitTypeKey &key, std::ostream &os=std::cout) const
bool parseHotFromMap(const TrkHitOnTrk *hot, const bool fillGaps)
const TrkExpectedHotSet * exHotSet(const TrkHitOnTrk *hot) const
const TrkExpectedHot * exHot(const TrkDetElemId &elemId, const TrkFitTypeKey key=TrkFitTypeKey(0)) const
const TrkExpectedHotSet * exHotSet(const TrkDetElemId &elemId) const
bool parseHotsFromMap()
void fillExHots(const TrkFitTypeKey &key, std::vector< TrkExpectedHot * > &hots) const
const TrkRep * getRep(const TrkRecoTrk *aTrk, const PdtPid::PidType type) const
TrkExpectedTrk(const TrkRecoTrk *aTrack, const PdtPid::PidType=PdtPid::null, const GTrack *gTrk=0, TrkExpectedMap *exMap=0)
const std::map< TrkDetElemId, TrkExpectedHotSet * > & expectedHots() const
const TrkHitOnTrk * getHot(const TrkFundHit *hit, const TrkFitTypeKey &key) const
bool parseHotSetFromMap(TrkExpectedHotSet *hotSet, const TrkFitTypeKey &key)
const TrkRecoTrk * track() const