ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Jeng/PVStudy/plugins/LhcTrackAnalyzer.cc
Revision: 1.1
Committed: Thu Oct 8 14:57:59 2009 UTC (15 years, 7 months ago) by yygao
Content type: text/plain
Branch: MAIN
CVS Tags: PASPlot_27Feb2010, CMSSW_3_3_6_patch3_Dec19thReReco, V00-01-01, V00-01-00, CMSSW_3_1_2_PileUp_v2, CMSSW_3_1_2_PileUp_v1, V00-00-00, CMSSW_3_1_2_20091015, CMSSW_3_1_2_Yanyan
Branch point for: CMSSW_3_1_2_RecoVtxMatch
Log Message:
Add simple track paramter analyzer (not used in pvtx study)

File Contents

# Content
1 // -*- C++ -*-
2 //
3 // Package: LhcTrackAnalyzer
4 // Class: LhcTrackAnalyzer
5 //
6 /**\class LhcTrackAnalyzer LhcTrackAnalyzer.cc MySub/LhcTrackAnalyzer/src/LhcTrackAnalyzer.cc
7
8 Description: <one line class summary>
9
10 Implementation:
11 <Notes on implementation>
12 */
13 //
14
15 // updated to 25/2/2009 5.30 pm
16
17 //
18 //
19
20 // system include files
21 #include <memory>
22
23
24 // user include files
25 #include "UserCode/PVStudy/interface/LhcTrackAnalyzer.h"
26 #include "FWCore/Framework/interface/Frameworkfwd.h"
27 #include "FWCore/Framework/interface/EDAnalyzer.h"
28
29 #include "SimDataFormats/EncodedEventId/interface/EncodedEventId.h"
30 #include "FWCore/Framework/interface/Event.h"
31 #include <FWCore/Framework/interface/ESHandle.h>
32 #include "FWCore/Framework/interface/MakerMacros.h"
33
34 #include "FWCore/ParameterSet/interface/ParameterSet.h"
35
36
37 #include <SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h>
38 #include <SimDataFormats/TrackingHit/interface/PSimHit.h>
39
40 #include "TH1F.h"
41 #include "TH2F.h"
42 #include "TFile.h"
43 #include "TROOT.h"
44 #include "TChain.h"
45 #include "TNtuple.h"
46 #include "FWCore/ServiceRegistry/interface/Service.h"
47 #include "PhysicsTools/UtilAlgos/interface/TFileService.h"
48 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
49 #include <Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h>
50 #include <DataFormats/GeometrySurface/interface/Surface.h>
51 #include <DataFormats/GeometrySurface/interface/GloballyPositioned.h>
52 #include <Geometry/CommonDetUnit/interface/GeomDet.h>
53 #include "MagneticField/Engine/interface/MagneticField.h"
54 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
55
56 #include "DataFormats/TrackReco/interface/Track.h"
57 #include "DataFormats/TrackReco/interface/TrackFwd.h"
58
59 // Constructor
60
61 LhcTrackAnalyzer::LhcTrackAnalyzer(const edm::ParameterSet& iConfig)
62
63 {
64 //now do what ever initialization is needed
65 debug_ = iConfig.getParameter<bool> ("Debug");
66 TrackCollectionTag_ = iConfig.getParameter<edm::InputTag>("TrackCollectionTag");
67 filename_ = iConfig.getParameter<std::string>("OutputFileName");
68 }
69
70 // Destructor
71 LhcTrackAnalyzer::~LhcTrackAnalyzer()
72 {
73
74 // do anything here that needs to be done at desctruction time
75 // (e.g. close files, deallocate resources etc.)
76
77 }
78
79
80 //
81 // member functions
82 //
83
84 // ------------ method called to for each event ------------
85 void
86 LhcTrackAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
87 {
88 using namespace edm;
89 using namespace reco;
90 using namespace std;
91
92 //=======================================================
93 // Initialize Root-tuple variables
94 //=======================================================
95
96 SetVarToZero();
97
98 //=======================================================
99 // Retrieve the Track information
100 //=======================================================
101
102 Handle< TrackCollection> trackCollectionHandle;
103 iEvent.getByLabel(TrackCollectionTag_, trackCollectionHandle);
104
105 if(debug_)
106 cout<<"LhcTrackAnalyzer::analyze() looping over "<< trackCollectionHandle->size()<< "tracks." << endl;
107 unsigned int i = 0;
108 for(TrackCollection::const_iterator track = trackCollectionHandle->begin(); track!= trackCollectionHandle->end(); ++track, ++i)
109 {
110 if ( nTracks_ >= nMaxtracks_ ) {
111 std::cout << " LhcTrackAnalyzer::analyze() : Warning - Number of tracks: " << nTracks_ << " , greater than " << nMaxtracks_ << std::endl;
112 continue;
113 }
114 pt_[nTracks_] = track->pt();
115 eta_[nTracks_] = track->eta();
116 phi_[nTracks_] = track->phi();
117 chi2_[nTracks_] = track->chi2();
118 chi2ndof_[nTracks_] = track->normalizedChi2();
119 charge_[nTracks_] = track->charge();
120 qoverp_[nTracks_] = track->qoverp();
121 dz_[nTracks_] = track->dz();
122 dxy_[nTracks_] = track->dxy();
123 xPCA_[nTracks_] = track->vertex().x();
124 yPCA_[nTracks_] = track->vertex().y();
125 zPCA_[nTracks_] = track->vertex().z();
126 ++nTracks_;
127
128 if(debug_)
129 cout<< "Track "<<i<<" : pT = "<<track->pt()<<endl;
130 }
131 rootTree_->Fill();
132 }
133
134
135 // ------------ method called once each job before begining the event loop ------------
136 void LhcTrackAnalyzer::beginJob(const edm::EventSetup&)
137 {
138 edm::LogInfo("beginJob") << "Begin Job" << std::endl;
139 // Define TTree for output
140 rootFile_ = new TFile(filename_.c_str(),"recreate");
141 rootTree_ = new TTree("tree","Lhc Track tree");
142
143 // Track Paramters
144 rootTree_->Branch("nTracks",&nTracks_,"nTracks/I");
145 rootTree_->Branch("pt",&pt_,"pt[nTracks]/D");
146 rootTree_->Branch("eta",&eta_,"eta[nTracks]/D");
147 rootTree_->Branch("phi",&phi_,"phi[nTracks]/D");
148 rootTree_->Branch("chi2",&chi2_,"chi2[nTracks]/D");
149 rootTree_->Branch("chi2ndof",&chi2ndof_,"chi2ndof[nTracks]/D");
150 rootTree_->Branch("charge",&charge_,"charge[nTracks]/I");
151 rootTree_->Branch("qoverp",&qoverp_,"qoverp[nTracks]/D");
152 rootTree_->Branch("dz",&dz_,"dz[nTracks]/D");
153 rootTree_->Branch("dxy",&dxy_,"dxy[nTracks]/D");
154 rootTree_->Branch("xPCA",&xPCA_,"xPCA[nTracks]/D");
155 rootTree_->Branch("yPCA",&yPCA_,"yPCA[nTracks]/D");
156 rootTree_->Branch("zPCA",&zPCA_,"zPCA[nTracks]/D");
157
158 }
159
160 // ------------ method called once each job just after ending the event loop ------------
161 void LhcTrackAnalyzer::endJob()
162 {
163 if ( rootFile_ ) {
164 rootFile_->Write();
165 rootFile_->Close();
166 }
167
168
169
170 }
171
172 void LhcTrackAnalyzer::SetVarToZero() {
173
174 nTracks_ = 0;
175 for ( int i=0; i<nMaxtracks_; ++i ) {
176 pt_[i] = 0;
177 eta_[i] = 0;
178 phi_[i] = 0;
179 chi2_[i] = 0;
180 chi2ndof_[i] = 0;
181 charge_[i] = 0;
182 qoverp_[i] = 0;
183 dz_[i] = 0;
184 dxy_[i] = 0;
185 xPCA_[i] = 0;
186 yPCA_[i] = 0;
187 zPCA_[i] = 0;
188 }
189
190
191 }
192
193 //define this as a plug-in
194 //DEFINE_FWK_MODULE(LhcTrackAnalyzer);