ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillTracks.cc
Revision: 1.1
Committed: Thu Jun 5 16:07:11 2008 UTC (16 years, 11 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Log Message:
added basic tree fillers for tracks, muons, electrons, updated example

File Contents

# User Rev Content
1 bendavid 1.1 // $Id$
2    
3     #include "MitProd/TreeFiller/interface/FillTracks.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "FWCore/Framework/interface/ESHandle.h"
6     #include "DataFormats/Common/interface/Handle.h"
7     #include "FWCore/ServiceRegistry/interface/Service.h"
8    
9     #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
10     #include "DataFormats/TrackReco/interface/Track.h"
11     #include "DataFormats/TrackReco/interface/TrackFwd.h"
12     #include "MitAna/DataTree/interface/Names.h"
13    
14     #include "TLorentzVector.h"
15    
16     using namespace std;
17     using namespace edm;
18     using namespace mithep;
19    
20     //-------------------------------------------------------------------------------------------------
21     FillTracks::FillTracks(const edm::ParameterSet &iConfig)
22     : trackSource_(iConfig.getUntrackedParameter<string>("trackSource" , "generalTracks")),
23     trackBranch_(iConfig.getUntrackedParameter<string>("trackBrname", Names::gkTrackBrn))
24     {
25     tracks_ = new mithep::Vector<mithep::Track>();
26     }
27    
28     //-------------------------------------------------------------------------------------------------
29     FillTracks::~FillTracks()
30     {
31     cout << " Filltracks done " <<endl;
32     }
33    
34     //-------------------------------------------------------------------------------------------------
35     void FillTracks::analyze(const edm::Event &theEvent,
36     const edm::EventSetup &iSetup)
37     {
38     tracks_->Reset();
39    
40     Handle<reco::TrackCollection> theTrackProduct;
41     try {
42     theEvent.getByLabel(trackSource_, theTrackProduct);
43     } catch (cms::Exception& ex) {
44     edm::LogError("FillTracks") << "Error! Can not get collection with label "
45     << trackSource_ << endl;
46     throw edm::Exception(edm::errors::Configuration, "FillTracks:analyze()\n")
47     << "Error! Can not get collection with label " << trackSource_ << endl;
48     }
49    
50     const reco::TrackCollection Tracks = *(theTrackProduct.product());
51    
52     int nTracks = 0;
53     for (reco::TrackCollection::const_iterator inTrack =
54     Tracks.begin();
55     inTrack != Tracks.end(); ++inTrack) {
56    
57     mithep::Track* outTrack = new mithep::Track(inTrack->phi(),inTrack->d0(),inTrack->pt(),inTrack->dz(),inTrack->theta());
58    
59     outTrack->SetErrors(inTrack->phiError(),inTrack->d0Error(),inTrack->ptError(),inTrack->dzError(),inTrack->thetaError());
60     outTrack->SetCharge(inTrack->charge());
61    
62    
63     tracks_->Add(outTrack);
64     nTracks++;
65     }
66    
67     }
68    
69     //-------------------------------------------------------------------------------------------------
70     void FillTracks::beginJob(edm::EventSetup const &iEvent)
71     {
72     Service<TreeService> ts;
73     TreeWriter *tws = ts->get();
74     if(!tws) {
75     throw edm::Exception(edm::errors::Configuration, "FillTracks::beginJob()\n")
76     << "Could not get pointer to Tree with name " << tws->GetName() << "\n";
77     return;
78     }
79    
80     tws->AddBranch(trackBranch_.c_str(),&tracks_);
81     }
82    
83     //-------------------------------------------------------------------------------------------------
84     void FillTracks::endJob()
85     {
86     edm::LogInfo("FillMuons::endJob") << "Ending Job" << endl;
87     }