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

# User Rev Content
1 lethuill 1.2 #include "../interface/TrackAnalyzer.h"
2 lethuill 1.1
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 lethuill 1.4 trackProducer_ = producersNames.getParameter<edm::InputTag>("trackProducer");
10     allowMissingCollection_ = producersNames.getUntrackedParameter<bool>("allowMissingCollection", false);
11 lethuill 1.1 }
12    
13     TrackAnalyzer::~TrackAnalyzer()
14     {
15     }
16    
17 lethuill 1.4 bool TrackAnalyzer::process(const edm::Event& iEvent, TClonesArray* rootTracks)
18 lethuill 1.1 {
19    
20 lethuill 1.4 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 lethuill 1.1
65 lethuill 1.4 return true;
66 lethuill 1.1 }