BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EventNavigator.cxx
Go to the documentation of this file.
1#include <iostream>
2
3#include "EventNavigator/EventNavigator.h"
4
5using namespace std;
6using namespace Event;
7
8// methods to retrieve physics objects corresponding given detector id
9
12 multimap<unsigned int, const RecEmcShower*>::iterator it;
13 for ( it = m_emcRecShowerId.equal_range( id ).first;
14 it != m_emcRecShowerId.equal_range( id ).second; it++ )
15 tmp.push_back( ( *it ).second );
16 return tmp;
17}
18
20 cout << "EventNavigator object:" << std::endl;
21 cout << " Mdc hits: " << m_mcMdcMcHitsIdx.size() << endl;
22 cout << " Mdc tracks: " << m_mcMdcTracksIdx.size() << endl;
23 cout << " Emc hits: " << m_mcEmcMcHitsIdx.size() << endl;
24 cout << " Emc showers: " << m_mcEmcRecShowersIdx.size() << endl;
25 cout << " TABLES:" << endl;
26 cout << " m_mdcTracksWrtMcParticle " << m_mdcTracksWrtMcParticle.size() << endl;
27 cout << " m_mcParticlesWrtMdcTrack " << m_mcParticlesWrtMdcTrack.size() << endl;
28 cout << " m_mdcKalTracksWrtMcParticle " << m_mdcKalTracksWrtMcParticle.size() << endl;
29 cout << " m_mcParticlesWrtMdcKalTrack " << m_mcParticlesWrtMdcKalTrack.size() << endl;
30 cout << " m_mdcTracksWrtMcParticleP " << m_mdcTracksWrtMcParticleP.size() << endl;
31 cout << " m_mcParticlesWrtMdcTrackP " << m_mcParticlesWrtMdcTrackP.size() << endl;
32 cout << " m_mdcKalTracksWrtMcParticle " << m_mdcKalTracksWrtMcParticleP.size() << endl;
33 cout << " m_mcParticlesWrtMdcKalTrack " << m_mcParticlesWrtMdcKalTrackP.size() << endl;
34 cout << " m_mcParticlesWrtRecShower " << m_mcParticlesWrtRecShower.size() << endl;
35 cout << " m_emcRecShowersWrtMcParticle " << m_emcRecShowersWrtMcParticle.size() << endl;
36 cout << " m_mcParticlesWrtEmcShowerP " << m_mcParticlesWrtRecEmcShowerP.size() << endl;
37 cout << " m_emcRecShowersWrtMcParticle " << m_emcRecShowersWrtMcParticleP.size() << endl;
38}
39
40//=====================================
41// MDC
42
44 return m_mcParticlesWrtMdcTrack[key->trackId()];
45}
46
48 return m_mcParticlesWrtMdcKalTrack[key->trackId()];
49}
50
52 return m_mcParticlesWrtRecShower[key->getShowerId().get_value()];
53}
54
56 return m_mdcTracksWrtMcParticle[key->trackIndex()];
57}
58
60 return m_mdcKalTracksWrtMcParticle[key->trackIndex()];
61}
62
63// Return number of hits contributed by the McParticle to given MdcTrack
65 McParticleVectorP& vpair = m_mcParticlesWrtMdcTrackP[key->trackId()];
66 McParticleVectorP::iterator it;
67 for ( it = vpair.begin(); it != vpair.end(); it++ )
68 {
69 if ( ( *it ).first == value ) { return ( *it ).second; }
70 }
71
72 std::cerr << __FILE__ << ":" << __LINE__ << " Should not reach here!" << std::endl;
73 exit( 1 );
74}
75
77 const McParticle* value ) {
78 McParticleVectorP& vpair = m_mcParticlesWrtMdcKalTrackP[key->trackId()];
79 McParticleVectorP::iterator it;
80 for ( it = vpair.begin(); it != vpair.end(); it++ )
81 {
82 if ( ( *it ).first == value ) { return ( *it ).second; }
83 }
84
85 std::cerr << __FILE__ << ":" << __LINE__ << " Should not reach here!" << std::endl;
86 exit( 1 );
87}
88
90 const McParticle* value ) {
91 McParticleVectorP& vpair = m_mcParticlesWrtRecEmcShowerP[key->getShowerId().get_value()];
92 McParticleVectorP::iterator it;
93 for ( it = vpair.begin(); it != vpair.end(); it++ )
94 {
95 if ( ( *it ).first == value ) { return ( *it ).second; }
96 }
97
98 std::cerr << __FILE__ << ":" << __LINE__ << " Should not reach here!" << std::endl;
99 exit( 1 );
100}
101
103 return m_emcRecShowersWrtMcParticle[key->trackIndex()];
104}
105
106// ==== Methods to store relations ====
107// store list of MdcTracks corresponding given McParticle
108void EventNavigator::addLink( const McParticle* key, const RecMdcTrack* value ) {
109 RecMdcTrackVectorP& vpair = m_mdcTracksWrtMcParticleP[key->trackIndex()];
110 RecMdcTrackVectorP::iterator it;
111 bool found = false;
112 for ( it = vpair.begin(); it != vpair.end(); it++ )
113 {
114 if ( ( *it ).first == value )
115 {
116 ( *it ).second++;
117 found = true;
118 break;
119 }
120 }
121
122 if ( !found ) vpair.push_back( pair<const RecMdcTrack*, int>( value, 1 ) );
123
124 RecMdcTrackVector& tmp = m_mdcTracksWrtMcParticle[key->trackIndex()];
125 for ( it = vpair.begin(); it != vpair.end(); it++ )
126 {
127 if ( ( *it ).second > m_mdcCut )
128 {
129 if ( find( tmp.begin(), tmp.end(), ( *it ).first ) == tmp.end() )
130 { tmp.push_back( ( *it ).first ); }
131 }
132 }
133}
134
135// store list of MdcKalTracks corresponding given McParticle
137 RecMdcKalTrackVectorP& vpair = m_mdcKalTracksWrtMcParticleP[key->trackIndex()];
138 RecMdcKalTrackVectorP::iterator it;
139 bool found = false;
140 for ( it = vpair.begin(); it != vpair.end(); it++ )
141 {
142 if ( ( *it ).first == value )
143 {
144 ( *it ).second++;
145 found = true;
146 break;
147 }
148 }
149
150 if ( !found ) vpair.push_back( pair<const RecMdcKalTrack*, int>( value, 1 ) );
151
152 RecMdcKalTrackVector& tmp = m_mdcKalTracksWrtMcParticle[key->trackIndex()];
153 for ( it = vpair.begin(); it != vpair.end(); it++ )
154 {
155 if ( ( *it ).second > m_mdcCut )
156 {
157 if ( find( tmp.begin(), tmp.end(), ( *it ).first ) == tmp.end() )
158 { tmp.push_back( ( *it ).first ); }
159 }
160 }
161}
162
163// store list of McParticles corresponding given MdcTrack
164void EventNavigator::addLink( const RecMdcTrack* key, const McParticle* value ) {
165 McParticleVectorP& vpair = m_mcParticlesWrtMdcTrackP[key->trackId()];
166 McParticleVectorP::iterator it;
167 bool found = false;
168 for ( it = vpair.begin(); it != vpair.end(); it++ )
169 {
170 if ( ( *it ).first == value )
171 {
172 ( *it ).second++;
173 found = true;
174 break;
175 }
176 }
177
178 if ( !found ) vpair.push_back( pair<const McParticle*, int>( value, 1 ) );
179
180 McParticleVector& tmp = m_mcParticlesWrtMdcTrack[key->trackId()];
181 for ( it = vpair.begin(); it != vpair.end(); it++ )
182 {
183 if ( ( *it ).second > m_mdcCut )
184 {
185 if ( find( tmp.begin(), tmp.end(), ( *it ).first ) == tmp.end() )
186 { tmp.push_back( ( *it ).first ); }
187 }
188 }
189}
190
191// store list of McParticles corresponding given MdcKalTrack
193 McParticleVectorP& vpair = m_mcParticlesWrtMdcKalTrackP[key->trackId()];
194 McParticleVectorP::iterator it;
195 bool found = false;
196 for ( it = vpair.begin(); it != vpair.end(); it++ )
197 {
198 if ( ( *it ).first == value )
199 {
200 ( *it ).second++;
201 found = true;
202 break;
203 }
204 }
205
206 if ( !found ) vpair.push_back( pair<const McParticle*, int>( value, 1 ) );
207
208 McParticleVector& tmp = m_mcParticlesWrtMdcKalTrack[key->trackId()];
209 for ( it = vpair.begin(); it != vpair.end(); it++ )
210 {
211 if ( ( *it ).second > m_mdcCut )
212 {
213 if ( find( tmp.begin(), tmp.end(), ( *it ).first ) == tmp.end() )
214 { tmp.push_back( ( *it ).first ); }
215 }
216 }
217}
218
219// store list of McParticles corresponding given EmcRecShower
221 // McParticleVector& tmp =
222 // m_mcParticlesWrtRecShower[((RecEmcShower*)key)->getShowerId().get_value()]; if
223 // (find(tmp.begin(),tmp.end(),value) == tmp.end() )
224 // tmp.push_back(value);
225
226 McParticleVectorP& vpair =
227 m_mcParticlesWrtRecEmcShowerP[( (RecEmcShower*)key )->getShowerId().get_value()];
228 McParticleVectorP::iterator it;
229 bool found = false;
230 for ( it = vpair.begin(); it != vpair.end(); it++ )
231 {
232 if ( ( *it ).first == value )
233 {
234 ( *it ).second++;
235 found = true;
236 break;
237 }
238 }
239
240 if ( !found ) vpair.push_back( pair<const McParticle*, int>( value, 1 ) );
241
242 McParticleVector& tmp =
243 m_mcParticlesWrtRecShower[( (RecEmcShower*)key )->getShowerId().get_value()];
244 for ( it = vpair.begin(); it != vpair.end(); it++ )
245 {
246 if ( find( tmp.begin(), tmp.end(), ( *it ).first ) == tmp.end() )
247 { tmp.push_back( ( *it ).first ); }
248 }
249}
250
251// store list of EmcRecShowers corresponding given McParticle
253 // RecEmcShowerVector& tmp = m_emcRecShowersWrtMcParticle[key->trackIndex()];
254 // if (find(tmp.begin(),tmp.end(),value) == tmp.end() )
255 // tmp.push_back(value);
256 RecEmcShowerVectorP& vpair = m_emcRecShowersWrtMcParticleP[key->trackIndex()];
257 RecEmcShowerVectorP::iterator it;
258 bool found = false;
259 for ( it = vpair.begin(); it != vpair.end(); it++ )
260 {
261 if ( ( *it ).first == value )
262 {
263 ( *it ).second++;
264 found = true;
265 break;
266 }
267 }
268
269 if ( !found ) vpair.push_back( pair<const RecEmcShower*, int>( value, 1 ) );
270
271 RecEmcShowerVector& tmp = m_emcRecShowersWrtMcParticle[key->trackIndex()];
272 for ( it = vpair.begin(); it != vpair.end(); it++ )
273 {
274 if ( find( tmp.begin(), tmp.end(), ( *it ).first ) == tmp.end() )
275 { tmp.push_back( ( *it ).first ); }
276 }
277}
std::vector< const RecMdcTrack * > RecMdcTrackVector
std::vector< const Event::McParticle * > McParticleVector
std::vector< pair< const Event::McParticle *, int > > McParticleVectorP
std::vector< const RecMdcKalTrack * > RecMdcKalTrackVector
std::vector< pair< const RecMdcKalTrack *, int > > RecMdcKalTrackVectorP
std::vector< const RecEmcShower * > RecEmcShowerVector
std::vector< pair< const RecMdcTrack *, int > > RecMdcTrackVectorP
std::vector< pair< const RecEmcShower *, int > > RecEmcShowerVectorP
*************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
RecMdcKalTrackVector & getMdcKalTracks(const Event::McParticle *key)
void addLink(const Event::McParticle *key, const RecMdcTrack *value)
int getMcParticleRelevance(const RecMdcTrack *key, const Event::McParticle *value)
McParticleVector & getMcParticles(const RecMdcTrack *key)
RecMdcTrackVector & getMdcTracks(const Event::McParticle *key)
RecEmcShowerVector getEmcRecShowers(int id)