1 |
#ifndef SimDataFormats_TrackingDataPrint_h
|
2 |
#define SimDataFormats_TrackingDataPrint_h
|
3 |
/** Concrete TrackingParticle.
|
4 |
* All track parameters are passed in the constructor and stored internally.
|
5 |
*/
|
6 |
|
7 |
#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
|
8 |
#include "SimDataFormats/TrackingAnalysis/interface/TrackingVertex.h"
|
9 |
#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h"
|
10 |
#include <iostream>
|
11 |
|
12 |
std::ostream& operator<< (std::ostream& s, const TrackingParticle & tp)
|
13 |
{
|
14 |
|
15 |
// Compare momenta from sources
|
16 |
s << "T.P. Track Momentum, q , ID, & Event # "
|
17 |
<< tp.p4() << " " << tp.charge() << " "
|
18 |
<< tp.pdgId() << " "
|
19 |
<< tp.eventId().bunchCrossing() << "." << tp.eventId().event()
|
20 |
<< std::endl;
|
21 |
s << " Hits for this track: " << tp.trackPSimHit().size()
|
22 |
<< std::endl;
|
23 |
|
24 |
for (TrackingParticle::genp_iterator hepT = tp.genParticle_begin();
|
25 |
hepT != tp.genParticle_end(); ++hepT)
|
26 |
{
|
27 |
s << " HepMC Track Momentum " << (*hepT)->momentum().mag() << std::endl;
|
28 |
}
|
29 |
for (TrackingParticle::g4t_iterator g4T = tp.g4Track_begin();
|
30 |
g4T != tp.g4Track_end(); ++g4T)
|
31 |
{
|
32 |
s << " Geant Track Momentum " << g4T->momentum() << std::endl;
|
33 |
s << " Geant Track ID & type " << g4T->trackId() << " "
|
34 |
<< g4T->type() << std::endl;
|
35 |
if (g4T->type() != tp.pdgId())
|
36 |
{
|
37 |
s << " Mismatch b/t TrackingParticle and Geant types"
|
38 |
<< std::endl;
|
39 |
}
|
40 |
}
|
41 |
return s;
|
42 |
}
|
43 |
|
44 |
#endif // SimDataFormats_TrackingDataPrint_H
|