ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/src/TrackAnalyzer.cc
(Generate patch)

Comparing UserCode/Morgan/src/TrackAnalyzer.cc (file contents):
Revision 1.1 by lethuill, Wed Nov 19 19:08:16 2008 UTC vs.
Revision 1.4 by lethuill, Wed Jun 10 11:17:06 2009 UTC

# Line 1 | Line 1
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   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines