ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/src/TrackAnalyzer.cc
Revision: 1.4
Committed: Wed Jun 10 11:17:06 2009 UTC (15 years, 10 months ago) by lethuill
Content type: text/plain
Branch: MAIN
CVS Tags: all_3_3_2_01, all_3_2_5_02, all_3_2_5_01, all_2_2_9_03, all_2_2_9_02, all_2_2_9_01, HEAD
Branch point for: CMSSW_2_2_X_br
Changes since 1.3: +48 -37 lines
Log Message:
Better protection against missing collection / Cleaning data format selection / Last iteration for migration to PAT of Photons

File Contents

# Content
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, int verbosity):verbosity_(verbosity)
8 {
9 trackProducer_ = producersNames.getParameter<edm::InputTag>("trackProducer");
10 allowMissingCollection_ = producersNames.getUntrackedParameter<bool>("allowMissingCollection", false);
11 }
12
13 TrackAnalyzer::~TrackAnalyzer()
14 {
15 }
16
17 bool TrackAnalyzer::process(const edm::Event& iEvent, TClonesArray* rootTracks)
18 {
19
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 }