1 |
< |
#include "UserCode/Morgan/interface/TrackAnalyzer.h" |
1 |
> |
#include "../interface/TrackAnalyzer.h" |
2 |
|
|
3 |
|
using namespace std; |
4 |
|
using namespace reco; |
5 |
|
using namespace edm; |
6 |
|
|
7 |
– |
TrackAnalyzer::TrackAnalyzer(const edm::ParameterSet& producersNames):verbosity_(0) |
8 |
– |
{ |
9 |
– |
trackProducer_ = producersNames.getParameter<edm::InputTag>("trackProducer"); |
10 |
– |
} |
11 |
– |
|
7 |
|
TrackAnalyzer::TrackAnalyzer(const edm::ParameterSet& producersNames, int verbosity):verbosity_(verbosity) |
8 |
|
{ |
9 |
< |
trackProducer_ = producersNames.getParameter<edm::InputTag>("trackProducer"); |
9 |
> |
trackProducer_ = producersNames.getParameter<edm::InputTag>("trackProducer"); |
10 |
> |
allowMissingCollection_ = producersNames.getUntrackedParameter<bool>("allowMissingCollection", false); |
11 |
|
} |
12 |
|
|
13 |
|
TrackAnalyzer::~TrackAnalyzer() |
14 |
|
{ |
15 |
|
} |
16 |
|
|
17 |
< |
void TrackAnalyzer::Process(const edm::Event& iEvent, TClonesArray* rootTracks) |
17 |
> |
bool TrackAnalyzer::process(const edm::Event& iEvent, TClonesArray* rootTracks) |
18 |
|
{ |
19 |
|
|
20 |
< |
edm::Handle<reco::TrackCollection> recoTracks; |
21 |
< |
iEvent.getByLabel(trackProducer_, recoTracks); |
22 |
< |
if(verbosity_>1) std::cout << " Number of tracks = " << recoTracks->size() << " Label: " << trackProducer_.label() << " Instance: " << trackProducer_.instance() << std::endl; |
23 |
< |
|
24 |
< |
for (unsigned int j=0; j<recoTracks->size(); j++) |
25 |
< |
{ |
26 |
< |
const reco::HitPattern& hit = (*recoTracks)[j].hitPattern(); |
27 |
< |
|
28 |
< |
TRootTrack localTrack( |
29 |
< |
(*recoTracks)[j].px() |
30 |
< |
,(*recoTracks)[j].py() |
31 |
< |
,(*recoTracks)[j].pz() |
32 |
< |
,(*recoTracks)[j].p() |
33 |
< |
,(*recoTracks)[j].vx() |
34 |
< |
,(*recoTracks)[j].vy() |
35 |
< |
,(*recoTracks)[j].vz() |
36 |
< |
,0 |
37 |
< |
,(*recoTracks)[j].charge() |
38 |
< |
,hit.numberOfValidPixelHits() |
39 |
< |
,hit.numberOfValidTrackerHits() |
40 |
< |
,(*recoTracks)[j].chi2() |
41 |
< |
,(*recoTracks)[j].d0() |
42 |
< |
,(*recoTracks)[j].d0Error() |
43 |
< |
,(*recoTracks)[j].dz() |
44 |
< |
,(*recoTracks)[j].dzError() |
45 |
< |
); |
46 |
< |
|
47 |
< |
new( (*rootTracks)[j] ) TRootTrack(localTrack); |
48 |
< |
if(verbosity_>2) std::cout << " ["<< setw(3) << j << "] " << localTrack << std::endl; |
49 |
< |
} |
20 |
> |
edm::Handle<reco::TrackCollection> recoTracks; |
21 |
> |
try |
22 |
> |
{ |
23 |
> |
iEvent.getByLabel(trackProducer_, recoTracks); |
24 |
> |
int nTracks = recoTracks->size(); |
25 |
> |
if(verbosity_>1) std::cout << " Number of tracks = " << nTracks << " Label: " << trackProducer_.label() << " Instance: " << trackProducer_.instance() << std::endl; |
26 |
> |
} |
27 |
> |
catch (cms::Exception& exception) |
28 |
> |
{ |
29 |
> |
if ( !allowMissingCollection_ ) |
30 |
> |
{ |
31 |
> |
cout << " ##### ERROR IN TrackAnalyzer::process => Track collection is missing #####"<<endl; |
32 |
> |
throw exception; |
33 |
> |
} |
34 |
> |
if(verbosity_>1) cout << " ===> No Track collection, skip track info" << endl; |
35 |
> |
return false; |
36 |
> |
} |
37 |
> |
|
38 |
> |
for (unsigned int j=0; j<recoTracks->size(); j++) |
39 |
> |
{ |
40 |
> |
const reco::HitPattern& hit = (*recoTracks)[j].hitPattern(); |
41 |
> |
|
42 |
> |
TRootTrack localTrack( |
43 |
> |
(*recoTracks)[j].px() |
44 |
> |
,(*recoTracks)[j].py() |
45 |
> |
,(*recoTracks)[j].pz() |
46 |
> |
,(*recoTracks)[j].p() |
47 |
> |
,(*recoTracks)[j].vx() |
48 |
> |
,(*recoTracks)[j].vy() |
49 |
> |
,(*recoTracks)[j].vz() |
50 |
> |
,0 |
51 |
> |
,(*recoTracks)[j].charge() |
52 |
> |
,hit.pixelLayersWithMeasurement() |
53 |
> |
,hit.stripLayersWithMeasurement() |
54 |
> |
,(*recoTracks)[j].chi2() |
55 |
> |
,(*recoTracks)[j].d0() |
56 |
> |
,(*recoTracks)[j].d0Error() |
57 |
> |
,(*recoTracks)[j].dz() |
58 |
> |
,(*recoTracks)[j].dzError() |
59 |
> |
); |
60 |
> |
|
61 |
> |
new( (*rootTracks)[j] ) TRootTrack(localTrack); |
62 |
> |
if(verbosity_>2) std::cout << " ["<< setw(3) << j << "] " << localTrack << std::endl; |
63 |
> |
} |
64 |
|
|
65 |
+ |
return true; |
66 |
|
} |