CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TrackAnalyzer.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * $Date: 2010/11/23 19:20:31 $
5  * $Revision: 1.15 $
6  * \author Suchandra Dutta , Giorgia Mila
7  */
8 
15 
20 #include <string>
21 #include "TMath.h"
22 
24  : conf_( iConfig )
25  , doTrackerSpecific_( conf_.getParameter<bool>("doTrackerSpecific") )
26  , doAllPlots_( conf_.getParameter<bool>("doAllPlots") )
27  , doBSPlots_ ( conf_.getParameter<bool>("doBeamSpotPlots") )
28  , doGoodTrackPlots_ ( conf_.getParameter<bool>("doGoodTrackPlots") )
29  , NumberOfRecHitsPerTrack(NULL)
30  , NumberOfRecHitsFoundPerTrack(NULL)
31  , NumberOfRecHitsLostPerTrack(NULL)
32  , NumberOfLayersPerTrack(NULL)
33  , Chi2(NULL)
34  , Chi2Prob(NULL)
35  , Chi2oNDF(NULL)
36  , DistanceOfClosestApproach(NULL)
37  , DistanceOfClosestApproachToBS(NULL)
38  , DistanceOfClosestApproachVsTheta(NULL)
39  , DistanceOfClosestApproachVsPhi(NULL)
40  , DistanceOfClosestApproachToBSVsPhi(NULL)
41  , DistanceOfClosestApproachVsEta(NULL)
42  , xPointOfClosestApproach(NULL)
43  , xPointOfClosestApproachVsZ0(NULL)
44  , yPointOfClosestApproach(NULL)
45  , yPointOfClosestApproachVsZ0(NULL)
46  , zPointOfClosestApproach(NULL)
47 
48  , NumberOfTOBRecHitsPerTrack(NULL)
49  , NumberOfTOBRecHitsPerTrackVsPhiProfile(NULL)
50  , NumberOfTOBRecHitsPerTrackVsEtaProfile(NULL)
51  , NumberOfTOBLayersPerTrack(NULL)
52  , NumberOfTOBLayersPerTrackVsPhiProfile(NULL)
53  , NumberOfTOBLayersPerTrackVsEtaProfile(NULL)
54 
55  , NumberOfTIBRecHitsPerTrack(NULL)
56  , NumberOfTIBRecHitsPerTrackVsPhiProfile(NULL)
57  , NumberOfTIBRecHitsPerTrackVsEtaProfile(NULL)
58  , NumberOfTIBLayersPerTrack(NULL)
59  , NumberOfTIBLayersPerTrackVsPhiProfile(NULL)
60  , NumberOfTIBLayersPerTrackVsEtaProfile(NULL)
61 
62  , NumberOfTIDRecHitsPerTrack(NULL)
63  , NumberOfTIDRecHitsPerTrackVsPhiProfile(NULL)
64  , NumberOfTIDRecHitsPerTrackVsEtaProfile(NULL)
65  , NumberOfTIDLayersPerTrack(NULL)
66  , NumberOfTIDLayersPerTrackVsPhiProfile(NULL)
67  , NumberOfTIDLayersPerTrackVsEtaProfile(NULL)
68 
69  , NumberOfTECRecHitsPerTrack(NULL)
70  , NumberOfTECRecHitsPerTrackVsPhiProfile(NULL)
71  , NumberOfTECRecHitsPerTrackVsEtaProfile(NULL)
72  , NumberOfTECLayersPerTrack(NULL)
73  , NumberOfTECLayersPerTrackVsPhiProfile(NULL)
74  , NumberOfTECLayersPerTrackVsEtaProfile(NULL)
75 
76  , NumberOfPixBarrelRecHitsPerTrack(NULL)
77  , NumberOfPixBarrelRecHitsPerTrackVsPhiProfile(NULL)
78  , NumberOfPixBarrelRecHitsPerTrackVsEtaProfile(NULL)
79  , NumberOfPixBarrelLayersPerTrack(NULL)
80  , NumberOfPixBarrelLayersPerTrackVsPhiProfile(NULL)
81  , NumberOfPixBarrelLayersPerTrackVsEtaProfile(NULL)
82 
83  , NumberOfPixEndcapRecHitsPerTrack(NULL)
84  , NumberOfPixEndcapRecHitsPerTrackVsPhiProfile(NULL)
85  , NumberOfPixEndcapRecHitsPerTrackVsEtaProfile(NULL)
86  , NumberOfPixEndcapLayersPerTrack(NULL)
87  , NumberOfPixEndcapLayersPerTrackVsPhiProfile(NULL)
88  , NumberOfPixEndcapLayersPerTrackVsEtaProfile(NULL)
89 
90  , GoodTrackChi2oNDF(NULL)
91  , GoodTrackNumberOfRecHitsPerTrack(NULL)
92 
93 {
94 
95  // std::cout << "TrackAnalyzer::TrackAnalyzer() - doGoodTrackPlots_ = " << doGoodTrackPlots_ << std::endl;
96 
97 }
98 
100 {
101 }
102 
104 {
105 
106  // parameters from the configuration
107  std::string QualName = conf_.getParameter<std::string>("Quality");
108  std::string AlgoName = conf_.getParameter<std::string>("AlgoName");
109  std::string MEFolderName = conf_.getParameter<std::string>("FolderName");
110  std::string MEBSFolderName = conf_.getParameter<std::string>("BSFolderName");
111 
112  // use the AlgoName and Quality Name
113  std::string CatagoryName = QualName != "" ? AlgoName + "_" + QualName : AlgoName;
114 
115  // get binning from the configuration
116  int TKHitBin = conf_.getParameter<int>( "RecHitBin");
117  double TKHitMin = conf_.getParameter<double>("RecHitMin");
118  double TKHitMax = conf_.getParameter<double>("RecHitMax");
119 
120  int TKLostBin = conf_.getParameter<int>( "RecLostBin");
121  double TKLostMin = conf_.getParameter<double>("RecLostMin");
122  double TKLostMax = conf_.getParameter<double>("RecLostMax");
123 
124  int TKLayBin = conf_.getParameter<int>( "RecLayBin");
125  double TKLayMin = conf_.getParameter<double>("RecLayMin");
126  double TKLayMax = conf_.getParameter<double>("RecLayMax");
127 
128  int Chi2Bin = conf_.getParameter<int>( "Chi2Bin");
129  double Chi2Min = conf_.getParameter<double>("Chi2Min");
130  double Chi2Max = conf_.getParameter<double>("Chi2Max");
131 
132  int Chi2NDFBin = conf_.getParameter<int>( "Chi2NDFBin");
133  double Chi2NDFMin = conf_.getParameter<double>("Chi2NDFMin");
134  double Chi2NDFMax = conf_.getParameter<double>("Chi2NDFMax");
135 
136  int Chi2ProbBin = conf_.getParameter<int>( "Chi2ProbBin");
137  double Chi2ProbMin = conf_.getParameter<double>("Chi2ProbMin");
138  double Chi2ProbMax = conf_.getParameter<double>("Chi2ProbMax");
139 
140  int PhiBin = conf_.getParameter<int>( "PhiBin");
141  double PhiMin = conf_.getParameter<double>("PhiMin");
142  double PhiMax = conf_.getParameter<double>("PhiMax");
143 
144  int EtaBin = conf_.getParameter<int>( "EtaBin");
145  double EtaMin = conf_.getParameter<double>("EtaMin");
146  double EtaMax = conf_.getParameter<double>("EtaMax");
147 
148  int ThetaBin = conf_.getParameter<int>( "ThetaBin");
149  double ThetaMin = conf_.getParameter<double>("ThetaMin");
150  double ThetaMax = conf_.getParameter<double>("ThetaMax");
151 
152  int DxyBin = conf_.getParameter<int>( "DxyBin");
153  double DxyMin = conf_.getParameter<double>("DxyMin");
154  double DxyMax = conf_.getParameter<double>("DxyMax");
155 
156  int VXBin = conf_.getParameter<int>( "VXBin");
157  double VXMin = conf_.getParameter<double>("VXMin");
158  double VXMax = conf_.getParameter<double>("VXMax");
159 
160  int VYBin = conf_.getParameter<int>( "VYBin");
161  double VYMin = conf_.getParameter<double>("VYMin");
162  double VYMax = conf_.getParameter<double>("VYMax");
163 
164  int VZBin = conf_.getParameter<int>( "VZBin");
165  double VZMin = conf_.getParameter<double>("VZMin");
166  double VZMax = conf_.getParameter<double>("VZMax");
167 
168  int X0Bin = conf_.getParameter<int>( "X0Bin");
169  double X0Min = conf_.getParameter<double>("X0Min");
170  double X0Max = conf_.getParameter<double>("X0Max");
171 
172  int Y0Bin = conf_.getParameter<int>( "Y0Bin");
173  double Y0Min = conf_.getParameter<double>("Y0Min");
174  double Y0Max = conf_.getParameter<double>("Y0Max");
175 
176  int Z0Bin = conf_.getParameter<int>( "Z0Bin");
177  double Z0Min = conf_.getParameter<double>("Z0Min");
178  double Z0Max = conf_.getParameter<double>("Z0Max");
179 
180  dqmStore_->setCurrentFolder(MEFolderName);
181 
182  // book the Hit Property histograms
183  // ---------------------------------------------------------------------------------//
184  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties");
185 
186  histname = "NumberOfRecHitsPerTrack_";
187  NumberOfRecHitsPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
188  NumberOfRecHitsPerTrack->setAxisTitle("Number of RecHits of each Track");
189  NumberOfRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
190 
191  histname = "NumberOfRecHitsFoundPerTrack_";
192  NumberOfRecHitsFoundPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
193  NumberOfRecHitsFoundPerTrack->setAxisTitle("Number of RecHits found for each Track");
194  NumberOfRecHitsFoundPerTrack->setAxisTitle("Number of Tracks", 2);
195 
196  histname = "NumberOfRecHitsLostPerTrack_";
197  NumberOfRecHitsLostPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKLostBin, TKLostMin, TKLostMax);
198  NumberOfRecHitsLostPerTrack->setAxisTitle("Number of RecHits lost for each Track");
199  NumberOfRecHitsLostPerTrack->setAxisTitle("Number of Tracks", 2);
200 
201  histname = "NumberOfLayersPerTrack_";
202  NumberOfLayersPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKLayBin, TKLayMin, TKLayMax);
203  NumberOfLayersPerTrack->setAxisTitle("Number of Layers of each Track", 1);
204  NumberOfLayersPerTrack->setAxisTitle("Number of Tracks", 2);
205 
206  // book the General Property histograms
207  // ---------------------------------------------------------------------------------//
208  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
209 
210  histname = "Chi2_";
211  Chi2 = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2Bin, Chi2Min, Chi2Max);
212  Chi2->setAxisTitle("Track #chi^{2}" ,1);
213  Chi2->setAxisTitle("Number of Tracks",2);
214 
215  histname = "Chi2Prob_";
216  Chi2Prob = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2ProbBin, Chi2ProbMin, Chi2ProbMax);
217  Chi2Prob->setAxisTitle("Track #chi^{2} probability",1);
218  Chi2Prob->setAxisTitle("Number of Tracks" ,2);
219 
220  histname = "Chi2oNDF_";
221  Chi2oNDF = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2NDFBin, Chi2NDFMin, Chi2NDFMax);
222  Chi2oNDF->setAxisTitle("Track #chi^{2}/ndf",1);
223  Chi2oNDF->setAxisTitle("Number of Tracks" ,2);
224 
225  histname = "DistanceOfClosestApproach_";
226  DistanceOfClosestApproach = dqmStore_->book1D(histname+CatagoryName,histname+CatagoryName,DxyBin,DxyMin,DxyMax);
227  DistanceOfClosestApproach->setAxisTitle("Track d_{xy} wrt (0,0,0) (cm)",1);
228  DistanceOfClosestApproach->setAxisTitle("Number of Tracks",2);
229 
230  histname = "DistanceOfClosestApproachVsPhi_";
231  DistanceOfClosestApproachVsPhi = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, PhiBin, PhiMin, PhiMax, DxyMin,DxyMax,"");
232  DistanceOfClosestApproachVsPhi->getTH1()->SetBit(TH1::kCanRebin);
234  DistanceOfClosestApproachVsPhi->setAxisTitle("Track d_{xy} wrt (0,0,0) (cm)",2);
235 
236  histname = "xPointOfClosestApproach_";
237  xPointOfClosestApproach = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, VXBin, VXMin, VXMax);
238  xPointOfClosestApproach->setAxisTitle("x component of Track PCA to beam line (cm)",1);
239  xPointOfClosestApproach->setAxisTitle("Number of Tracks",2);
240 
241  histname = "yPointOfClosestApproach_";
242  yPointOfClosestApproach = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, VYBin, VYMin, VYMax);
243  yPointOfClosestApproach->setAxisTitle("y component of Track PCA to beam line (cm)",1);
244  yPointOfClosestApproach->setAxisTitle("Number of Tracks",2);
245 
246  histname = "zPointOfClosestApproach_";
247  zPointOfClosestApproach = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, VZBin, VZMin, VZMax);
248  zPointOfClosestApproach->setAxisTitle("z component of Track PCA to beam line (cm)",1);
249  zPointOfClosestApproach->setAxisTitle("Number of Tracks",2);
250 
251  // See DataFormats/TrackReco/interface/TrackBase.h for track algorithm enum definition
252  histname = "algorithm_";
253  algorithm = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, 32, 0., 32.);
254  algorithm->setAxisTitle("Tracking algorithm",1);
255  algorithm->setAxisTitle("Number of Tracks",2);
256 
257  // book the Beam Spot related histograms
258  // ---------------------------------------------------------------------------------//
259  if(doBSPlots_)
260  {
261  dqmStore_->setCurrentFolder(MEBSFolderName);
262 
263  histname = "DistanceOfClosestApproachToBS_";
264  DistanceOfClosestApproachToBS = dqmStore_->book1D(histname+CatagoryName,histname+CatagoryName,DxyBin,DxyMin,DxyMax);
265  DistanceOfClosestApproachToBS->setAxisTitle("Track d_{xy} wrt beam spot (cm)",1);
266  DistanceOfClosestApproachToBS->setAxisTitle("Number of Tracks",2);
267 
268  histname = "DistanceOfClosestApproachToBSVsPhi_";
269  DistanceOfClosestApproachToBSVsPhi = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, PhiBin, PhiMin, PhiMax, DxyBin, DxyMin, DxyMax,"");
270  DistanceOfClosestApproachToBSVsPhi->getTH1()->SetBit(TH1::kCanRebin);
272  DistanceOfClosestApproachToBSVsPhi->setAxisTitle("Track d_{xy} wrt beam spot (cm)",2);
273 
274  histname = "xPointOfClosestApproachVsZ0_";
275  xPointOfClosestApproachVsZ0 = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, Z0Bin, Z0Min, Z0Max, X0Bin, X0Min, X0Max,"");
276  xPointOfClosestApproachVsZ0->setAxisTitle("d_{z} (cm)",1);
277  xPointOfClosestApproachVsZ0->setAxisTitle("x component of Track PCA to beam line (cm)",2);
278 
279  histname = "yPointOfClosestApproachVsZ0_";
280  yPointOfClosestApproachVsZ0 = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, Z0Bin, Z0Min, Z0Max, Y0Bin, Y0Min, Y0Max,"");
281  yPointOfClosestApproachVsZ0->setAxisTitle("d_{z} (cm)",1);
282  yPointOfClosestApproachVsZ0->setAxisTitle("y component of Track PCA to beam line (cm)",2);
283  }
284 
285  // book the Profile plots for DCA related histograms
286  // ---------------------------------------------------------------------------------//
287  if(doAllPlots_)
288  {
289  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
290  histname = "DistanceOfClosestApproachVsTheta_";
291  DistanceOfClosestApproachVsTheta = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, ThetaBin, ThetaMin, ThetaMax, DxyMin,DxyMax,"");
293  DistanceOfClosestApproachVsTheta->setAxisTitle("Track d_{xy} wrt (0,0,0) (cm)",2);
294 
295  histname = "DistanceOfClosestApproachVsEta_";
296  DistanceOfClosestApproachVsEta = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, EtaBin, EtaMin, EtaMax, DxyMin, DxyMax,"");
298  DistanceOfClosestApproachVsEta->setAxisTitle("Track d_{xy} wrt (0,0,0) (cm)",2);
299  }
300 
301  // book tracker specific related histograms
302  // ---------------------------------------------------------------------------------//
303  if(doTrackerSpecific_)
304  {
306  }
307 
308  // book state related histograms
309  // ---------------------------------------------------------------------------------//
310  std::string StateName = conf_.getParameter<std::string>("MeasurementState");
311 
312  if (StateName == "All")
313  {
314  bookHistosForState("OuterSurface", dqmStore_);
315  bookHistosForState("InnerSurface", dqmStore_);
316  bookHistosForState("ImpactPoint" , dqmStore_);
317  }
318  else if
319  (
320  StateName != "OuterSurface" &&
321  StateName != "InnerSurface" &&
322  StateName != "ImpactPoint" &&
323  StateName != "default"
324  )
325  {
326  bookHistosForState("default", dqmStore_);
327  }
328  else
329  {
330  bookHistosForState(StateName, dqmStore_);
331  }
332 
333  // book histos for good tracks (HP + Pt>1GeV)
334  // ---------------------------------------------------------------------------------//
335 
336  if ( doGoodTrackPlots_ ) {
337 
338  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
339 
340  histname = "GoodTrackChi2oNDF_";
341  GoodTrackChi2oNDF = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2NDFBin, Chi2NDFMin, Chi2NDFMax);
342  GoodTrackChi2oNDF->setAxisTitle("Good Track #chi^{2}/ndf",1);
343  GoodTrackChi2oNDF->setAxisTitle("Number of Tracks" ,2);
344 
345  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties");
346 
347  histname = "GoodTrackNumberOfRecHitsPerTrack_";
348  GoodTrackNumberOfRecHitsPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
349  GoodTrackNumberOfRecHitsPerTrack->setAxisTitle("Number of RecHits of each Good Track");
350  GoodTrackNumberOfRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
351 
352  }
353 
354 }
355 
356 // -- Analyse
357 // ---------------------------------------------------------------------------------//
358 void TrackAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup, const reco::Track& track)
359 {
360 
361  // rec hits
365 
366  // layters
368 
369  // fitting
370  Chi2->Fill(track.chi2());
371  Chi2Prob->Fill(TMath::Prob(track.chi2(),(int)track.ndof()));
372  Chi2oNDF->Fill(track.normalizedChi2());
373 
374  // PCA
376  DistanceOfClosestApproachVsPhi->Fill(track.phi(), track.dxy());
377  xPointOfClosestApproach->Fill(track.vertex().x());
378  yPointOfClosestApproach->Fill(track.vertex().y());
379  zPointOfClosestApproach->Fill(track.vertex().z());
380 
381  // algorithm
382  algorithm->Fill(static_cast<double>(track.algo()));
383 
384  if(doBSPlots_)
385  {
386  edm::InputTag bsSrc = conf_.getParameter< edm::InputTag >("beamSpot");
387 
388  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
389  iEvent.getByLabel(bsSrc,recoBeamSpotHandle);
390  reco::BeamSpot bs = *recoBeamSpotHandle;
391 
393  DistanceOfClosestApproachToBSVsPhi->Fill(track.phi(), track.dxy(bs.position()));
394  xPointOfClosestApproachVsZ0->Fill(track.dz(),track.vx());
395  yPointOfClosestApproachVsZ0->Fill(track.dz(),track.vy());
396  }
397 
398  if(doAllPlots_)
399  {
400  DistanceOfClosestApproachVsTheta->Fill(track.theta(), track.d0());
401  DistanceOfClosestApproachVsEta->Fill(track.eta(), track.d0());
402  }
403 
404  //Tracker Specific Histograms
405  if(doTrackerSpecific_)
406  {
408  }
409 
410  std::string StateName = conf_.getParameter<std::string>("MeasurementState");
411  if (StateName == "All")
412  {
413  fillHistosForState(iSetup, track, std::string("OuterSurface"));
414  fillHistosForState(iSetup, track, std::string("InnerSurface"));
415  fillHistosForState(iSetup, track, std::string("ImpactPoint"));
416  }
417  else if
418  (
419  StateName != "OuterSurface" &&
420  StateName != "InnerSurface" &&
421  StateName != "ImpactPoint" &&
422  StateName != "default"
423  )
424  {
425  fillHistosForState(iSetup, track, std::string("default"));
426  }
427  else
428  {
429  fillHistosForState(iSetup, track, StateName);
430  }
431 
432  // Good Tracks plots
433 
434  if ( doGoodTrackPlots_ ) {
435  if ( track.quality(reco::TrackBase::highPurity) && track.pt() > 1. ) {
438  }
439  }
440 
441 }
442 
443 
444 // book histograms at differnt measurement points
445 // ---------------------------------------------------------------------------------//
446 void TrackAnalyzer::bookHistosForState(std::string sname, DQMStore * dqmStore_)
447 {
448 
449 
450  // parameters from the configuration
451  std::string QualName = conf_.getParameter<std::string>("Quality");
452  std::string AlgoName = conf_.getParameter<std::string>("AlgoName");
453  std::string MEFolderName = conf_.getParameter<std::string>("FolderName");
454 
455  // use the AlgoName and Quality Name
456  std::string CatagoryName = QualName != "" ? AlgoName + "_" + QualName : AlgoName;
457 
458  // get binning from the configuration
459  double Chi2NDFMin = conf_.getParameter<double>("Chi2NDFMin");
460  double Chi2NDFMax = conf_.getParameter<double>("Chi2NDFMax");
461 
462  int RecHitBin = conf_.getParameter<int>( "RecHitBin");
463  double RecHitMin = conf_.getParameter<double>("RecHitMin");
464  double RecHitMax = conf_.getParameter<double>("RecHitMax");
465 
466  int RecLayBin = conf_.getParameter<int>( "RecHitBin");
467  double RecLayMin = conf_.getParameter<double>("RecHitMin");
468  double RecLayMax = conf_.getParameter<double>("RecHitMax");
469 
470 
471  int PhiBin = conf_.getParameter<int>( "PhiBin");
472  double PhiMin = conf_.getParameter<double>("PhiMin");
473  double PhiMax = conf_.getParameter<double>("PhiMax");
474 
475  int EtaBin = conf_.getParameter<int>( "EtaBin");
476  double EtaMin = conf_.getParameter<double>("EtaMin");
477  double EtaMax = conf_.getParameter<double>("EtaMax");
478 
479  int ThetaBin = conf_.getParameter<int>( "ThetaBin");
480  double ThetaMin = conf_.getParameter<double>("ThetaMin");
481  double ThetaMax = conf_.getParameter<double>("ThetaMax");
482 
483  int TrackQBin = conf_.getParameter<int>( "TrackQBin");
484  double TrackQMin = conf_.getParameter<double>("TrackQMin");
485  double TrackQMax = conf_.getParameter<double>("TrackQMax");
486 
487  int TrackPtBin = conf_.getParameter<int>( "TrackPtBin");
488  double TrackPtMin = conf_.getParameter<double>("TrackPtMin");
489  double TrackPtMax = conf_.getParameter<double>("TrackPtMax");
490 
491  int TrackPBin = conf_.getParameter<int>( "TrackPBin");
492  double TrackPMin = conf_.getParameter<double>("TrackPMin");
493  double TrackPMax = conf_.getParameter<double>("TrackPMax");
494 
495  int TrackPxBin = conf_.getParameter<int>( "TrackPxBin");
496  double TrackPxMin = conf_.getParameter<double>("TrackPxMin");
497  double TrackPxMax = conf_.getParameter<double>("TrackPxMax");
498 
499  int TrackPyBin = conf_.getParameter<int>( "TrackPyBin");
500  double TrackPyMin = conf_.getParameter<double>("TrackPyMin");
501  double TrackPyMax = conf_.getParameter<double>("TrackPyMax");
502 
503  int TrackPzBin = conf_.getParameter<int>( "TrackPzBin");
504  double TrackPzMin = conf_.getParameter<double>("TrackPzMin");
505  double TrackPzMax = conf_.getParameter<double>("TrackPzMax");
506 
507  int ptErrBin = conf_.getParameter<int>( "ptErrBin");
508  double ptErrMin = conf_.getParameter<double>("ptErrMin");
509  double ptErrMax = conf_.getParameter<double>("ptErrMax");
510 
511  int pxErrBin = conf_.getParameter<int>( "pxErrBin");
512  double pxErrMin = conf_.getParameter<double>("pxErrMin");
513  double pxErrMax = conf_.getParameter<double>("pxErrMax");
514 
515  int pyErrBin = conf_.getParameter<int>( "pyErrBin");
516  double pyErrMin = conf_.getParameter<double>("pyErrMin");
517  double pyErrMax = conf_.getParameter<double>("pyErrMax");
518 
519  int pzErrBin = conf_.getParameter<int>( "pzErrBin");
520  double pzErrMin = conf_.getParameter<double>("pzErrMin");
521  double pzErrMax = conf_.getParameter<double>("pzErrMax");
522 
523  int pErrBin = conf_.getParameter<int>( "pErrBin");
524  double pErrMin = conf_.getParameter<double>("pErrMin");
525  double pErrMax = conf_.getParameter<double>("pErrMax");
526 
527  int phiErrBin = conf_.getParameter<int>( "phiErrBin");
528  double phiErrMin = conf_.getParameter<double>("phiErrMin");
529  double phiErrMax = conf_.getParameter<double>("phiErrMax");
530 
531  int etaErrBin = conf_.getParameter<int>( "etaErrBin");
532  double etaErrMin = conf_.getParameter<double>("etaErrMin");
533  double etaErrMax = conf_.getParameter<double>("etaErrMax");
534 
535 
536  dqmStore_->setCurrentFolder(MEFolderName);
537 
538  TkParameterMEs tkmes;
539 
540  std::string histTag = (sname == "default") ? CatagoryName : sname + "_" + CatagoryName;
541 
542  if(doAllPlots_)
543  {
544  // hit properties
545  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties");
546 
547  // rechits
548  histname = "NumberOfRecHitsPerTrackVsPhi_" + histTag;
549  tkmes.NumberOfRecHitsPerTrackVsPhi = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, RecHitMin, RecHitMax,"");
550  tkmes.NumberOfRecHitsPerTrackVsPhi->setAxisTitle("Track #phi",1);
551  tkmes.NumberOfRecHitsPerTrackVsPhi->setAxisTitle("Number of RecHits of each Track",2);
552 
553  histname = "NumberOfRecHitsPerTrackVsTheta_" + histTag;
554  tkmes.NumberOfRecHitsPerTrackVsTheta = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, RecHitMin, RecHitMax,"");
555  tkmes.NumberOfRecHitsPerTrackVsTheta->setAxisTitle("Track #theta",1);
556  tkmes.NumberOfRecHitsPerTrackVsTheta->setAxisTitle("Number of RecHits of each Track",2);
557 
558  histname = "NumberOfRecHitsPerTrackVsEta_" + histTag;
559  tkmes.NumberOfRecHitsPerTrackVsEta = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, RecHitMin, RecHitMax,"");
560  tkmes.NumberOfRecHitsPerTrackVsEta->setAxisTitle("Track #eta",1);
561  tkmes.NumberOfRecHitsPerTrackVsEta->setAxisTitle("Number of RecHits of each Track",2);
562 
563  histname = "NumberOfLayersPerTrackVsPhi_" + histTag;
564  tkmes.NumberOfLayersPerTrackVsPhi = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, RecLayMin, RecLayMax,"");
565  tkmes.NumberOfLayersPerTrackVsPhi->setAxisTitle("Track #phi",1);
566  tkmes.NumberOfLayersPerTrackVsPhi->setAxisTitle("Number of Layers of each Track",2);
567 
568  histname = "NumberOfLayersPerTrackVsTheta_" + histTag;
569  tkmes.NumberOfLayersPerTrackVsTheta = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, RecLayMin, RecLayMax,"");
570  tkmes.NumberOfLayersPerTrackVsTheta->setAxisTitle("Track #theta",1);
571  tkmes.NumberOfLayersPerTrackVsTheta->setAxisTitle("Number of Layers of each Track",2);
572 
573  histname = "NumberOfLayersPerTrackVsEta_" + histTag;
574  tkmes.NumberOfLayersPerTrackVsEta = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, RecLayMin, RecLayMax,"");
575  tkmes.NumberOfLayersPerTrackVsEta->setAxisTitle("Track #eta",1);
576  tkmes.NumberOfLayersPerTrackVsEta->setAxisTitle("Number of Layers of each Track",2);
577 
578  // general properties
579  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
580 
581  histname = "Chi2oNDFVsTheta_" + histTag;
582  tkmes.Chi2oNDFVsTheta = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, Chi2NDFMin, Chi2NDFMax,"");
583  tkmes.Chi2oNDFVsTheta->setAxisTitle("Track #theta",1);
584  tkmes.Chi2oNDFVsTheta->setAxisTitle("Track #chi^{2}/ndf",2);
585 
586  histname = "Chi2oNDFVsPhi_" + histTag;
587  tkmes.Chi2oNDFVsPhi = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, Chi2NDFMin, Chi2NDFMax,"");
588  tkmes.Chi2oNDFVsPhi->setAxisTitle("Track #phi",1);
589  tkmes.Chi2oNDFVsPhi->setAxisTitle("Track #chi^{2}/ndf",2);
590 
591  histname = "Chi2oNDFVsEta_" + histTag;
592  tkmes.Chi2oNDFVsEta = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, Chi2NDFMin, Chi2NDFMax,"");
593  tkmes.Chi2oNDFVsEta->setAxisTitle("Track #eta",1);
594  tkmes.Chi2oNDFVsEta->setAxisTitle("Track #chi^{2}/ndf",2);
595  }
596 
597  // general properties
598  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
599  histname = "TrackP_" + histTag;
600  tkmes.TrackP = dqmStore_->book1D(histname, histname, TrackPBin, TrackPMin, TrackPMax);
601  tkmes.TrackP->setAxisTitle("Track |p| (GeV/c)", 1);
602  tkmes.TrackP->setAxisTitle("Number of Tracks",2);
603 
604  histname = "TrackPt_" + histTag;
605  tkmes.TrackPt = dqmStore_->book1D(histname, histname, TrackPtBin, TrackPtMin, TrackPtMax);
606  tkmes.TrackPt->setAxisTitle("Track p_{T} (GeV/c)", 1);
607  tkmes.TrackPt->setAxisTitle("Number of Tracks",2);
608 
609  histname = "TrackPx_" + histTag;
610  tkmes.TrackPx = dqmStore_->book1D(histname, histname, TrackPxBin, TrackPxMin, TrackPxMax);
611  tkmes.TrackPx->setAxisTitle("Track p_{x} (GeV/c)", 1);
612  tkmes.TrackPx->setAxisTitle("Number of Tracks",2);
613 
614  histname = "TrackPy_" + histTag;
615  tkmes.TrackPy = dqmStore_->book1D(histname, histname, TrackPyBin, TrackPyMin, TrackPyMax);
616  tkmes.TrackPy->setAxisTitle("Track p_{y} (GeV/c)", 1);
617  tkmes.TrackPy->setAxisTitle("Number of Tracks",2);
618 
619  histname = "TrackPz_" + histTag;
620  tkmes.TrackPz = dqmStore_->book1D(histname, histname, TrackPzBin, TrackPzMin, TrackPzMax);
621  tkmes.TrackPz->setAxisTitle("Track p_{z} (GeV/c)", 1);
622  tkmes.TrackPz->setAxisTitle("Number of Tracks",2);
623 
624  histname = "TrackPhi_" + histTag;
625  tkmes.TrackPhi = dqmStore_->book1D(histname, histname, PhiBin, PhiMin, PhiMax);
626  tkmes.TrackPhi->setAxisTitle("Track #phi", 1);
627  tkmes.TrackPhi->setAxisTitle("Number of Tracks",2);
628 
629  histname = "TrackEta_" + histTag;
630  tkmes.TrackEta = dqmStore_->book1D(histname, histname, EtaBin, EtaMin, EtaMax);
631  tkmes.TrackEta->setAxisTitle("Track #eta", 1);
632  tkmes.TrackEta->setAxisTitle("Number of Tracks",2);
633 
634  histname = "TrackTheta_" + histTag;
635  tkmes.TrackTheta = dqmStore_->book1D(histname, histname, ThetaBin, ThetaMin, ThetaMax);
636  tkmes.TrackTheta->setAxisTitle("Track #theta", 1);
637  tkmes.TrackTheta->setAxisTitle("Number of Tracks",2);
638 
639  histname = "TrackQ_" + histTag;
640  tkmes.TrackQ = dqmStore_->book1D(histname, histname, TrackQBin, TrackQMin, TrackQMax);
641  tkmes.TrackQ->setAxisTitle("Track Charge", 1);
642  tkmes.TrackQ->setAxisTitle("Number of Tracks",2);
643 
644  histname = "TrackPErrOverP_" + histTag;
645  tkmes.TrackPErr = dqmStore_->book1D(histname, histname, pErrBin, pErrMin, pErrMax);
646  tkmes.TrackPErr->setAxisTitle("error(p)/p", 1);
647  tkmes.TrackPErr->setAxisTitle("Number of Tracks",2);
648 
649  histname = "TrackPtErrOverPt_" + histTag;
650  tkmes.TrackPtErr = dqmStore_->book1D(histname, histname, ptErrBin, ptErrMin, ptErrMax);
651  tkmes.TrackPtErr->setAxisTitle("error(p_{T})/p_{T}", 1);
652  tkmes.TrackPtErr->setAxisTitle("Number of Tracks",2);
653 
654  histname = "TrackPxErrOverPx_" + histTag;
655  tkmes.TrackPxErr = dqmStore_->book1D(histname, histname, pxErrBin, pxErrMin, pxErrMax);
656  tkmes.TrackPxErr->setAxisTitle("error(p_{x})/p_{x}", 1);
657  tkmes.TrackPxErr->setAxisTitle("Number of Tracks",2);
658 
659  histname = "TrackPyErrOverPy_" + histTag;
660  tkmes.TrackPyErr = dqmStore_->book1D(histname, histname, pyErrBin, pyErrMin, pyErrMax);
661  tkmes.TrackPyErr->setAxisTitle("error(p_{y})/p_{y}", 1);
662  tkmes.TrackPyErr->setAxisTitle("Number of Tracks",2);
663 
664  histname = "TrackPzErrOverPz_" + histTag;
665  tkmes.TrackPzErr = dqmStore_->book1D(histname, histname, pzErrBin, pzErrMin, pzErrMax);
666  tkmes.TrackPzErr->setAxisTitle("error(p_{z})/p_{z}", 1);
667  tkmes.TrackPzErr->setAxisTitle("Number of Tracks",2);
668 
669  histname = "TrackPhiErr_" + histTag;
670  tkmes.TrackPhiErr = dqmStore_->book1D(histname, histname, phiErrBin, phiErrMin, phiErrMax);
671  tkmes.TrackPhiErr->setAxisTitle("error(#theta)");
672  tkmes.TrackPhiErr->setAxisTitle("Number of Tracks",2);
673 
674  histname = "TrackEtaErr_" + histTag;
675  tkmes.TrackEtaErr = dqmStore_->book1D(histname, histname, etaErrBin, etaErrMin, etaErrMax);
676  tkmes.TrackEtaErr->setAxisTitle("error(#eta)");
677  tkmes.TrackEtaErr->setAxisTitle("Number of Tracks",2);
678 
679  // rec hit profiles
680 
681  histname = "NumberOfRecHitsPerTrackVsPhiProfile_" + histTag;
682  tkmes.NumberOfRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, RecHitBin, RecHitMin, RecHitMax,"");
683  tkmes.NumberOfRecHitsPerTrackVsPhiProfile->setAxisTitle("Track #phi",1);
684  tkmes.NumberOfRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of RecHits of each Track",2);
685 
686  histname = "NumberOfRecHitsPerTrackVsThetaProfile_" + histTag;
687  tkmes.NumberOfRecHitsPerTrackVsThetaProfile = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, RecHitBin, RecHitMin, RecHitMax,"");
689  tkmes.NumberOfRecHitsPerTrackVsThetaProfile->setAxisTitle("Number of RecHits of each Track",2);
690 
691  histname = "NumberOfRecHitsPerTrackVsEtaProfile_" + histTag;
692  tkmes.NumberOfRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, RecHitBin, RecHitMin, RecHitMax,"");
693  tkmes.NumberOfRecHitsPerTrackVsEtaProfile->setAxisTitle("Track #eta",1);
694  tkmes.NumberOfRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of RecHits of each Track",2);
695 
696  histname = "NumberOfLayersPerTrackVsPhiProfile_" + histTag;
697  tkmes.NumberOfLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, RecLayBin, RecLayMin, RecLayMax,"");
698  tkmes.NumberOfLayersPerTrackVsPhiProfile->setAxisTitle("Track #phi",1);
699  tkmes.NumberOfLayersPerTrackVsPhiProfile->setAxisTitle("Number of Layers of each Track",2);
700 
701  histname = "NumberOfLayersPerTrackVsThetaProfile_" + histTag;
702  tkmes.NumberOfLayersPerTrackVsThetaProfile = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, RecLayBin, RecLayMin, RecLayMax,"");
703  tkmes.NumberOfLayersPerTrackVsThetaProfile->setAxisTitle("Track #phi",1);
704  tkmes.NumberOfLayersPerTrackVsThetaProfile->setAxisTitle("Number of Layers of each Track",2);
705 
706  histname = "NumberOfLayersPerTrackVsEtaProfile_" + histTag;
707  tkmes.NumberOfLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, RecLayBin, RecLayMin, RecLayMax,"");
708  tkmes.NumberOfLayersPerTrackVsEtaProfile->setAxisTitle("Track #eta",1);
709  tkmes.NumberOfLayersPerTrackVsEtaProfile->setAxisTitle("Number of Layers of each Track",2);
710 
711  if ( doGoodTrackPlots_ ) {
712 
713  histname = "GoodTrackPt_" + histTag;
714  tkmes.GoodTrackPt = dqmStore_->book1D(histname, histname, TrackPtBin, TrackPtMin, TrackPtMax);
715  tkmes.GoodTrackPt->setAxisTitle("Good Track p_{T} (GeV/c)", 1);
716  tkmes.GoodTrackPt->setAxisTitle("Number of Tracks",2);
717 
718  histname = "GoodTrackEta_" + histTag;
719  tkmes.GoodTrackEta = dqmStore_->book1D(histname, histname, EtaBin, EtaMin, EtaMax);
720  tkmes.GoodTrackEta->setAxisTitle("Good Track #eta", 1);
721  tkmes.GoodTrackEta->setAxisTitle("Number of Tracks",2);
722 
723  histname = "GoodTrackPhi_" + histTag;
724  tkmes.GoodTrackPhi = dqmStore_->book1D(histname, histname, PhiBin, PhiMin, PhiMax);
725  tkmes.GoodTrackPhi->setAxisTitle("Good Track #phi", 1);
726  tkmes.GoodTrackPhi->setAxisTitle("Number of Tracks",2);
727 
728  }
729 
730  // now put the MEs in the map
731  TkParameterMEMap.insert( std::make_pair(sname, tkmes) );
732 }
733 
734 
735 // fill histograms at differnt measurement points
736 // ---------------------------------------------------------------------------------//
737 void TrackAnalyzer::fillHistosForState(const edm::EventSetup& iSetup, const reco::Track & track, std::string sname)
738 {
739  //get the kinematic parameters
740  double p, px, py, pz, pt, theta, phi, eta, q;
741  double pxerror, pyerror, pzerror, pterror, perror, phierror, etaerror;
742 
743  bool isHighPurity = track.quality(reco::TrackBase::highPurity);
744 
745  if (sname == "default")
746  {
747  p = track.p();
748  px = track.px();
749  py = track.py();
750  pz = track.pz();
751  pt = track.pt();
752  phi = track.phi();
753  theta = track.theta();
754  eta = track.eta();
755  q = track.charge();
756 
757  pterror = (pt) ? track.ptError()/pt : 0.0;
758  pxerror = -1.0;
759  pyerror = -1.0;
760  pzerror = -1.0;
761  perror = -1.0;
762  phierror = track.phiError();
763  etaerror = track.etaError();
764 
765  }
766  else
767  {
769  iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",theB);
770  reco::TransientTrack TransTrack = theB->build(track);
771 
773 
774  if (sname == "OuterSurface") TSOS = TransTrack.outermostMeasurementState();
775  else if (sname == "InnerSurface") TSOS = TransTrack.innermostMeasurementState();
776  else if (sname == "ImpactPoint") TSOS = TransTrack.impactPointState();
777 
778  p = TSOS.globalMomentum().mag();
779  px = TSOS.globalMomentum().x();
780  py = TSOS.globalMomentum().y();
781  pz = TSOS.globalMomentum().z();
782  pt = TSOS.globalMomentum().perp();
783  phi = TSOS.globalMomentum().phi();
784  theta = TSOS.globalMomentum().theta();
785  eta = TSOS.globalMomentum().eta();
786  q = TSOS.charge();
787 
788  //get the error of the kinimatic parameters
790  double partialPterror = errors(3,3)*pow(TSOS.globalMomentum().x(),2) + errors(4,4)*pow(TSOS.globalMomentum().y(),2);
791  pterror = sqrt(partialPterror)/TSOS.globalMomentum().perp();
792  pxerror = sqrt(errors(3,3))/TSOS.globalMomentum().x();
793  pyerror = sqrt(errors(4,4))/TSOS.globalMomentum().y();
794  pzerror = sqrt(errors(5,5))/TSOS.globalMomentum().z();
795  perror = sqrt(partialPterror+errors(5,5)*pow(TSOS.globalMomentum().z(),2))/TSOS.globalMomentum().mag();
796  phierror = sqrt(TSOS.curvilinearError().matrix()(2,2));
797  etaerror = sqrt(TSOS.curvilinearError().matrix()(1,1))*fabs(sin(TSOS.globalMomentum().theta()));
798 
799 
800 
801  }
802 
803  std::map<std::string, TkParameterMEs>::iterator iPos = TkParameterMEMap.find(sname);
804  if (iPos != TkParameterMEMap.end())
805  {
806  TkParameterMEs tkmes = iPos->second;
807 
808  // momentum
809  tkmes.TrackP->Fill(p);
810  tkmes.TrackPx->Fill(px);
811  tkmes.TrackPy->Fill(py);
812  tkmes.TrackPz->Fill(pz);
813  tkmes.TrackPt->Fill(pt);
814 
815  // angles
816  tkmes.TrackPhi->Fill(phi);
817  tkmes.TrackEta->Fill(eta);
818  tkmes.TrackTheta->Fill(theta);
819 
820  tkmes.TrackQ->Fill(q);
821 
822  // errors
823  tkmes.TrackPtErr->Fill(pterror);
824  tkmes.TrackPxErr->Fill(pxerror);
825  tkmes.TrackPyErr->Fill(pyerror);
826  tkmes.TrackPzErr->Fill(pzerror);
827  tkmes.TrackPErr->Fill(perror);
828  tkmes.TrackPhiErr->Fill(phierror);
829  tkmes.TrackEtaErr->Fill(etaerror);
830 
831  // rec hits
835 
836 
837  // rec layers
841 
842  if(doAllPlots_)
843  {
844  // hit related
845  tkmes.NumberOfRecHitsPerTrackVsPhi->Fill(phi, track.found());
846  tkmes.NumberOfRecHitsPerTrackVsTheta->Fill(theta, track.found());
847  tkmes.NumberOfRecHitsPerTrackVsEta->Fill(eta, track.found());
848 
849  // general properties
850  tkmes.Chi2oNDFVsTheta->Fill(theta, track.normalizedChi2());
851  tkmes.Chi2oNDFVsPhi->Fill(phi, track.normalizedChi2());
852  tkmes.Chi2oNDFVsEta->Fill(eta, track.normalizedChi2());
853 
854  // rec hits
858 
859 
860  }
861 
862  if ( doGoodTrackPlots_ ) {
863  if ( isHighPurity && pt > 1. ) {
864  tkmes.GoodTrackPt->Fill(pt);
865  tkmes.GoodTrackEta->Fill(eta);
866  tkmes.GoodTrackPhi->Fill(phi);
867  }
868  }
869 
870  }
871 }
872 
873 
875 {
876 
877  // parameters from the configuration
878  std::string QualName = conf_.getParameter<std::string>("Quality");
879  std::string AlgoName = conf_.getParameter<std::string>("AlgoName");
880  std::string MEFolderName = conf_.getParameter<std::string>("FolderName");
881 
882  // use the AlgoName and Quality Name
883  std::string CatagoryName = QualName != "" ? AlgoName + "_" + QualName : AlgoName;
884 
885  // get binning from the configuration
886  int TOBHitBin = conf_.getParameter<int>( "TOBHitBin");
887  double TOBHitMin = conf_.getParameter<double>("TOBHitMin");
888  double TOBHitMax = conf_.getParameter<double>("TOBHitMax");
889 
890  int TIBHitBin = conf_.getParameter<int>( "TIBHitBin");
891  double TIBHitMin = conf_.getParameter<double>("TIBHitMin");
892  double TIBHitMax = conf_.getParameter<double>("TIBHitMax");
893 
894  int TIDHitBin = conf_.getParameter<int>( "TIDHitBin");
895  double TIDHitMin = conf_.getParameter<double>("TIDHitMin");
896  double TIDHitMax = conf_.getParameter<double>("TIDHitMax");
897 
898  int TECHitBin = conf_.getParameter<int>( "TECHitBin");
899  double TECHitMin = conf_.getParameter<double>("TECHitMin");
900  double TECHitMax = conf_.getParameter<double>("TECHitMax");
901 
902  int PXBHitBin = conf_.getParameter<int>( "PXBHitBin");
903  double PXBHitMin = conf_.getParameter<double>("PXBHitMin");
904  double PXBHitMax = conf_.getParameter<double>("PXBHitMax");
905 
906  int PXFHitBin = conf_.getParameter<int>( "PXFHitBin");
907  double PXFHitMin = conf_.getParameter<double>("PXFHitMin");
908  double PXFHitMax = conf_.getParameter<double>("PXFHitMax");
909 
910  int TOBLayBin = conf_.getParameter<int>( "TOBLayBin");
911  double TOBLayMin = conf_.getParameter<double>("TOBLayMin");
912  double TOBLayMax = conf_.getParameter<double>("TOBLayMax");
913 
914  int TIBLayBin = conf_.getParameter<int>( "TIBLayBin");
915  double TIBLayMin = conf_.getParameter<double>("TIBLayMin");
916  double TIBLayMax = conf_.getParameter<double>("TIBLayMax");
917 
918  int TIDLayBin = conf_.getParameter<int>( "TIDLayBin");
919  double TIDLayMin = conf_.getParameter<double>("TIDLayMin");
920  double TIDLayMax = conf_.getParameter<double>("TIDLayMax");
921 
922  int TECLayBin = conf_.getParameter<int>( "TECLayBin");
923  double TECLayMin = conf_.getParameter<double>("TECLayMin");
924  double TECLayMax = conf_.getParameter<double>("TECLayMax");
925 
926  int PXBLayBin = conf_.getParameter<int>( "PXBLayBin");
927  double PXBLayMin = conf_.getParameter<double>("PXBLayMin");
928  double PXBLayMax = conf_.getParameter<double>("PXBLayMax");
929 
930  int PXFLayBin = conf_.getParameter<int>( "PXFLayBin");
931  double PXFLayMin = conf_.getParameter<double>("PXFLayMin");
932  double PXFLayMax = conf_.getParameter<double>("PXFLayMax");
933 
934 
935  int PhiBin = conf_.getParameter<int>( "PhiBin");
936  double PhiMin = conf_.getParameter<double>("PhiMin");
937  double PhiMax = conf_.getParameter<double>("PhiMax");
938 
939  int EtaBin = conf_.getParameter<int>( "EtaBin");
940  double EtaMin = conf_.getParameter<double>("EtaMin");
941  double EtaMax = conf_.getParameter<double>("EtaMax");
942 
943  // book hit property histograms
944  // ---------------------------------------------------------------------------------//
945  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties");
946 
947 
948  TkParameterMEs tkmes;
949 
950  // TOB hits properties
951 
952  histname = "NumberOfTOBRecHitsPerTrack_" + CatagoryName;
953  NumberOfTOBRecHitsPerTrack = dqmStore_->book1D(histname, histname, TOBHitBin, TOBHitMin, TOBHitMax);
954  NumberOfTOBRecHitsPerTrack->setAxisTitle("Number of TOB RecHits of each Track",1);
955  NumberOfTOBRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
956 
957  histname = "NumberOfTOBRecHitsPerTrackVsPhiProfile_" + CatagoryName;
958  NumberOfTOBRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TOBHitBin, TOBHitMin, TOBHitMax,"");
960  NumberOfTOBRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of TOB RecHits of each Track",2);
961 
962  histname = "NumberOfTOBRecHitsPerTrackVsEtaProfile_" + CatagoryName;
963  NumberOfTOBRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TOBHitBin, TOBHitMin, TOBHitMax,"");
965  NumberOfTOBRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of TOB RecHits of each Track",2);
966 
967  histname = "NumberOfTOBLayersPerTrack_" + CatagoryName;
968  NumberOfTOBLayersPerTrack = dqmStore_->book1D(histname, histname, TOBLayBin, TOBLayMin, TOBLayMax);
969  NumberOfTOBLayersPerTrack->setAxisTitle("Number of TOB Layers of each Track",1);
970  NumberOfTOBLayersPerTrack->setAxisTitle("Number of Tracks", 2);
971 
972  histname = "NumberOfTOBLayersPerTrackVsPhiProfile_" + CatagoryName;
973  NumberOfTOBLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TOBLayBin, TOBLayMin, TOBLayMax,"");
975  NumberOfTOBLayersPerTrackVsPhiProfile->setAxisTitle("Number of TOB Layers of each Track",2);
976 
977  histname = "NumberOfTOBLayersPerTrackVsEtaProfile_" + CatagoryName;
978  NumberOfTOBLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TOBLayBin, TOBLayMin, TOBLayMax,"");
980  NumberOfTOBLayersPerTrackVsEtaProfile->setAxisTitle("Number of TOB Layers of each Track",2);
981 
982 
983  // TIB hits properties
984 
985  histname = "NumberOfTIBRecHitsPerTrack_" + CatagoryName;
986  NumberOfTIBRecHitsPerTrack = dqmStore_->book1D(histname, histname, TIBHitBin, TIBHitMin, TIBHitMax);
987  NumberOfTIBRecHitsPerTrack->setAxisTitle("Number of TIB RecHits of each Track",1);
988  NumberOfTIBRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
989 
990  histname = "NumberOfTIBRecHitsPerTrackVsPhiProfile_" + CatagoryName;
991  NumberOfTIBRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TIBHitBin, TIBHitMin, TIBHitMax,"");
993  NumberOfTIBRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of TIB RecHits of each Track",2);
994 
995  histname = "NumberOfTIBRecHitsPerTrackVsEtaProfile_" + CatagoryName;
996  NumberOfTIBRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TIBHitBin, TIBHitMin, TIBHitMax,"");
998  NumberOfTIBRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of TIB RecHits of each Track",2);
999 
1000  histname = "NumberOfTIBLayersPerTrack_" + CatagoryName;
1001  NumberOfTIBLayersPerTrack = dqmStore_->book1D(histname, histname, TIBLayBin, TIBLayMin, TIBLayMax);
1002  NumberOfTIBLayersPerTrack->setAxisTitle("Number of TIB Layers of each Track",1);
1003  NumberOfTIBLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1004 
1005  histname = "NumberOfTIBLayersPerTrackVsPhiProfile_" + CatagoryName;
1006  NumberOfTIBLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TIBLayBin, TIBLayMin, TIBLayMax,"");
1008  NumberOfTIBLayersPerTrackVsPhiProfile->setAxisTitle("Number of TIB Layers of each Track",2);
1009 
1010  histname = "NumberOfTIBLayersPerTrackVsEtaProfile_" + CatagoryName;
1011  NumberOfTIBLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TIBLayBin, TIBLayMin, TIBLayMax,"");
1013  NumberOfTIBLayersPerTrackVsEtaProfile->setAxisTitle("Number of TIB Layers of each Track",2);
1014 
1015 
1016  // TID hit properties
1017 
1018  histname = "NumberOfTIDRecHitsPerTrack_" + CatagoryName;
1019  NumberOfTIDRecHitsPerTrack = dqmStore_->book1D(histname, histname, TIDHitBin, TIDHitMin, TIDHitMax);
1020  NumberOfTIDRecHitsPerTrack->setAxisTitle("Number of TID RecHits of each Track",1);
1021  NumberOfTIDRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1022 
1023  histname = "NumberOfTIDRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1024  NumberOfTIDRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TIDHitBin, TIDHitMin, TIDHitMax,"");
1026  NumberOfTIDRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of TID RecHits of each Track",2);
1027 
1028  histname = "NumberOfTIDRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1029  NumberOfTIDRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TIDHitBin, TIDHitMin, TIDHitMax,"");
1031  NumberOfTIDRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of TID RecHits of each Track",2);
1032 
1033  histname = "NumberOfTIDLayersPerTrack_" + CatagoryName;
1034  NumberOfTIDLayersPerTrack = dqmStore_->book1D(histname, histname, TIDLayBin, TIDLayMin, TIDLayMax);
1035  NumberOfTIDLayersPerTrack->setAxisTitle("Number of TID Layers of each Track",1);
1036  NumberOfTIDLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1037 
1038  histname = "NumberOfTIDLayersPerTrackVsPhiProfile_" + CatagoryName;
1039  NumberOfTIDLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TIDLayBin, TIDLayMin, TIDLayMax,"");
1041  NumberOfTIDLayersPerTrackVsPhiProfile->setAxisTitle("Number of TID Layers of each Track",2);
1042 
1043  histname = "NumberOfTIDLayersPerTrackVsEtaProfile_" + CatagoryName;
1044  NumberOfTIDLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TIDLayBin, TIDLayMin, TIDLayMax,"");
1046  NumberOfTIDLayersPerTrackVsEtaProfile->setAxisTitle("Number of TID Layers of each Track",2);
1047 
1048 
1049  // TEC hits properties
1050 
1051  histname = "NumberOfTECRecHitsPerTrack_"+ CatagoryName;
1052  NumberOfTECRecHitsPerTrack = dqmStore_->book1D(histname, histname, TECHitBin, TECHitMin, TECHitMax);
1053  NumberOfTECRecHitsPerTrack->setAxisTitle("Number of TEC RecHits of each Track",1);
1054  NumberOfTECRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1055 
1056  histname = "NumberOfTECRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1057  NumberOfTECRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TECHitBin, TECHitMin, TECHitMax,"");
1059  NumberOfTECRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of TEC RecHits of each Track",2);
1060 
1061  histname = "NumberOfTECRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1062  NumberOfTECRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TECHitBin, TECHitMin, TECHitMax,"");
1064  NumberOfTECRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of TEC RecHits of each Track",2);
1065 
1066  histname = "NumberOfTECLayersPerTrack_"+ CatagoryName;
1067  NumberOfTECLayersPerTrack = dqmStore_->book1D(histname, histname, TECLayBin, TECLayMin, TECLayMax);
1068  NumberOfTECLayersPerTrack->setAxisTitle("Number of TEC Layers of each Track",1);
1069  NumberOfTECLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1070 
1071  histname = "NumberOfTECLayersPerTrackVsPhiProfile_" + CatagoryName;
1072  NumberOfTECLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TECLayBin, TECLayMin, TECLayMax,"");
1074  NumberOfTECLayersPerTrackVsPhiProfile->setAxisTitle("Number of TEC Layers of each Track",2);
1075 
1076  histname = "NumberOfTECLayersPerTrackVsEtaProfile_" + CatagoryName;
1077  NumberOfTECLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TECLayBin, TECLayMin, TECLayMax,"");
1079  NumberOfTECLayersPerTrackVsEtaProfile->setAxisTitle("Number of TEC Layers of each Track",2);
1080 
1081 
1082  // PixBarrel hits properties
1083 
1084  histname = "NumberOfPixBarrelRecHitsPerTrack_" + CatagoryName;
1085  NumberOfPixBarrelRecHitsPerTrack = dqmStore_->book1D(histname, histname, PXBHitBin, PXBHitMin, PXBHitMax);
1086  NumberOfPixBarrelRecHitsPerTrack->setAxisTitle("Number of Pixel Barrel RecHits of each Track",1);
1087  NumberOfPixBarrelRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1088 
1089  histname = "NumberOfPixBarrelRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1090  NumberOfPixBarrelRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, PXBHitBin, PXBHitMin, PXBHitMax,"");
1092  NumberOfPixBarrelRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of Pixel Barrel RecHits of each Track",2);
1093 
1094  histname = "NumberOfPixBarrelRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1095  NumberOfPixBarrelRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, PXBHitBin, PXBHitMin, PXBHitMax,"");
1097  NumberOfPixBarrelRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of Pixel Barrel RecHits of each Track",2);
1098 
1099  histname = "NumberOfPixBarrelLayersPerTrack_" + CatagoryName;
1100  NumberOfPixBarrelLayersPerTrack = dqmStore_->book1D(histname, histname, PXBLayBin, PXBLayMin, PXBLayMax);
1101  NumberOfPixBarrelLayersPerTrack->setAxisTitle("Number of Pixel Barrel Layers of each Track",1);
1102  NumberOfPixBarrelLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1103 
1104  histname = "NumberOfPixBarrelLayersPerTrackVsPhiProfile_" + CatagoryName;
1105  NumberOfPixBarrelLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, PXBLayBin, PXBLayMin, PXBLayMax,"");
1107  NumberOfPixBarrelLayersPerTrackVsPhiProfile->setAxisTitle("Number of Pixel Barrel Layers of each Track",2);
1108 
1109  histname = "NumberOfPixBarrelLayersPerTrackVsEtaProfile_" + CatagoryName;
1110  NumberOfPixBarrelLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, PXBLayBin, PXBLayMin, PXBLayMax,"");
1112  NumberOfPixBarrelLayersPerTrackVsEtaProfile->setAxisTitle("Number of Pixel Barrel Layers of each Track",2);
1113 
1114 
1115  // PixEndcap hits profiles
1116 
1117  histname = "NumberOfPixEndcapRecHitsPerTrack_" + CatagoryName;
1118  NumberOfPixEndcapRecHitsPerTrack = dqmStore_->book1D(histname, histname, PXFHitBin, PXFHitMin, PXFHitMax);
1119  NumberOfPixEndcapRecHitsPerTrack->setAxisTitle("Number of Pixel Endcap RecHits of each Track",1);
1120  NumberOfPixEndcapRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1121 
1122  histname = "NumberOfPixEndcapRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1123  NumberOfPixEndcapRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, PXBHitBin, PXBHitMin, PXBHitMax,"");
1125  NumberOfPixEndcapRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of Pixel Endcap RecHits of each Track",2);
1126 
1127  histname = "NumberOfPixEndcapRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1128  NumberOfPixEndcapRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, PXBHitBin, PXBHitMin, PXBHitMax,"");
1130  NumberOfPixEndcapRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of Pixel Endcap RecHits of each Track",2);
1131 
1132  histname = "NumberOfPixEndcapLayersPerTrack_" + CatagoryName;
1133  NumberOfPixEndcapLayersPerTrack = dqmStore_->book1D(histname, histname, PXFLayBin, PXFLayMin, PXFLayMax);
1134  NumberOfPixEndcapLayersPerTrack->setAxisTitle("Number of Pixel Endcap Layers of each Track",1);
1135  NumberOfPixEndcapLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1136 
1137  histname = "NumberOfPixEndcapLayersPerTrackVsPhiProfile_" + CatagoryName;
1138  NumberOfPixEndcapLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, PXBLayBin, PXBLayMin, PXBLayMax,"");
1140  NumberOfPixEndcapLayersPerTrackVsPhiProfile->setAxisTitle("Number of Pixel Endcap Layers of each Track",2);
1141 
1142  histname = "NumberOfPixEndcapLayersPerTrackVsEtaProfile_" + CatagoryName;
1143  NumberOfPixEndcapLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, PXBLayBin, PXBLayMin, PXBLayMax,"");
1145  NumberOfPixEndcapLayersPerTrackVsEtaProfile->setAxisTitle("Number of Pixel Endcap Layers of each Track",2);
1146 
1147 }
1148 
1149 
1151 {
1152  double phi = track.phi();
1153  double eta = track.eta();
1154 
1155  //Fill TIB Layers and RecHits
1159 
1163 
1164  //Fill TOB Layers and RecHits
1168 
1172 
1173 
1174  //Fill TID Layers and RecHits
1178 
1182 
1183 
1184  //Fill TEC Layers and RecHits
1188 
1192 
1193  //Fill PixBarrel Layers and RecHits
1197 
1201 
1202  //Fill PixEndcap Layers and RecHits
1206 
1210 
1211 }
1212 //
1213 // -- Set Lumi Flag
1214 //
1216  if (Chi2oNDF) Chi2oNDF->setLumiFlag();
1220 }
1221 //
1222 // -- Apply SoftReset
1223 //
1225  dqmStore_->softReset(Chi2oNDF);
1226  dqmStore_->softReset(NumberOfRecHitsPerTrack);
1227  dqmStore_->softReset(GoodTrackChi2oNDF);
1229 }
1230 //
1231 // -- Remove SoftReset
1232 //
1234  dqmStore_->disableSoftReset(Chi2oNDF);
1236  dqmStore_->disableSoftReset(GoodTrackChi2oNDF);
1238 }
1239 
1240 
MonitorElement * NumberOfRecHitsPerTrackVsPhi
double p() const
momentum vector magnitude
Definition: TrackBase.h:129
MonitorElement * NumberOfLayersPerTrackVsPhi
int stripTOBLayersWithMeasurement() const
Definition: HitPattern.cc:936
T getParameter(std::string const &) const
MonitorElement * NumberOfPixEndcapLayersPerTrackVsEtaProfile
MonitorElement * NumberOfRecHitsFoundPerTrack
Definition: TrackAnalyzer.h:56
bool doTrackerSpecific_
Definition: TrackAnalyzer.h:50
MonitorElement * NumberOfLayersPerTrackVsEtaProfile
MonitorElement * NumberOfPixEndcapLayersPerTrack
int numberOfValidHits() const
Definition: HitPattern.cc:321
unsigned short lost() const
Number of lost (=invalid) hits on track.
Definition: Track.h:102
T perp() const
Definition: PV3DBase.h:66
MonitorElement * NumberOfPixBarrelLayersPerTrack
double d0() const
dxy parameter in perigee convention (d0 = - dxy)
Definition: TrackBase.h:123
MonitorElement * GoodTrackNumberOfRecHitsPerTrack
MonitorElement * NumberOfTOBLayersPerTrackVsPhiProfile
Definition: TrackAnalyzer.h:79
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:514
MonitorElement * NumberOfTIDRecHitsPerTrackVsPhiProfile
Definition: TrackAnalyzer.h:90
int stripTIBLayersWithMeasurement() const
Definition: HitPattern.cc:918
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:111
MonitorElement * NumberOfRecHitsLostPerTrack
Definition: TrackAnalyzer.h:57
double theta() const
polar angle
Definition: TrackBase.h:117
size_t recHitsSize() const
Get number of RecHits. (Warning, this includes invalid hits, which are not physical hits)...
Definition: Track.h:69
MonitorElement * NumberOfTIBLayersPerTrack
Definition: TrackAnalyzer.h:85
MonitorElement * NumberOfTOBRecHitsPerTrack
Definition: TrackAnalyzer.h:75
MonitorElement * NumberOfPixEndcapRecHitsPerTrack
const CurvilinearTrajectoryError & curvilinearError() const
MonitorElement * NumberOfTECRecHitsPerTrackVsPhiProfile
Definition: TrackAnalyzer.h:97
MonitorElement * NumberOfPixBarrelRecHitsPerTrackVsPhiProfile
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
MonitorElement * NumberOfTIBRecHitsPerTrackVsPhiProfile
Definition: TrackAnalyzer.h:83
MonitorElement * NumberOfTIDRecHitsPerTrackVsEtaProfile
Definition: TrackAnalyzer.h:91
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
Geom::Phi< T > phi() const
Definition: PV3DBase.h:63
edm::ParameterSet conf_
Definition: TrackAnalyzer.h:48
MonitorElement * NumberOfRecHitsPerTrackVsPhiProfile
Geom::Theta< T > theta() const
T y() const
Definition: PV3DBase.h:57
double etaError() const
error on eta
Definition: TrackBase.h:205
MonitorElement * NumberOfPixBarrelRecHitsPerTrackVsEtaProfile
MonitorElement * DistanceOfClosestApproachVsPhi
Definition: TrackAnalyzer.h:65
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:139
#define NULL
Definition: scimark2.h:8
std::map< std::string, TkParameterMEs > TkParameterMEMap
MonitorElement * algorithm
Definition: TrackAnalyzer.h:73
const double EtaMax[kNumberCalorimeter]
double px() const
x coordinate of momentum vector
Definition: TrackBase.h:133
MonitorElement * xPointOfClosestApproachVsZ0
Definition: TrackAnalyzer.h:69
T eta() const
TrajectoryStateOnSurface TSOS
MonitorElement * DistanceOfClosestApproach
Definition: TrackAnalyzer.h:62
MonitorElement * NumberOfPixEndcapLayersPerTrackVsPhiProfile
MonitorElement * NumberOfLayersPerTrackVsTheta
MonitorElement * NumberOfTIBLayersPerTrackVsEtaProfile
Definition: TrackAnalyzer.h:87
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:883
int pixelEndcapLayersWithMeasurement() const
Definition: HitPattern.cc:909
int numberOfValidStripTIDHits() const
Definition: HitPattern.cc:424
MonitorElement * yPointOfClosestApproachVsZ0
Definition: TrackAnalyzer.h:71
TrajectoryStateOnSurface innermostMeasurementState() const
MonitorElement * NumberOfRecHitsPerTrack
Definition: TrackAnalyzer.h:55
void Fill(long long x)
MonitorElement * NumberOfPixEndcapRecHitsPerTrackVsEtaProfile
Geom::Theta< T > theta() const
Definition: PV3DBase.h:69
MonitorElement * GoodTrackChi2oNDF
TrackAlgorithm algo() const
Definition: TrackBase.h:319
void bookHistosForState(std::string sname, DQMStore *dqmStore_)
void disableSoftReset(MonitorElement *me)
Definition: DQMStore.cc:2535
MonitorElement * NumberOfTECLayersPerTrackVsEtaProfile
MonitorElement * NumberOfLayersPerTrackVsPhiProfile
MonitorElement * NumberOfPixBarrelLayersPerTrackVsPhiProfile
virtual void beginJob(DQMStore *dqmStore_)
MonitorElement * Chi2oNDFVsEta
int iEvent
Definition: GenABIO.cc:243
T mag() const
Definition: PV3DBase.h:61
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:141
int numberOfValidPixelEndcapHits() const
Definition: HitPattern.cc:385
MonitorElement * NumberOfTOBLayersPerTrack
Definition: TrackAnalyzer.h:78
MonitorElement * NumberOfTECLayersPerTrack
Definition: TrackAnalyzer.h:99
void doTrackerSpecificInitialization(DQMStore *dqmStore_)
MonitorElement * NumberOfRecHitsPerTrackVsTheta
MonitorElement * xPointOfClosestApproach
Definition: TrackAnalyzer.h:68
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:107
const CartesianTrajectoryError & cartesianError() const
MonitorElement * NumberOfTIDRecHitsPerTrack
Definition: TrackAnalyzer.h:89
void doTrackerSpecificFillHists(const reco::Track &track)
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:109
int stripTIDLayersWithMeasurement() const
Definition: HitPattern.cc:927
T sqrt(T t)
Definition: SSEVec.h:28
double pt() const
track transverse momentum
Definition: TrackBase.h:131
T z() const
Definition: PV3DBase.h:58
MonitorElement * NumberOfLayersPerTrackVsThetaProfile
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:194
double phiError() const
error on phi
Definition: TrackBase.h:207
MonitorElement * NumberOfTIDLayersPerTrack
Definition: TrackAnalyzer.h:92
MonitorElement * NumberOfTECRecHitsPerTrackVsEtaProfile
Definition: TrackAnalyzer.h:98
MonitorElement * NumberOfTIDLayersPerTrackVsPhiProfile
Definition: TrackAnalyzer.h:93
TH1 * getTH1(void) const
int numberOfValidStripTECHits() const
Definition: HitPattern.cc:450
const double EtaMin[kNumberCalorimeter]
MonitorElement * NumberOfRecHitsPerTrackVsEta
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:828
void softReset(MonitorElement *me)
Definition: DQMStore.cc:2527
MonitorElement * Chi2oNDFVsTheta
TrajectoryStateOnSurface outermostMeasurementState() const
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:223
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
int numberOfValidStripTIBHits() const
Definition: HitPattern.cc:411
MonitorElement * DistanceOfClosestApproachVsEta
Definition: TrackAnalyzer.h:67
const AlgebraicSymMatrix66 & matrix() const
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:137
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:127
MonitorElement * NumberOfPixBarrelLayersPerTrackVsEtaProfile
const Point & vertex() const
reference point on the track. This method is DEPRECATED, please use referencePoint() instead ...
Definition: TrackBase.h:156
void fillHistosForState(const edm::EventSetup &iSetup, const reco::Track &track, std::string sname)
MonitorElement * NumberOfTOBRecHitsPerTrackVsPhiProfile
Definition: TrackAnalyzer.h:76
virtual ~TrackAnalyzer()
MonitorElement * NumberOfTIBLayersPerTrackVsPhiProfile
Definition: TrackAnalyzer.h:86
MonitorElement * NumberOfLayersPerTrackVsEta
bool doGoodTrackPlots_
Definition: TrackAnalyzer.h:53
virtual void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup, const reco::Track &track)
MonitorElement * NumberOfLayersPerTrack
Definition: TrackAnalyzer.h:58
MonitorElement * NumberOfTIBRecHitsPerTrackVsEtaProfile
Definition: TrackAnalyzer.h:84
MonitorElement * NumberOfRecHitsPerTrackVsEtaProfile
const T & get() const
Definition: EventSetup.h:55
int pixelBarrelLayersWithMeasurement() const
Definition: HitPattern.cc:900
MonitorElement * NumberOfPixEndcapRecHitsPerTrackVsPhiProfile
MonitorElement * DistanceOfClosestApproachVsTheta
Definition: TrackAnalyzer.h:64
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:364
int stripLayersWithMeasurement() const
Definition: HitPattern.cc:893
int numberOfValidStripTOBHits() const
Definition: HitPattern.cc:437
T eta() const
Definition: PV3DBase.h:70
MonitorElement * NumberOfTECLayersPerTrackVsPhiProfile
MonitorElement * NumberOfTIDLayersPerTrackVsEtaProfile
Definition: TrackAnalyzer.h:94
double vy() const
y coordinate of the reference point on track
Definition: TrackBase.h:145
MonitorElement * NumberOfTOBLayersPerTrackVsEtaProfile
Definition: TrackAnalyzer.h:80
const AlgebraicSymMatrix55 & matrix() const
GlobalVector globalMomentum() const
MonitorElement * DistanceOfClosestApproachToBSVsPhi
Definition: TrackAnalyzer.h:66
unsigned short found() const
Number of valid hits on track.
Definition: Track.h:100
void doSoftReset(DQMStore *dqmStore_)
MonitorElement * NumberOfTECRecHitsPerTrack
Definition: TrackAnalyzer.h:96
int stripTECLayersWithMeasurement() const
Definition: HitPattern.cc:945
int numberOfValidPixelBarrelHits() const
Definition: HitPattern.cc:372
int charge() const
track electric charge
Definition: TrackBase.h:113
const Point & position() const
position
Definition: BeamSpot.h:63
TrajectoryStateOnSurface impactPointState() const
MonitorElement * yPointOfClosestApproach
Definition: TrackAnalyzer.h:70
MonitorElement * NumberOfPixBarrelRecHitsPerTrack
MonitorElement * Chi2Prob
Definition: TrackAnalyzer.h:60
void setLumiFlag(void)
this ME is meant to be stored for each luminosity section
Definition: Chi2.h:17
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:121
MonitorElement * zPointOfClosestApproach
Definition: TrackAnalyzer.h:72
TrackAnalyzer(const edm::ParameterSet &)
T x() const
Definition: PV3DBase.h:56
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * NumberOfRecHitsPerTrackVsThetaProfile
MonitorElement * DistanceOfClosestApproachToBS
Definition: TrackAnalyzer.h:63
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
MonitorElement * Chi2oNDF
Definition: TrackAnalyzer.h:61
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
std::string histname
MonitorElement * NumberOfTOBRecHitsPerTrackVsEtaProfile
Definition: TrackAnalyzer.h:77
double py() const
y coordinate of momentum vector
Definition: TrackBase.h:135
double vx() const
x coordinate of the reference point on track
Definition: TrackBase.h:143
void undoSoftReset(DQMStore *dqmStore_)
MonitorElement * NumberOfTIBRecHitsPerTrack
Definition: TrackAnalyzer.h:82
Definition: DDAxes.h:10
MonitorElement * Chi2oNDFVsPhi