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: 2012/03/28 22:59:43 $
5  * $Revision: 1.25 $
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  , doDCAPlots_ ( conf_.getParameter<bool>("doDCAPlots") )
30  , doGeneralPropertiesPlots_ ( conf_.getParameter<bool>("doGeneralPropertiesPlots") )
31  , doMeasurementStatePlots_ ( conf_.getParameter<bool>("doMeasurementStatePlots") )
32  , doHitPropertiesPlots_ ( conf_.getParameter<bool>("doHitPropertiesPlots") )
33  , doRecHitVsPhiVsEtaPerTrack_ ( conf_.getParameter<bool>("doRecHitVsPhiVsEtaPerTrack") )
34  , doLayersVsPhiVsEtaPerTrack_ ( conf_.getParameter<bool>("doLayersVsPhiVsEtaPerTrack") )
35  , doGoodTrackRecHitVsPhiVsEtaPerTrack_ ( conf_.getParameter<bool>("doGoodTrackRecHitVsPhiVsEtaPerTrack") )
36  , doGoodTrackLayersVsPhiVsEtaPerTrack_ ( conf_.getParameter<bool>("doGoodTrackLayersVsPhiVsEtaPerTrack") )
37  , doGoodTrack2DChi2Plots_ ( conf_.getParameter<bool>("doGoodTrack2DChi2Plots") )
38  , doThetaPlots_ ( conf_.getParameter<bool>("doThetaPlots") )
39  , doTrackPxPyPlots_ ( conf_.getParameter<bool>("doTrackPxPyPlots") )
40  , doDCAwrt000Plots_ ( conf_.getParameter<bool>("doDCAwrt000Plots") )
41  , doLumiAnalysis_ ( conf_.getParameter<bool>("doLumiAnalysis") )
42  , doTestPlots_ ( conf_.getParameter<bool>("doTestPlots") )
43  , NumberOfRecHitsPerTrack(NULL)
44  , NumberOfRecHitsFoundPerTrack(NULL)
45  , NumberOfRecHitsLostPerTrack(NULL)
46  , NumberOfLayersPerTrack(NULL)
47  , NumberOfRecHitVsPhiVsEtaPerTrack(NULL)
48  , NumberOfLayersVsPhiVsEtaPerTrack(NULL)
49  , Chi2(NULL)
50  , Chi2Prob(NULL)
51  , Chi2oNDF(NULL)
52  , DistanceOfClosestApproach(NULL)
53  , DistanceOfClosestApproachToBS(NULL)
54  , DistanceOfClosestApproachVsTheta(NULL)
55  , DistanceOfClosestApproachVsPhi(NULL)
56  , DistanceOfClosestApproachToBSVsPhi(NULL)
57  , DistanceOfClosestApproachVsEta(NULL)
58  , xPointOfClosestApproach(NULL)
59  , xPointOfClosestApproachVsZ0wrt000(NULL)
60  , xPointOfClosestApproachVsZ0wrtBS(NULL)
61  , yPointOfClosestApproach(NULL)
62  , yPointOfClosestApproachVsZ0wrt000(NULL)
63  , yPointOfClosestApproachVsZ0wrtBS(NULL)
64  , zPointOfClosestApproach(NULL)
65  , zPointOfClosestApproachVsPhi(NULL)
66  , algorithm(NULL)
67  // TESTING MEs
68  , TESTDistanceOfClosestApproachToBS(NULL)
69  , TESTDistanceOfClosestApproachToBSVsPhi(NULL)
70  // add by mia in order to deal w/ LS transitions
71  , Chi2oNDF_lumiFlag(NULL)
72  , NumberOfRecHitsPerTrack_lumiFlag(NULL)
73  , GoodTrackChi2oNDF_lumiFlag(NULL)
74  , GoodTrackNumberOfRecHitsPerTrack_lumiFlag(NULL)
75 
76  , NumberOfTOBRecHitsPerTrack(NULL)
77  , NumberOfTOBRecHitsPerTrackVsPhiProfile(NULL)
78  , NumberOfTOBRecHitsPerTrackVsEtaProfile(NULL)
79  , NumberOfTOBLayersPerTrack(NULL)
80  , NumberOfTOBLayersPerTrackVsPhiProfile(NULL)
81  , NumberOfTOBLayersPerTrackVsEtaProfile(NULL)
82 
83  , NumberOfTIBRecHitsPerTrack(NULL)
84  , NumberOfTIBRecHitsPerTrackVsPhiProfile(NULL)
85  , NumberOfTIBRecHitsPerTrackVsEtaProfile(NULL)
86  , NumberOfTIBLayersPerTrack(NULL)
87  , NumberOfTIBLayersPerTrackVsPhiProfile(NULL)
88  , NumberOfTIBLayersPerTrackVsEtaProfile(NULL)
89 
90  , NumberOfTIDRecHitsPerTrack(NULL)
91  , NumberOfTIDRecHitsPerTrackVsPhiProfile(NULL)
92  , NumberOfTIDRecHitsPerTrackVsEtaProfile(NULL)
93  , NumberOfTIDLayersPerTrack(NULL)
94  , NumberOfTIDLayersPerTrackVsPhiProfile(NULL)
95  , NumberOfTIDLayersPerTrackVsEtaProfile(NULL)
96 
97  , NumberOfTECRecHitsPerTrack(NULL)
98  , NumberOfTECRecHitsPerTrackVsPhiProfile(NULL)
99  , NumberOfTECRecHitsPerTrackVsEtaProfile(NULL)
100  , NumberOfTECLayersPerTrack(NULL)
101  , NumberOfTECLayersPerTrackVsPhiProfile(NULL)
102  , NumberOfTECLayersPerTrackVsEtaProfile(NULL)
103 
104  , NumberOfPixBarrelRecHitsPerTrack(NULL)
105  , NumberOfPixBarrelRecHitsPerTrackVsPhiProfile(NULL)
106  , NumberOfPixBarrelRecHitsPerTrackVsEtaProfile(NULL)
107  , NumberOfPixBarrelLayersPerTrack(NULL)
108  , NumberOfPixBarrelLayersPerTrackVsPhiProfile(NULL)
109  , NumberOfPixBarrelLayersPerTrackVsEtaProfile(NULL)
110 
111  , NumberOfPixEndcapRecHitsPerTrack(NULL)
112  , NumberOfPixEndcapRecHitsPerTrackVsPhiProfile(NULL)
113  , NumberOfPixEndcapRecHitsPerTrackVsEtaProfile(NULL)
114  , NumberOfPixEndcapLayersPerTrack(NULL)
115  , NumberOfPixEndcapLayersPerTrackVsPhiProfile(NULL)
116  , NumberOfPixEndcapLayersPerTrackVsEtaProfile(NULL)
117 
118  , GoodTrackNumberOfRecHitVsPhiVsEtaPerTrack(NULL)
119  , GoodTrackNumberOfLayersVsPhiVsEtaPerTrack(NULL)
120  , GoodTrackNumberOfRecHitsPerTrackVsPhiProfile(NULL)
121  , GoodTrackNumberOfRecHitsPerTrackVsEtaProfile(NULL)
122  , GoodTrackNumberOfFoundRecHitsPerTrackVsPhiProfile(NULL)
123  , GoodTrackNumberOfFoundRecHitsPerTrackVsEtaProfile(NULL)
124  , GoodTrackChi2oNDF(NULL)
125  , GoodTrackChi2Prob(NULL)
126  , GoodTrackChi2oNDFVsPhi(NULL)
127  , GoodTrackChi2ProbVsPhi(NULL)
128  , GoodTrackChi2oNDFVsEta(NULL)
129  , GoodTrackChi2ProbVsEta(NULL)
130  , GoodTrackNumberOfRecHitsPerTrack(NULL)
131  , GoodTrackNumberOfFoundRecHitsPerTrack(NULL)
132  , GoodTrackAlgorithm(NULL)
133 {
134 
135  // std::cout << "TrackAnalyzer::TrackAnalyzer() - doGoodTrackPlots_ = " << doGoodTrackPlots_ << std::endl;
136 
137 }
138 
140 {
141 }
142 
144 {
145 
146  // parameters from the configuration
147  std::string QualName = conf_.getParameter<std::string>("Quality");
148  std::string AlgoName = conf_.getParameter<std::string>("AlgoName");
149  std::string MEFolderName = conf_.getParameter<std::string>("FolderName");
150  std::string MEBSFolderName = conf_.getParameter<std::string>("BSFolderName");
151 
152  // use the AlgoName and Quality Name
153  std::string CatagoryName = QualName != "" ? AlgoName + "_" + QualName : AlgoName;
154 
155  // get binning from the configuration
156  double RecHitMin = conf_.getParameter<double>("RecHitMin");
157  double RecHitMax = conf_.getParameter<double>("RecHitMax");
158 
159  int TKHitBin = conf_.getParameter<int>( "RecHitBin");
160  double TKHitMin = conf_.getParameter<double>("RecHitMin");
161  double TKHitMax = conf_.getParameter<double>("RecHitMax");
162 
163  int TKLostBin = conf_.getParameter<int>( "RecLostBin");
164  double TKLostMin = conf_.getParameter<double>("RecLostMin");
165  double TKLostMax = conf_.getParameter<double>("RecLostMax");
166 
167  int TKLayBin = conf_.getParameter<int>( "RecLayBin");
168  double TKLayMin = conf_.getParameter<double>("RecLayMin");
169  double TKLayMax = conf_.getParameter<double>("RecLayMax");
170 
171  int Chi2Bin = conf_.getParameter<int>( "Chi2Bin");
172  double Chi2Min = conf_.getParameter<double>("Chi2Min");
173  double Chi2Max = conf_.getParameter<double>("Chi2Max");
174 
175  int Chi2NDFBin = conf_.getParameter<int>( "Chi2NDFBin");
176  double Chi2NDFMin = conf_.getParameter<double>("Chi2NDFMin");
177  double Chi2NDFMax = conf_.getParameter<double>("Chi2NDFMax");
178 
179  int Chi2ProbBin = conf_.getParameter<int>( "Chi2ProbBin");
180  double Chi2ProbMin = conf_.getParameter<double>("Chi2ProbMin");
181  double Chi2ProbMax = conf_.getParameter<double>("Chi2ProbMax");
182 
183  int PhiBin = conf_.getParameter<int>( "PhiBin");
184  double PhiMin = conf_.getParameter<double>("PhiMin");
185  double PhiMax = conf_.getParameter<double>("PhiMax");
186 
187  int EtaBin = conf_.getParameter<int>( "EtaBin");
188  double EtaMin = conf_.getParameter<double>("EtaMin");
189  double EtaMax = conf_.getParameter<double>("EtaMax");
190 
191  int ThetaBin = conf_.getParameter<int>( "ThetaBin");
192  double ThetaMin = conf_.getParameter<double>("ThetaMin");
193  double ThetaMax = conf_.getParameter<double>("ThetaMax");
194 
195  int DxyBin = conf_.getParameter<int>( "DxyBin");
196  double DxyMin = conf_.getParameter<double>("DxyMin");
197  double DxyMax = conf_.getParameter<double>("DxyMax");
198 
199  int VXBin = conf_.getParameter<int>( "VXBin");
200  double VXMin = conf_.getParameter<double>("VXMin");
201  double VXMax = conf_.getParameter<double>("VXMax");
202 
203  int VYBin = conf_.getParameter<int>( "VYBin");
204  double VYMin = conf_.getParameter<double>("VYMin");
205  double VYMax = conf_.getParameter<double>("VYMax");
206 
207  int VZBin = conf_.getParameter<int>( "VZBin");
208  double VZMin = conf_.getParameter<double>("VZMin");
209  double VZMax = conf_.getParameter<double>("VZMax");
210 
211  int X0Bin = conf_.getParameter<int>( "X0Bin");
212  double X0Min = conf_.getParameter<double>("X0Min");
213  double X0Max = conf_.getParameter<double>("X0Max");
214 
215  int Y0Bin = conf_.getParameter<int>( "Y0Bin");
216  double Y0Min = conf_.getParameter<double>("Y0Min");
217  double Y0Max = conf_.getParameter<double>("Y0Max");
218 
219  int Z0Bin = conf_.getParameter<int>( "Z0Bin");
220  double Z0Min = conf_.getParameter<double>("Z0Min");
221  double Z0Max = conf_.getParameter<double>("Z0Max");
222 
223  dqmStore_->setCurrentFolder(MEFolderName);
224 
225  // book the Hit Property histograms
226  // ---------------------------------------------------------------------------------//
227 
229 
230  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties");
231 
232  histname = "NumberOfRecHitsPerTrack_";
233  NumberOfRecHitsPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
234  NumberOfRecHitsPerTrack->setAxisTitle("Number of all RecHits of each Track");
235  NumberOfRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
236 
237  histname = "NumberOfRecHitsFoundPerTrack_";
238  NumberOfRecHitsFoundPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
239  NumberOfRecHitsFoundPerTrack->setAxisTitle("Number of RecHits found for each Track");
240  NumberOfRecHitsFoundPerTrack->setAxisTitle("Number of Tracks", 2);
241 
242  histname = "NumberOfRecHitsLostPerTrack_";
243  NumberOfRecHitsLostPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKLostBin, TKLostMin, TKLostMax);
244  NumberOfRecHitsLostPerTrack->setAxisTitle("Number of RecHits lost for each Track");
245  NumberOfRecHitsLostPerTrack->setAxisTitle("Number of Tracks", 2);
246 
247  histname = "NumberOfLayersPerTrack_";
248  NumberOfLayersPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKLayBin, TKLayMin, TKLayMax);
249  NumberOfLayersPerTrack->setAxisTitle("Number of Layers of each Track", 1);
250  NumberOfLayersPerTrack->setAxisTitle("Number of Tracks", 2);
251 
253 
254  histname = "NumberOfRecHitVsPhiVsEtaPerTrack_";
255  NumberOfRecHitVsPhiVsEtaPerTrack = dqmStore_->bookProfile2D(histname+CatagoryName, histname+CatagoryName,
256  EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax, 0, 40., "");
259  }
261 
262  histname = "NumberOfLayersVsPhiVsEtaPerTrack_";
263  NumberOfLayersVsPhiVsEtaPerTrack = dqmStore_->bookProfile2D(histname+CatagoryName, histname+CatagoryName,
264  EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax, 0, 40., "");
267  }
268  }
269 
270 
271  // book the General Property histograms
272  // ---------------------------------------------------------------------------------//
273 
275 
276  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
277 
278  histname = "Chi2_";
279  Chi2 = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2Bin, Chi2Min, Chi2Max);
280  Chi2->setAxisTitle("Track #chi^{2}" ,1);
281  Chi2->setAxisTitle("Number of Tracks",2);
282 
283  histname = "Chi2Prob_";
284  Chi2Prob = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2ProbBin, Chi2ProbMin, Chi2ProbMax);
285  Chi2Prob->setAxisTitle("Track #chi^{2} probability",1);
286  Chi2Prob->setAxisTitle("Number of Tracks" ,2);
287 
288  histname = "Chi2oNDF_";
289  Chi2oNDF = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2NDFBin, Chi2NDFMin, Chi2NDFMax);
290  Chi2oNDF->setAxisTitle("Track #chi^{2}/ndf",1);
291  Chi2oNDF->setAxisTitle("Number of Tracks" ,2);
292 
293  histname = "xPointOfClosestApproach_";
294  xPointOfClosestApproach = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, VXBin, VXMin, VXMax);
295  xPointOfClosestApproach->setAxisTitle("x component of Track PCA to beam line (cm)",1);
296  xPointOfClosestApproach->setAxisTitle("Number of Tracks",2);
297 
298  histname = "yPointOfClosestApproach_";
299  yPointOfClosestApproach = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, VYBin, VYMin, VYMax);
300  yPointOfClosestApproach->setAxisTitle("y component of Track PCA to beam line (cm)",1);
301  yPointOfClosestApproach->setAxisTitle("Number of Tracks",2);
302 
303  histname = "zPointOfClosestApproach_";
304  zPointOfClosestApproach = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, VZBin, VZMin, VZMax);
305  zPointOfClosestApproach->setAxisTitle("z component of Track PCA to beam line (cm)",1);
306  zPointOfClosestApproach->setAxisTitle("Number of Tracks",2);
307 
308  // See DataFormats/TrackReco/interface/TrackBase.h for track algorithm enum definition
309  // http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/CMSSW/DataFormats/TrackReco/interface/TrackBase.h?view=log
310  histname = "algorithm_";
311  algorithm = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, 32, 0., 32.);
312  algorithm->setAxisTitle("Tracking algorithm",1);
313  algorithm->setAxisTitle("Number of Tracks",2);
314 
315  }
316 
317  // book LS analysis related histograms
318  // -----------------------------------
319  if ( doLumiAnalysis_ ) {
320  // add by Mia in order to deal w/ LS transitions
321  dqmStore_->setCurrentFolder(MEFolderName+"/LSanalysis");
322 
323  histname = "NumberOfRecHitsPerTrack_lumiFlag_";
324  NumberOfRecHitsPerTrack_lumiFlag = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
325  NumberOfRecHitsPerTrack_lumiFlag->setAxisTitle("Number of all RecHits of each Track");
326  NumberOfRecHitsPerTrack_lumiFlag->setAxisTitle("Number of Tracks", 2);
327 
328  histname = "Chi2oNDF_lumiFlag_";
329  Chi2oNDF_lumiFlag = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2NDFBin, Chi2NDFMin, Chi2NDFMax);
330  Chi2oNDF_lumiFlag->setAxisTitle("Track #chi^{2}/ndf",1);
331  Chi2oNDF_lumiFlag->setAxisTitle("Number of Tracks" ,2);
332 
333  histname = "GoodTrackNumberOfRecHitsPerTrack_lumiFlag_";
334  GoodTrackNumberOfRecHitsPerTrack_lumiFlag = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
335  GoodTrackNumberOfRecHitsPerTrack_lumiFlag->setAxisTitle("Number of all RecHits of each Good Track");
336  GoodTrackNumberOfRecHitsPerTrack_lumiFlag->setAxisTitle("Number of Good Tracks", 2);
337 
338  histname = "GoodTrackChi2oNDF_lumiFlag_";
339  GoodTrackChi2oNDF_lumiFlag = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2NDFBin, Chi2NDFMin, Chi2NDFMax);
340  GoodTrackChi2oNDF_lumiFlag->setAxisTitle("Good Track #chi^{2}/ndf",1);
341  GoodTrackChi2oNDF_lumiFlag->setAxisTitle("Number of Good Tracks" ,2);
342  }
343 
344 
345  // book the Beam Spot related histograms
346  // ---------------------------------------------------------------------------------//
347 
348  if(doBSPlots_ || doAllPlots_)
349  {
350  // dqmStore_->setCurrentFolder(MEBSFolderName);
351  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
352 
353  histname = "DistanceOfClosestApproachToBS_";
354  DistanceOfClosestApproachToBS = dqmStore_->book1D(histname+CatagoryName,histname+CatagoryName,DxyBin,DxyMin,DxyMax);
355  DistanceOfClosestApproachToBS->setAxisTitle("Track d_{xy} wrt beam spot (cm)",1);
356  DistanceOfClosestApproachToBS->setAxisTitle("Number of Tracks",2);
357 
358  histname = "DistanceOfClosestApproachToBSVsPhi_";
359  DistanceOfClosestApproachToBSVsPhi = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, PhiBin, PhiMin, PhiMax, DxyBin, DxyMin, DxyMax,"");
360  DistanceOfClosestApproachToBSVsPhi->getTH1()->SetBit(TH1::kCanRebin);
362  DistanceOfClosestApproachToBSVsPhi->setAxisTitle("Track d_{xy} wrt beam spot (cm)",2);
363 
364  histname = "xPointOfClosestApproachVsZ0wrt000_";
365  xPointOfClosestApproachVsZ0wrt000 = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, Z0Bin, Z0Min, Z0Max, X0Bin, X0Min, X0Max,"");
367  xPointOfClosestApproachVsZ0wrt000->setAxisTitle("x component of Track PCA to beam line (cm)",2);
368 
369  histname = "yPointOfClosestApproachVsZ0wrt000_";
370  yPointOfClosestApproachVsZ0wrt000 = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, Z0Bin, Z0Min, Z0Max, Y0Bin, Y0Min, Y0Max,"");
372  yPointOfClosestApproachVsZ0wrt000->setAxisTitle("y component of Track PCA to beam line (cm)",2);
373 
374  histname = "xPointOfClosestApproachVsZ0wrtBS_";
375  xPointOfClosestApproachVsZ0wrtBS = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, Z0Bin, Z0Min, Z0Max, X0Bin, X0Min, X0Max,"");
376  xPointOfClosestApproachVsZ0wrtBS->setAxisTitle("d_{z} w.r.t. Beam Spot (cm)",1);
377  xPointOfClosestApproachVsZ0wrtBS->setAxisTitle("x component of Track PCA to BS (cm)",2);
378 
379  histname = "yPointOfClosestApproachVsZ0wrtBS_";
380  yPointOfClosestApproachVsZ0wrtBS = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, Z0Bin, Z0Min, Z0Max, Y0Bin, Y0Min, Y0Max,"");
381  yPointOfClosestApproachVsZ0wrtBS->setAxisTitle("d_{z} w.r.t. Beam Spot (cm)",1);
382  yPointOfClosestApproachVsZ0wrtBS->setAxisTitle("y component of Track PCA to BS (cm)",2);
383 
384  histname = "zPointOfClosestApproachVsPhi_";
385  zPointOfClosestApproachVsPhi = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, PhiBin, PhiMin, PhiMax, VZBin, VZMin, VZMax, "");
387  zPointOfClosestApproachVsPhi->setAxisTitle("y component of Track PCA to beam line (cm)",2);
388 
389  if (doTestPlots_) {
390 
391  histname = "TESTDistanceOfClosestApproachToBS_";
392  TESTDistanceOfClosestApproachToBS = dqmStore_->book1D(histname+CatagoryName,histname+CatagoryName,DxyBin,DxyMin,DxyMax);
393  TESTDistanceOfClosestApproachToBS->setAxisTitle("Track d_{xy} wrt beam spot (cm)",1);
394  TESTDistanceOfClosestApproachToBS->setAxisTitle("Number of Tracks",2);
395 
396  histname = "TESTDistanceOfClosestApproachToBSVsPhi_";
397  TESTDistanceOfClosestApproachToBSVsPhi = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, PhiBin, PhiMin, PhiMax, DxyBin, DxyMin, DxyMax,"");
398  TESTDistanceOfClosestApproachToBSVsPhi->getTH1()->SetBit(TH1::kCanRebin);
400  TESTDistanceOfClosestApproachToBSVsPhi->setAxisTitle("Track d_{xy} wrt beam spot (cm)",2);
401 
402  }
403 
404  }
405 
406  // book the Profile plots for DCA related histograms
407  // ---------------------------------------------------------------------------------//
408  if(doDCAPlots_ || doAllPlots_)
409  {
410  if (doDCAwrt000Plots_) {
411  if (doThetaPlots_) {
412  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
413  histname = "DistanceOfClosestApproachVsTheta_";
414  DistanceOfClosestApproachVsTheta = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, ThetaBin, ThetaMin, ThetaMax, DxyMin,DxyMax,"");
416  DistanceOfClosestApproachVsTheta->setAxisTitle("Track d_{xy} wrt (0,0,0) (cm)",2);
417  }
418 
419  histname = "DistanceOfClosestApproachVsEta_";
420  DistanceOfClosestApproachVsEta = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, EtaBin, EtaMin, EtaMax, DxyMin, DxyMax,"");
422  DistanceOfClosestApproachVsEta->setAxisTitle("Track d_{xy} wrt (0,0,0) (cm)",2);
423  // temporary patch in order to put back those MEs in Muon Workspace
424 
425  histname = "DistanceOfClosestApproach_";
426  DistanceOfClosestApproach = dqmStore_->book1D(histname+CatagoryName,histname+CatagoryName,DxyBin,DxyMin,DxyMax);
427  DistanceOfClosestApproach->setAxisTitle("Track d_{xy} wrt (0,0,0) (cm)",1);
428  DistanceOfClosestApproach->setAxisTitle("Number of Tracks",2);
429 
430  histname = "DistanceOfClosestApproachVsPhi_";
431  DistanceOfClosestApproachVsPhi = dqmStore_->bookProfile(histname+CatagoryName,histname+CatagoryName, PhiBin, PhiMin, PhiMax, DxyMin,DxyMax,"");
432  DistanceOfClosestApproachVsPhi->getTH1()->SetBit(TH1::kCanRebin);
434  DistanceOfClosestApproachVsPhi->setAxisTitle("Track d_{xy} wrt (0,0,0) (cm)",2);
435  }
436  }
437 
438 
439  // book tracker specific related histograms
440  // ---------------------------------------------------------------------------------//
442  {
444  }
445 
446  // book state related histograms
447  // ---------------------------------------------------------------------------------//
449 
450  std::string StateName = conf_.getParameter<std::string>("MeasurementState");
451 
452  if (StateName == "All")
453  {
454  bookHistosForState("OuterSurface", dqmStore_);
455  bookHistosForState("InnerSurface", dqmStore_);
456  bookHistosForState("ImpactPoint" , dqmStore_);
457  }
458  else if
459  (
460  StateName != "OuterSurface" &&
461  StateName != "InnerSurface" &&
462  StateName != "ImpactPoint" &&
463  StateName != "default"
464  )
465  {
466  bookHistosForState("default", dqmStore_);
467  }
468  else
469  {
470  bookHistosForState(StateName, dqmStore_);
471  }
472  }
473 
474  // book histos for good tracks (HP + Pt>1GeV)
475  // ---------------------------------------------------------------------------------//
476 
477  if ( doGoodTrackPlots_ || doAllPlots_ ) {
478 
479  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties/GoodTracks");
480 
481  histname = "GoodTrackChi2oNDF_";
482  GoodTrackChi2oNDF = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2NDFBin, Chi2NDFMin, Chi2NDFMax);
483  GoodTrackChi2oNDF->setAxisTitle("Good Track #chi^{2}/ndf",1);
484  GoodTrackChi2oNDF->setAxisTitle("Number of Good Tracks" ,2);
485 
486  histname = "GoodTrackChi2Prob_";
487  GoodTrackChi2Prob = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, Chi2ProbBin, Chi2ProbMin, Chi2ProbMax);
488  GoodTrackChi2Prob->setAxisTitle("Good Track #chi^{2} probability",1);
489  GoodTrackChi2Prob->setAxisTitle("Number of Good Tracks" ,2);
490 
491  histname = "GoodTrackChi2oNDFVsPhi_";
492  GoodTrackChi2oNDFVsPhi = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, PhiBin, PhiMin, PhiMax, Chi2NDFMin, Chi2NDFMax);
493  GoodTrackChi2oNDFVsPhi->setAxisTitle("Good Tracks #phi" ,1);
494  GoodTrackChi2oNDFVsPhi->setAxisTitle("Good Track #chi^{2}/ndf",2);
495 
496  histname = "GoodTrackChi2ProbVsPhi_";
497  GoodTrackChi2ProbVsPhi = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, PhiBin, PhiMin, PhiMax, Chi2ProbMin, Chi2ProbMax);
498  GoodTrackChi2ProbVsPhi->setAxisTitle("Good Tracks #phi" ,1);
499  GoodTrackChi2ProbVsPhi->setAxisTitle("Good Track #chi^{2} probability",2);
500 
501  histname = "GoodTrackChi2oNDFVsEta_";
502  GoodTrackChi2oNDFVsEta = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, EtaBin, EtaMin, EtaMax, Chi2NDFMin, Chi2NDFMax);
503  GoodTrackChi2oNDFVsEta->setAxisTitle("Good Tracks #eta" ,1);
504  GoodTrackChi2oNDFVsEta->setAxisTitle("Good Track #chi^{2}/ndf",2);
505 
506  histname = "GoodTrackChi2ProbVsEta_";
507  GoodTrackChi2ProbVsEta = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, EtaBin, EtaMin, EtaMax, Chi2ProbMin, Chi2ProbMax);
508  GoodTrackChi2ProbVsEta->setAxisTitle("Good Tracks #eta" ,1);
509  GoodTrackChi2ProbVsEta->setAxisTitle("Good Track #chi^{2} probability",2);
510 
511  histname = "GoodTrackAlgorithm_";
512  GoodTrackAlgorithm = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, 32, 0., 32.);
513  GoodTrackAlgorithm->setAxisTitle("Good Track tracking algorithm",1);
514  GoodTrackAlgorithm->setAxisTitle("Number of Good Tracks",2);
515 
516 
517  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties/GoodTracks");
518 
519  histname = "GoodTrackNumberOfRecHitsPerTrack_";
520  GoodTrackNumberOfRecHitsPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
521  GoodTrackNumberOfRecHitsPerTrack->setAxisTitle("Number of all RecHits of each Good Track");
522  GoodTrackNumberOfRecHitsPerTrack->setAxisTitle("Number of Good Tracks", 2);
523 
524  histname = "GoodTrackNumberOfRecHitsFoundPerTrack_";
525  GoodTrackNumberOfFoundRecHitsPerTrack = dqmStore_->book1D(histname+CatagoryName, histname+CatagoryName, TKHitBin, TKHitMin, TKHitMax);
526  GoodTrackNumberOfFoundRecHitsPerTrack->setAxisTitle("Number of found RecHits of each Good Track");
527  GoodTrackNumberOfFoundRecHitsPerTrack->setAxisTitle("Number of Good Tracks", 2);
528 
530 
531  histname = "GoodTrackNumberOfRecHitVsPhiVsEtaPerTrack_";
532  GoodTrackNumberOfRecHitVsPhiVsEtaPerTrack = dqmStore_->bookProfile2D(histname+CatagoryName, histname+CatagoryName,
533  EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax, 0, 40., "");
536  }
537 
539 
540  histname = "GoodTrackNumberOfLayersVsPhiVsEtaPerTrack_";
541  GoodTrackNumberOfLayersVsPhiVsEtaPerTrack = dqmStore_->bookProfile2D(histname+CatagoryName, histname+CatagoryName,
542  EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax, 0, 40., "");
545  }
546  // rechits
547  histname = "GoodTrackNumberOfRecHitsPerTrackVsPhiProfile_";
548  GoodTrackNumberOfRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, PhiBin, PhiMin, PhiMax, RecHitMin, RecHitMax,"");
550  GoodTrackNumberOfRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of RecHits of each Track",2);
551 
552  histname = "GoodTrackNumberOfRecHitsPerTrackVsEtaProfile_";
553  GoodTrackNumberOfRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, EtaBin, EtaMin, EtaMax, RecHitMin, RecHitMax,"");
555  GoodTrackNumberOfRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of RecHits of each Track",2);
556 
557  histname = "GoodTrackNumberOfFoundRecHitsPerTrackVsPhiProfile_";
558  GoodTrackNumberOfFoundRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, PhiBin, PhiMin, PhiMax, RecHitMin, RecHitMax,"");
560  GoodTrackNumberOfFoundRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of found RecHits of each Track",2);
561 
562  histname = "GoodTrackNumberOfFoundRecHitsPerTrackVsEtaProfile_";
563  GoodTrackNumberOfFoundRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname+CatagoryName, histname+CatagoryName, EtaBin, EtaMin, EtaMax, RecHitMin, RecHitMax,"");
565  GoodTrackNumberOfFoundRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of found RecHits of each Track",2);
566 
567  }
568 
569 }
570 
571 // -- Analyse
572 // ---------------------------------------------------------------------------------//
573 void TrackAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup, const reco::Track& track)
574 {
575 
577  // rec hits
578  // originally it was track.recHitsSize(), but it is exploiting extra
579  // therefore it is moved to track.hitPattern().numberOfHits()
583 
584  // 2D plots
587 
588  // layers
590  // 2D plots
593 
594 
595  }
596 
598  // fitting
599  Chi2->Fill(track.chi2());
600  Chi2Prob->Fill(TMath::Prob(track.chi2(),(int)track.ndof()));
601  Chi2oNDF->Fill(track.normalizedChi2());
602 
603  // DCA
604  // temporary patch in order to put back those MEs in Muon Workspace
605  if (doDCAwrt000Plots_) {
607  DistanceOfClosestApproachVsPhi->Fill(track.phi(), track.dxy());
608  }
609  /*
610  http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/CMSSW/DataFormats/TrackReco/interface/TrackBase.h?view=markup
611  vertex() is DEPRECATED !!
612  xPointOfClosestApproach->Fill(track.vertex().x());
613  yPointOfClosestApproach->Fill(track.vertex().y());
614  zPointOfClosestApproach->Fill(track.vertex().z());
615  */
616 
617  // PCA
621 
622  // algorithm
623  algorithm->Fill(static_cast<double>(track.algo()));
624 
625  }
626 
627  if ( doLumiAnalysis_ ) {
630  }
631 
632  if(doBSPlots_ || doAllPlots_)
633  {
634  edm::InputTag bsSrc = conf_.getParameter< edm::InputTag >("beamSpot");
635 
636  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
637  iEvent.getByLabel(bsSrc,recoBeamSpotHandle);
638  reco::BeamSpot bs = *recoBeamSpotHandle;
639 
641  DistanceOfClosestApproachToBSVsPhi->Fill(track.phi(), track.dxy(bs.position()));
642  zPointOfClosestApproachVsPhi->Fill(track.phi(),track.vz());
643  xPointOfClosestApproachVsZ0wrt000->Fill(track.dz(),track.vx());
644  yPointOfClosestApproachVsZ0wrt000->Fill(track.dz(),track.vy());
645  xPointOfClosestApproachVsZ0wrtBS->Fill(track.dz(bs.position()),(track.vx()-bs.position(track.vz()).x()));
646  yPointOfClosestApproachVsZ0wrtBS->Fill(track.dz(bs.position()),(track.vy()-bs.position(track.vz()).y()));
647  if (doTestPlots_) {
649  TESTDistanceOfClosestApproachToBSVsPhi->Fill(track.phi(), track.dxy(bs.position(track.vz())));
650  }
651  }
652 
653  if(doDCAPlots_ || doAllPlots_)
654  {
655  if (doDCAwrt000Plots_) {
656  if (doThetaPlots_) {
657  DistanceOfClosestApproachVsTheta->Fill(track.theta(), track.d0());
658  }
659  DistanceOfClosestApproachVsEta->Fill(track.eta(), track.d0());
660  }
661  }
662  //Tracker Specific Histograms
664  {
666  }
667 
669  std::string StateName = conf_.getParameter<std::string>("MeasurementState");
670  if (StateName == "All")
671  {
672  fillHistosForState(iSetup, track, std::string("OuterSurface"));
673  fillHistosForState(iSetup, track, std::string("InnerSurface"));
674  fillHistosForState(iSetup, track, std::string("ImpactPoint"));
675  }
676  else if
677  (
678  StateName != "OuterSurface" &&
679  StateName != "InnerSurface" &&
680  StateName != "ImpactPoint" &&
681  StateName != "default"
682  )
683  {
684  fillHistosForState(iSetup, track, std::string("default"));
685  }
686  else
687  {
688  fillHistosForState(iSetup, track, StateName);
689  }
690  }
691 
692  // Good Tracks plots
693  if ( track.quality(reco::TrackBase::highPurity) && track.pt() > 1. ) {
694  if ( doGoodTrackPlots_ || doAllPlots_ ) {
696  GoodTrackChi2Prob->Fill(TMath::Prob(track.chi2(),(int)track.ndof()));
697  GoodTrackChi2oNDFVsPhi->Fill(track.phi(),track.normalizedChi2());
698  GoodTrackChi2ProbVsPhi->Fill(track.phi(),TMath::Prob(track.chi2(),(int)track.ndof()));
699  GoodTrackChi2oNDFVsEta->Fill(track.eta(),track.normalizedChi2());
700  GoodTrackChi2ProbVsEta->Fill(track.eta(),TMath::Prob(track.chi2(),(int)track.ndof()));
701 
702  // originally it was track.recHitsSize(), but it is exploiting extra
703  // therefore it is moved to track.hitPattern().numberOfHits()
706  // algorithm
707  GoodTrackAlgorithm->Fill(static_cast<double>(track.algo()));
712 
715 
718  }
719  if ( doLumiAnalysis_ ) {
722  }
723  }
724 
725 }
726 
727 
728 // book histograms at differnt measurement points
729 // ---------------------------------------------------------------------------------//
731 {
732 
733 
734  // parameters from the configuration
735  std::string QualName = conf_.getParameter<std::string>("Quality");
736  std::string AlgoName = conf_.getParameter<std::string>("AlgoName");
737  std::string MEFolderName = conf_.getParameter<std::string>("FolderName");
738 
739  // use the AlgoName and Quality Name
740  std::string CatagoryName = QualName != "" ? AlgoName + "_" + QualName : AlgoName;
741 
742  // get binning from the configuration
743  double Chi2NDFMin = conf_.getParameter<double>("Chi2NDFMin");
744  double Chi2NDFMax = conf_.getParameter<double>("Chi2NDFMax");
745 
746  int RecHitBin = conf_.getParameter<int>( "RecHitBin");
747  double RecHitMin = conf_.getParameter<double>("RecHitMin");
748  double RecHitMax = conf_.getParameter<double>("RecHitMax");
749 
750  int RecLayBin = conf_.getParameter<int>( "RecHitBin");
751  double RecLayMin = conf_.getParameter<double>("RecHitMin");
752  double RecLayMax = conf_.getParameter<double>("RecHitMax");
753 
754 
755  int PhiBin = conf_.getParameter<int>( "PhiBin");
756  double PhiMin = conf_.getParameter<double>("PhiMin");
757  double PhiMax = conf_.getParameter<double>("PhiMax");
758 
759  int EtaBin = conf_.getParameter<int>( "EtaBin");
760  double EtaMin = conf_.getParameter<double>("EtaMin");
761  double EtaMax = conf_.getParameter<double>("EtaMax");
762 
763  int ThetaBin = conf_.getParameter<int>( "ThetaBin");
764  double ThetaMin = conf_.getParameter<double>("ThetaMin");
765  double ThetaMax = conf_.getParameter<double>("ThetaMax");
766 
767  int TrackQBin = conf_.getParameter<int>( "TrackQBin");
768  double TrackQMin = conf_.getParameter<double>("TrackQMin");
769  double TrackQMax = conf_.getParameter<double>("TrackQMax");
770 
771  int TrackPtBin = conf_.getParameter<int>( "TrackPtBin");
772  double TrackPtMin = conf_.getParameter<double>("TrackPtMin");
773  double TrackPtMax = conf_.getParameter<double>("TrackPtMax");
774 
775  int TrackPBin = conf_.getParameter<int>( "TrackPBin");
776  double TrackPMin = conf_.getParameter<double>("TrackPMin");
777  double TrackPMax = conf_.getParameter<double>("TrackPMax");
778 
779  int TrackPxBin = conf_.getParameter<int>( "TrackPxBin");
780  double TrackPxMin = conf_.getParameter<double>("TrackPxMin");
781  double TrackPxMax = conf_.getParameter<double>("TrackPxMax");
782 
783  int TrackPyBin = conf_.getParameter<int>( "TrackPyBin");
784  double TrackPyMin = conf_.getParameter<double>("TrackPyMin");
785  double TrackPyMax = conf_.getParameter<double>("TrackPyMax");
786 
787  int TrackPzBin = conf_.getParameter<int>( "TrackPzBin");
788  double TrackPzMin = conf_.getParameter<double>("TrackPzMin");
789  double TrackPzMax = conf_.getParameter<double>("TrackPzMax");
790 
791  int ptErrBin = conf_.getParameter<int>( "ptErrBin");
792  double ptErrMin = conf_.getParameter<double>("ptErrMin");
793  double ptErrMax = conf_.getParameter<double>("ptErrMax");
794 
795  int pxErrBin = conf_.getParameter<int>( "pxErrBin");
796  double pxErrMin = conf_.getParameter<double>("pxErrMin");
797  double pxErrMax = conf_.getParameter<double>("pxErrMax");
798 
799  int pyErrBin = conf_.getParameter<int>( "pyErrBin");
800  double pyErrMin = conf_.getParameter<double>("pyErrMin");
801  double pyErrMax = conf_.getParameter<double>("pyErrMax");
802 
803  int pzErrBin = conf_.getParameter<int>( "pzErrBin");
804  double pzErrMin = conf_.getParameter<double>("pzErrMin");
805  double pzErrMax = conf_.getParameter<double>("pzErrMax");
806 
807  int pErrBin = conf_.getParameter<int>( "pErrBin");
808  double pErrMin = conf_.getParameter<double>("pErrMin");
809  double pErrMax = conf_.getParameter<double>("pErrMax");
810 
811  int phiErrBin = conf_.getParameter<int>( "phiErrBin");
812  double phiErrMin = conf_.getParameter<double>("phiErrMin");
813  double phiErrMax = conf_.getParameter<double>("phiErrMax");
814 
815  int etaErrBin = conf_.getParameter<int>( "etaErrBin");
816  double etaErrMin = conf_.getParameter<double>("etaErrMin");
817  double etaErrMax = conf_.getParameter<double>("etaErrMax");
818 
819 
820  dqmStore_->setCurrentFolder(MEFolderName);
821 
822  TkParameterMEs tkmes;
823 
824  std::string histTag = (sname == "default") ? CatagoryName : sname + "_" + CatagoryName;
825 
826  if(doAllPlots_)
827  {
828 
829  // COMMENTED BEACUSE THERE IS ALREADY THE PROFILE !!! (blablaProfile)
830  /*
831  // hit properties
832  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties");
833  // rechits
834  histname = "NumberOfRecHitsPerTrackVsPhi_" + histTag;
835  tkmes.NumberOfRecHitsPerTrackVsPhi = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, RecHitMin, RecHitMax,"");
836  tkmes.NumberOfRecHitsPerTrackVsPhi->setAxisTitle("Track #phi",1);
837  tkmes.NumberOfRecHitsPerTrackVsPhi->setAxisTitle("Number of found RecHits of each Track",2);
838 
839  if (doThetaPlots_) {
840  histname = "NumberOfRecHitsPerTrackVsTheta_" + histTag;
841  tkmes.NumberOfRecHitsPerTrackVsTheta = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, RecHitMin, RecHitMax,"");
842  tkmes.NumberOfRecHitsPerTrackVsTheta->setAxisTitle("Track #theta",1);
843  tkmes.NumberOfRecHitsPerTrackVsTheta->setAxisTitle("Number of found RecHits of each Track",2);
844  }
845  histname = "NumberOfRecHitsPerTrackVsEta_" + histTag;
846  tkmes.NumberOfRecHitsPerTrackVsEta = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, RecHitMin, RecHitMax,"");
847  tkmes.NumberOfRecHitsPerTrackVsEta->setAxisTitle("Track #eta",1);
848  tkmes.NumberOfRecHitsPerTrackVsEta->setAxisTitle("Number of found RecHits of each Track",2);
849 
850  histname = "NumberOfLayersPerTrackVsPhi_" + histTag;
851  tkmes.NumberOfLayersPerTrackVsPhi = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, RecLayMin, RecLayMax,"");
852  tkmes.NumberOfLayersPerTrackVsPhi->setAxisTitle("Track #phi",1);
853  tkmes.NumberOfLayersPerTrackVsPhi->setAxisTitle("Number of Layers of each Track",2);
854 
855  if (doThetaPlots_) {
856  histname = "NumberOfLayersPerTrackVsTheta_" + histTag;
857  tkmes.NumberOfLayersPerTrackVsTheta = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, RecLayMin, RecLayMax,"");
858  tkmes.NumberOfLayersPerTrackVsTheta->setAxisTitle("Track #theta",1);
859  tkmes.NumberOfLayersPerTrackVsTheta->setAxisTitle("Number of Layers of each Track",2);
860  }
861  histname = "NumberOfLayersPerTrackVsEta_" + histTag;
862  tkmes.NumberOfLayersPerTrackVsEta = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, RecLayMin, RecLayMax,"");
863  tkmes.NumberOfLayersPerTrackVsEta->setAxisTitle("Track #eta",1);
864  tkmes.NumberOfLayersPerTrackVsEta->setAxisTitle("Number of Layers of each Track",2);
865  */
866 
867  // general properties
868  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
869 
870  if (doThetaPlots_) {
871  histname = "Chi2oNDFVsTheta_" + histTag;
872  tkmes.Chi2oNDFVsTheta = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, Chi2NDFMin, Chi2NDFMax,"");
873  tkmes.Chi2oNDFVsTheta->setAxisTitle("Track #theta",1);
874  tkmes.Chi2oNDFVsTheta->setAxisTitle("Track #chi^{2}/ndf",2);
875  }
876  histname = "Chi2oNDFVsPhi_" + histTag;
877  tkmes.Chi2oNDFVsPhi = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, Chi2NDFMin, Chi2NDFMax,"");
878  tkmes.Chi2oNDFVsPhi->setAxisTitle("Track #phi",1);
879  tkmes.Chi2oNDFVsPhi->setAxisTitle("Track #chi^{2}/ndf",2);
880 
881  histname = "Chi2oNDFVsEta_" + histTag;
882  tkmes.Chi2oNDFVsEta = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, Chi2NDFMin, Chi2NDFMax,"");
883  tkmes.Chi2oNDFVsEta->setAxisTitle("Track #eta",1);
884  tkmes.Chi2oNDFVsEta->setAxisTitle("Track #chi^{2}/ndf",2);
885  }
886 
887  // general properties
888  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties");
889 
890  histname = "TrackP_" + histTag;
891 
892  tkmes.TrackP = dqmStore_->book1D(histname, histname, TrackPBin, TrackPMin, TrackPMax);
893  tkmes.TrackP->setAxisTitle("Track |p| (GeV/c)", 1);
894  tkmes.TrackP->setAxisTitle("Number of Tracks",2);
895 
896  histname = "TrackPt_" + histTag;
897  tkmes.TrackPt = dqmStore_->book1D(histname, histname, TrackPtBin, TrackPtMin, TrackPtMax);
898  tkmes.TrackPt->setAxisTitle("Track p_{T} (GeV/c)", 1);
899  tkmes.TrackPt->setAxisTitle("Number of Tracks",2);
900 
901  if (doTrackPxPyPlots_) {
902  histname = "TrackPx_" + histTag;
903  tkmes.TrackPx = dqmStore_->book1D(histname, histname, TrackPxBin, TrackPxMin, TrackPxMax);
904  tkmes.TrackPx->setAxisTitle("Track p_{x} (GeV/c)", 1);
905  tkmes.TrackPx->setAxisTitle("Number of Tracks",2);
906 
907  histname = "TrackPy_" + histTag;
908  tkmes.TrackPy = dqmStore_->book1D(histname, histname, TrackPyBin, TrackPyMin, TrackPyMax);
909  tkmes.TrackPy->setAxisTitle("Track p_{y} (GeV/c)", 1);
910  tkmes.TrackPy->setAxisTitle("Number of Tracks",2);
911  }
912  histname = "TrackPz_" + histTag;
913  tkmes.TrackPz = dqmStore_->book1D(histname, histname, TrackPzBin, TrackPzMin, TrackPzMax);
914  tkmes.TrackPz->setAxisTitle("Track p_{z} (GeV/c)", 1);
915  tkmes.TrackPz->setAxisTitle("Number of Tracks",2);
916 
917  histname = "TrackPhi_" + histTag;
918  tkmes.TrackPhi = dqmStore_->book1D(histname, histname, PhiBin, PhiMin, PhiMax);
919  tkmes.TrackPhi->setAxisTitle("Track #phi", 1);
920  tkmes.TrackPhi->setAxisTitle("Number of Tracks",2);
921 
922  histname = "TrackEta_" + histTag;
923  tkmes.TrackEta = dqmStore_->book1D(histname, histname, EtaBin, EtaMin, EtaMax);
924  tkmes.TrackEta->setAxisTitle("Track #eta", 1);
925  tkmes.TrackEta->setAxisTitle("Number of Tracks",2);
926 
927  if (doThetaPlots_) {
928  histname = "TrackTheta_" + histTag;
929  tkmes.TrackTheta = dqmStore_->book1D(histname, histname, ThetaBin, ThetaMin, ThetaMax);
930  tkmes.TrackTheta->setAxisTitle("Track #theta", 1);
931  tkmes.TrackTheta->setAxisTitle("Number of Tracks",2);
932  }
933  histname = "TrackQ_" + histTag;
934  tkmes.TrackQ = dqmStore_->book1D(histname, histname, TrackQBin, TrackQMin, TrackQMax);
935  tkmes.TrackQ->setAxisTitle("Track Charge", 1);
936  tkmes.TrackQ->setAxisTitle("Number of Tracks",2);
937 
938  histname = "TrackPErrOverP_" + histTag;
939  tkmes.TrackPErr = dqmStore_->book1D(histname, histname, pErrBin, pErrMin, pErrMax);
940  tkmes.TrackPErr->setAxisTitle("error(p)/p", 1);
941  tkmes.TrackPErr->setAxisTitle("Number of Tracks",2);
942 
943  histname = "TrackPtErrOverPt_" + histTag;
944  tkmes.TrackPtErr = dqmStore_->book1D(histname, histname, ptErrBin, ptErrMin, ptErrMax);
945  tkmes.TrackPtErr->setAxisTitle("error(p_{T})/p_{T}", 1);
946  tkmes.TrackPtErr->setAxisTitle("Number of Tracks",2);
947 
948  histname = "TrackPtErrOverPtVsEta_" + histTag;
949  tkmes.TrackPtErrVsEta = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, ptErrMin, ptErrMax);
950  tkmes.TrackPtErrVsEta->setAxisTitle("Track #eta",1);
951  tkmes.TrackPtErrVsEta->setAxisTitle("error(p_{T})/p_{T}", 2);
952 
953  if (doTrackPxPyPlots_) {
954  histname = "TrackPxErrOverPx_" + histTag;
955  tkmes.TrackPxErr = dqmStore_->book1D(histname, histname, pxErrBin, pxErrMin, pxErrMax);
956  tkmes.TrackPxErr->setAxisTitle("error(p_{x})/p_{x}", 1);
957  tkmes.TrackPxErr->setAxisTitle("Number of Tracks",2);
958 
959  histname = "TrackPyErrOverPy_" + histTag;
960  tkmes.TrackPyErr = dqmStore_->book1D(histname, histname, pyErrBin, pyErrMin, pyErrMax);
961  tkmes.TrackPyErr->setAxisTitle("error(p_{y})/p_{y}", 1);
962  tkmes.TrackPyErr->setAxisTitle("Number of Tracks",2);
963  }
964  histname = "TrackPzErrOverPz_" + histTag;
965  tkmes.TrackPzErr = dqmStore_->book1D(histname, histname, pzErrBin, pzErrMin, pzErrMax);
966  tkmes.TrackPzErr->setAxisTitle("error(p_{z})/p_{z}", 1);
967  tkmes.TrackPzErr->setAxisTitle("Number of Tracks",2);
968 
969  histname = "TrackPhiErr_" + histTag;
970  tkmes.TrackPhiErr = dqmStore_->book1D(histname, histname, phiErrBin, phiErrMin, phiErrMax);
971  tkmes.TrackPhiErr->setAxisTitle("error(#phi)");
972  tkmes.TrackPhiErr->setAxisTitle("Number of Tracks",2);
973 
974  histname = "TrackEtaErr_" + histTag;
975  tkmes.TrackEtaErr = dqmStore_->book1D(histname, histname, etaErrBin, etaErrMin, etaErrMax);
976  tkmes.TrackEtaErr->setAxisTitle("error(#eta)");
977  tkmes.TrackEtaErr->setAxisTitle("Number of Tracks",2);
978 
979  // rec hit profiles
980  histname = "NumberOfRecHitsPerTrackVsPhiProfile_" + histTag;
981  tkmes.NumberOfRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, RecHitBin, RecHitMin, RecHitMax,"");
982  tkmes.NumberOfRecHitsPerTrackVsPhiProfile->setAxisTitle("Track #phi",1);
983  tkmes.NumberOfRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of found RecHits of each Track",2);
984 
985  if (doThetaPlots_) {
986  histname = "NumberOfRecHitsPerTrackVsThetaProfile_" + histTag;
987  tkmes.NumberOfRecHitsPerTrackVsThetaProfile = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, RecHitBin, RecHitMin, RecHitMax,"");
989  tkmes.NumberOfRecHitsPerTrackVsThetaProfile->setAxisTitle("Number of found RecHits of each Track",2);
990  }
991  histname = "NumberOfRecHitsPerTrackVsEtaProfile_" + histTag;
992  tkmes.NumberOfRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, RecHitBin, RecHitMin, RecHitMax,"");
993  tkmes.NumberOfRecHitsPerTrackVsEtaProfile->setAxisTitle("Track #eta",1);
994  tkmes.NumberOfRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of found RecHits of each Track",2);
995 
996  histname = "NumberOfLayersPerTrackVsPhiProfile_" + histTag;
997  tkmes.NumberOfLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, RecLayBin, RecLayMin, RecLayMax,"");
998  tkmes.NumberOfLayersPerTrackVsPhiProfile->setAxisTitle("Track #phi",1);
999  tkmes.NumberOfLayersPerTrackVsPhiProfile->setAxisTitle("Number of Layers of each Track",2);
1000 
1001  if (doThetaPlots_) {
1002  histname = "NumberOfLayersPerTrackVsThetaProfile_" + histTag;
1003  tkmes.NumberOfLayersPerTrackVsThetaProfile = dqmStore_->bookProfile(histname, histname, ThetaBin, ThetaMin, ThetaMax, RecLayBin, RecLayMin, RecLayMax,"");
1004  tkmes.NumberOfLayersPerTrackVsThetaProfile->setAxisTitle("Track #phi",1);
1005  tkmes.NumberOfLayersPerTrackVsThetaProfile->setAxisTitle("Number of Layers of each Track",2);
1006  }
1007  histname = "NumberOfLayersPerTrackVsEtaProfile_" + histTag;
1008  tkmes.NumberOfLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, RecLayBin, RecLayMin, RecLayMax,"");
1009  tkmes.NumberOfLayersPerTrackVsEtaProfile->setAxisTitle("Track #eta",1);
1010  tkmes.NumberOfLayersPerTrackVsEtaProfile->setAxisTitle("Number of Layers of each Track",2);
1011 
1012  if ( doGoodTrackPlots_ || doAllPlots_ ) {
1013 
1014  dqmStore_->setCurrentFolder(MEFolderName+"/GeneralProperties/GoodTracks");
1015 
1016  histname = "GoodTrackPt_" + histTag;
1017  tkmes.GoodTrackPt = dqmStore_->book1D(histname, histname, TrackPtBin, TrackPtMin, TrackPtMax);
1018  tkmes.GoodTrackPt->setAxisTitle("Good Track p_{T} (GeV/c)", 1);
1019  tkmes.GoodTrackPt->setAxisTitle("Number of Tracks",2);
1020 
1021  histname = "GoodTrackEta_" + histTag;
1022  tkmes.GoodTrackEta = dqmStore_->book1D(histname, histname, EtaBin, EtaMin, EtaMax);
1023  tkmes.GoodTrackEta->setAxisTitle("Good Track #eta", 1);
1024  tkmes.GoodTrackEta->setAxisTitle("Number of Tracks",2);
1025 
1026  histname = "GoodTrackPhi_" + histTag;
1027  tkmes.GoodTrackPhi = dqmStore_->book1D(histname, histname, PhiBin, PhiMin, PhiMax);
1028  tkmes.GoodTrackPhi->setAxisTitle("Good Track #phi", 1);
1029  tkmes.GoodTrackPhi->setAxisTitle("Number of Tracks",2);
1030 
1031  }
1032 
1033  // now put the MEs in the map
1034  TkParameterMEMap.insert( std::make_pair(sname, tkmes) );
1035 }
1036 
1037 
1038 // fill histograms at differnt measurement points
1039 // ---------------------------------------------------------------------------------//
1041 {
1042  //get the kinematic parameters
1043  double p, px, py, pz, pt, theta, phi, eta, q;
1044  double pxerror, pyerror, pzerror, pterror, perror, phierror, etaerror;
1045 
1046  bool isHighPurity = track.quality(reco::TrackBase::highPurity);
1047 
1048  if (sname == "default")
1049  {
1050  p = track.p();
1051  px = track.px();
1052  py = track.py();
1053  pz = track.pz();
1054  pt = track.pt();
1055  phi = track.phi();
1056  theta = track.theta();
1057  eta = track.eta();
1058  q = track.charge();
1059 
1060  // pterror = (pt) ? track.ptError()/pt : 0.0;
1061  pterror = (pt) ? track.ptError()/(pt*pt) : 0.0;
1062  pxerror = -1.0;
1063  pyerror = -1.0;
1064  pzerror = -1.0;
1065  perror = -1.0;
1066  phierror = track.phiError();
1067  etaerror = track.etaError();
1068 
1069  }
1070  else
1071  {
1073  iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",theB);
1074  reco::TransientTrack TransTrack = theB->build(track);
1075 
1077 
1078  if (sname == "OuterSurface") TSOS = TransTrack.outermostMeasurementState();
1079  else if (sname == "InnerSurface") TSOS = TransTrack.innermostMeasurementState();
1080  else if (sname == "ImpactPoint") TSOS = TransTrack.impactPointState();
1081 
1082  p = TSOS.globalMomentum().mag();
1083  px = TSOS.globalMomentum().x();
1084  py = TSOS.globalMomentum().y();
1085  pz = TSOS.globalMomentum().z();
1086  pt = TSOS.globalMomentum().perp();
1087  phi = TSOS.globalMomentum().phi();
1088  theta = TSOS.globalMomentum().theta();
1089  eta = TSOS.globalMomentum().eta();
1090  q = TSOS.charge();
1091 
1092  //get the error of the kinimatic parameters
1094  double partialPterror = errors(3,3)*pow(TSOS.globalMomentum().x(),2) + errors(4,4)*pow(TSOS.globalMomentum().y(),2);
1095  pterror = sqrt(partialPterror)/TSOS.globalMomentum().perp();
1096  pxerror = sqrt(errors(3,3))/TSOS.globalMomentum().x();
1097  pyerror = sqrt(errors(4,4))/TSOS.globalMomentum().y();
1098  pzerror = sqrt(errors(5,5))/TSOS.globalMomentum().z();
1099  perror = sqrt(partialPterror+errors(5,5)*pow(TSOS.globalMomentum().z(),2))/TSOS.globalMomentum().mag();
1100  phierror = sqrt(TSOS.curvilinearError().matrix()(2,2));
1101  etaerror = sqrt(TSOS.curvilinearError().matrix()(1,1))*fabs(sin(TSOS.globalMomentum().theta()));
1102 
1103  }
1104 
1105  std::map<std::string, TkParameterMEs>::iterator iPos = TkParameterMEMap.find(sname);
1106  if (iPos != TkParameterMEMap.end())
1107  {
1108  TkParameterMEs tkmes = iPos->second;
1109 
1110  // momentum
1111  tkmes.TrackP->Fill(p);
1112  if (doTrackPxPyPlots_) {
1113  tkmes.TrackPx->Fill(px);
1114  tkmes.TrackPy->Fill(py);
1115  }
1116  tkmes.TrackPz->Fill(pz);
1117  tkmes.TrackPt->Fill(pt);
1118 
1119  // angles
1120  tkmes.TrackPhi->Fill(phi);
1121  tkmes.TrackEta->Fill(eta);
1122  if (doThetaPlots_) {
1123  tkmes.TrackTheta->Fill(theta);
1124  }
1125  tkmes.TrackQ->Fill(q);
1126 
1127  // errors
1128  tkmes.TrackPtErr->Fill(pterror);
1129  tkmes.TrackPtErrVsEta->Fill(eta,pterror);
1130  if (doTrackPxPyPlots_) {
1131  tkmes.TrackPxErr->Fill(pxerror);
1132  tkmes.TrackPyErr->Fill(pyerror);
1133  }
1134  tkmes.TrackPzErr->Fill(pzerror);
1135  tkmes.TrackPErr->Fill(perror);
1136  tkmes.TrackPhiErr->Fill(phierror);
1137  tkmes.TrackEtaErr->Fill(etaerror);
1138 
1139  // rec hits
1141  if (doThetaPlots_) {
1143  }
1145 
1146 
1147  // rec layers
1149  if (doThetaPlots_) {
1151  }
1153 
1154  if(doAllPlots_)
1155  {
1156  /*
1157  // COMMENTED because the same MEs are already fill below !!!!
1158  // hit related
1159  tkmes.NumberOfRecHitsPerTrackVsPhi->Fill(phi, track.found());
1160  if (doThetaPlots_) {
1161  tkmes.NumberOfRecHitsPerTrackVsTheta->Fill(theta, track.found());
1162  }
1163  tkmes.NumberOfRecHitsPerTrackVsEta->Fill(eta, track.found());
1164  */
1165 
1166  // general properties
1167  if (doThetaPlots_) {
1168  tkmes.Chi2oNDFVsTheta->Fill(theta, track.normalizedChi2());
1169  }
1170  tkmes.Chi2oNDFVsPhi->Fill(phi, track.normalizedChi2());
1171  tkmes.Chi2oNDFVsEta->Fill(eta, track.normalizedChi2());
1172 
1173  // COMMENTED because there are already those quantity in blablaProfile !!
1174  /*
1175  // rec hits
1176  tkmes.NumberOfRecHitsPerTrackVsPhi->Fill(phi, track.hitPattern().numberOfValidHits());
1177  if (doThetaPlots_) {
1178  tkmes.NumberOfRecHitsPerTrackVsTheta->Fill(theta, track.hitPattern().numberOfValidHits());
1179  }
1180  tkmes.NumberOfRecHitsPerTrackVsEta->Fill(eta, track.hitPattern().numberOfValidHits());
1181  */
1182 
1183  }
1184 
1185  if ( doGoodTrackPlots_ || doAllPlots_ ) {
1186  if ( isHighPurity && pt > 1. ) {
1187  tkmes.GoodTrackPt->Fill(pt);
1188  tkmes.GoodTrackEta->Fill(eta);
1189  tkmes.GoodTrackPhi->Fill(phi);
1190  }
1191  }
1192 
1193  }
1194 }
1195 
1196 
1198 {
1199 
1200  // parameters from the configuration
1201  std::string QualName = conf_.getParameter<std::string>("Quality");
1202  std::string AlgoName = conf_.getParameter<std::string>("AlgoName");
1203  std::string MEFolderName = conf_.getParameter<std::string>("FolderName");
1204 
1205  // use the AlgoName and Quality Name
1206  std::string CatagoryName = QualName != "" ? AlgoName + "_" + QualName : AlgoName;
1207 
1208  // get binning from the configuration
1209  int TOBHitBin = conf_.getParameter<int>( "TOBHitBin");
1210  double TOBHitMin = conf_.getParameter<double>("TOBHitMin");
1211  double TOBHitMax = conf_.getParameter<double>("TOBHitMax");
1212 
1213  int TIBHitBin = conf_.getParameter<int>( "TIBHitBin");
1214  double TIBHitMin = conf_.getParameter<double>("TIBHitMin");
1215  double TIBHitMax = conf_.getParameter<double>("TIBHitMax");
1216 
1217  int TIDHitBin = conf_.getParameter<int>( "TIDHitBin");
1218  double TIDHitMin = conf_.getParameter<double>("TIDHitMin");
1219  double TIDHitMax = conf_.getParameter<double>("TIDHitMax");
1220 
1221  int TECHitBin = conf_.getParameter<int>( "TECHitBin");
1222  double TECHitMin = conf_.getParameter<double>("TECHitMin");
1223  double TECHitMax = conf_.getParameter<double>("TECHitMax");
1224 
1225  int PXBHitBin = conf_.getParameter<int>( "PXBHitBin");
1226  double PXBHitMin = conf_.getParameter<double>("PXBHitMin");
1227  double PXBHitMax = conf_.getParameter<double>("PXBHitMax");
1228 
1229  int PXFHitBin = conf_.getParameter<int>( "PXFHitBin");
1230  double PXFHitMin = conf_.getParameter<double>("PXFHitMin");
1231  double PXFHitMax = conf_.getParameter<double>("PXFHitMax");
1232 
1233  int TOBLayBin = conf_.getParameter<int>( "TOBLayBin");
1234  double TOBLayMin = conf_.getParameter<double>("TOBLayMin");
1235  double TOBLayMax = conf_.getParameter<double>("TOBLayMax");
1236 
1237  int TIBLayBin = conf_.getParameter<int>( "TIBLayBin");
1238  double TIBLayMin = conf_.getParameter<double>("TIBLayMin");
1239  double TIBLayMax = conf_.getParameter<double>("TIBLayMax");
1240 
1241  int TIDLayBin = conf_.getParameter<int>( "TIDLayBin");
1242  double TIDLayMin = conf_.getParameter<double>("TIDLayMin");
1243  double TIDLayMax = conf_.getParameter<double>("TIDLayMax");
1244 
1245  int TECLayBin = conf_.getParameter<int>( "TECLayBin");
1246  double TECLayMin = conf_.getParameter<double>("TECLayMin");
1247  double TECLayMax = conf_.getParameter<double>("TECLayMax");
1248 
1249  int PXBLayBin = conf_.getParameter<int>( "PXBLayBin");
1250  double PXBLayMin = conf_.getParameter<double>("PXBLayMin");
1251  double PXBLayMax = conf_.getParameter<double>("PXBLayMax");
1252 
1253  int PXFLayBin = conf_.getParameter<int>( "PXFLayBin");
1254  double PXFLayMin = conf_.getParameter<double>("PXFLayMin");
1255  double PXFLayMax = conf_.getParameter<double>("PXFLayMax");
1256 
1257 
1258  int PhiBin = conf_.getParameter<int>( "PhiBin");
1259  double PhiMin = conf_.getParameter<double>("PhiMin");
1260  double PhiMax = conf_.getParameter<double>("PhiMax");
1261 
1262  int EtaBin = conf_.getParameter<int>( "EtaBin");
1263  double EtaMin = conf_.getParameter<double>("EtaMin");
1264  double EtaMax = conf_.getParameter<double>("EtaMax");
1265 
1266  // book hit property histograms
1267  // ---------------------------------------------------------------------------------//
1268  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties");
1269 
1270 
1271  TkParameterMEs tkmes;
1272 
1273  // TOB hits properties
1274  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties/TOB");
1275 
1276  histname = "NumberOfTOBRecHitsPerTrack_" + CatagoryName;
1277  NumberOfTOBRecHitsPerTrack = dqmStore_->book1D(histname, histname, TOBHitBin, TOBHitMin, TOBHitMax);
1278  NumberOfTOBRecHitsPerTrack->setAxisTitle("Number of TOB found RecHits of each Track",1);
1279  NumberOfTOBRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1280 
1281  histname = "NumberOfTOBRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1282  NumberOfTOBRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TOBHitBin, TOBHitMin, TOBHitMax,"");
1284  NumberOfTOBRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of TOB found RecHits of each Track",2);
1285 
1286  histname = "NumberOfTOBRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1287  NumberOfTOBRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TOBHitBin, TOBHitMin, TOBHitMax,"");
1289  NumberOfTOBRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of TOB found RecHits of each Track",2);
1290 
1291  histname = "NumberOfTOBLayersPerTrack_" + CatagoryName;
1292  NumberOfTOBLayersPerTrack = dqmStore_->book1D(histname, histname, TOBLayBin, TOBLayMin, TOBLayMax);
1293  NumberOfTOBLayersPerTrack->setAxisTitle("Number of TOB Layers of each Track",1);
1294  NumberOfTOBLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1295 
1296  histname = "NumberOfTOBLayersPerTrackVsPhiProfile_" + CatagoryName;
1297  NumberOfTOBLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TOBLayBin, TOBLayMin, TOBLayMax,"");
1299  NumberOfTOBLayersPerTrackVsPhiProfile->setAxisTitle("Number of TOB Layers of each Track",2);
1300 
1301  histname = "NumberOfTOBLayersPerTrackVsEtaProfile_" + CatagoryName;
1302  NumberOfTOBLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TOBLayBin, TOBLayMin, TOBLayMax,"");
1304  NumberOfTOBLayersPerTrackVsEtaProfile->setAxisTitle("Number of TOB Layers of each Track",2);
1305 
1306 
1307  // TIB hits properties
1308  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties/TIB");
1309 
1310  histname = "NumberOfTIBRecHitsPerTrack_" + CatagoryName;
1311  NumberOfTIBRecHitsPerTrack = dqmStore_->book1D(histname, histname, TIBHitBin, TIBHitMin, TIBHitMax);
1312  NumberOfTIBRecHitsPerTrack->setAxisTitle("Number of TIB found RecHits of each Track",1);
1313  NumberOfTIBRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1314 
1315  histname = "NumberOfTIBRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1316  NumberOfTIBRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TIBHitBin, TIBHitMin, TIBHitMax,"");
1318  NumberOfTIBRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of TIB found RecHits of each Track",2);
1319 
1320  histname = "NumberOfTIBRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1321  NumberOfTIBRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TIBHitBin, TIBHitMin, TIBHitMax,"");
1323  NumberOfTIBRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of TIB found RecHits of each Track",2);
1324 
1325  histname = "NumberOfTIBLayersPerTrack_" + CatagoryName;
1326  NumberOfTIBLayersPerTrack = dqmStore_->book1D(histname, histname, TIBLayBin, TIBLayMin, TIBLayMax);
1327  NumberOfTIBLayersPerTrack->setAxisTitle("Number of TIB Layers of each Track",1);
1328  NumberOfTIBLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1329 
1330  histname = "NumberOfTIBLayersPerTrackVsPhiProfile_" + CatagoryName;
1331  NumberOfTIBLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TIBLayBin, TIBLayMin, TIBLayMax,"");
1333  NumberOfTIBLayersPerTrackVsPhiProfile->setAxisTitle("Number of TIB Layers of each Track",2);
1334 
1335  histname = "NumberOfTIBLayersPerTrackVsEtaProfile_" + CatagoryName;
1336  NumberOfTIBLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TIBLayBin, TIBLayMin, TIBLayMax,"");
1338  NumberOfTIBLayersPerTrackVsEtaProfile->setAxisTitle("Number of TIB Layers of each Track",2);
1339 
1340 
1341  // TID hit properties
1342  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties/TID");
1343 
1344  histname = "NumberOfTIDRecHitsPerTrack_" + CatagoryName;
1345  NumberOfTIDRecHitsPerTrack = dqmStore_->book1D(histname, histname, TIDHitBin, TIDHitMin, TIDHitMax);
1346  NumberOfTIDRecHitsPerTrack->setAxisTitle("Number of TID found RecHits of each Track",1);
1347  NumberOfTIDRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1348 
1349  histname = "NumberOfTIDRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1350  NumberOfTIDRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TIDHitBin, TIDHitMin, TIDHitMax,"");
1352  NumberOfTIDRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of TID found RecHits of each Track",2);
1353 
1354  histname = "NumberOfTIDRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1355  NumberOfTIDRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TIDHitBin, TIDHitMin, TIDHitMax,"");
1357  NumberOfTIDRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of TID found RecHits of each Track",2);
1358 
1359  histname = "NumberOfTIDLayersPerTrack_" + CatagoryName;
1360  NumberOfTIDLayersPerTrack = dqmStore_->book1D(histname, histname, TIDLayBin, TIDLayMin, TIDLayMax);
1361  NumberOfTIDLayersPerTrack->setAxisTitle("Number of TID Layers of each Track",1);
1362  NumberOfTIDLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1363 
1364  histname = "NumberOfTIDLayersPerTrackVsPhiProfile_" + CatagoryName;
1365  NumberOfTIDLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TIDLayBin, TIDLayMin, TIDLayMax,"");
1367  NumberOfTIDLayersPerTrackVsPhiProfile->setAxisTitle("Number of TID Layers of each Track",2);
1368 
1369  histname = "NumberOfTIDLayersPerTrackVsEtaProfile_" + CatagoryName;
1370  NumberOfTIDLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TIDLayBin, TIDLayMin, TIDLayMax,"");
1372  NumberOfTIDLayersPerTrackVsEtaProfile->setAxisTitle("Number of TID Layers of each Track",2);
1373 
1374 
1375  // TEC hits properties
1376  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties/TEC");
1377 
1378  histname = "NumberOfTECRecHitsPerTrack_"+ CatagoryName;
1379  NumberOfTECRecHitsPerTrack = dqmStore_->book1D(histname, histname, TECHitBin, TECHitMin, TECHitMax);
1380  NumberOfTECRecHitsPerTrack->setAxisTitle("Number of TEC found RecHits of each Track",1);
1381  NumberOfTECRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1382 
1383  histname = "NumberOfTECRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1384  NumberOfTECRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TECHitBin, TECHitMin, TECHitMax,"");
1386  NumberOfTECRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of TEC found RecHits of each Track",2);
1387 
1388  histname = "NumberOfTECRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1389  NumberOfTECRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TECHitBin, TECHitMin, TECHitMax,"");
1391  NumberOfTECRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of TEC found RecHits of each Track",2);
1392 
1393  histname = "NumberOfTECLayersPerTrack_"+ CatagoryName;
1394  NumberOfTECLayersPerTrack = dqmStore_->book1D(histname, histname, TECLayBin, TECLayMin, TECLayMax);
1395  NumberOfTECLayersPerTrack->setAxisTitle("Number of TEC Layers of each Track",1);
1396  NumberOfTECLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1397 
1398  histname = "NumberOfTECLayersPerTrackVsPhiProfile_" + CatagoryName;
1399  NumberOfTECLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, TECLayBin, TECLayMin, TECLayMax,"");
1401  NumberOfTECLayersPerTrackVsPhiProfile->setAxisTitle("Number of TEC Layers of each Track",2);
1402 
1403  histname = "NumberOfTECLayersPerTrackVsEtaProfile_" + CatagoryName;
1404  NumberOfTECLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, TECLayBin, TECLayMin, TECLayMax,"");
1406  NumberOfTECLayersPerTrackVsEtaProfile->setAxisTitle("Number of TEC Layers of each Track",2);
1407 
1408 
1409  // PixBarrel hits properties
1410  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties/PixBarrel");
1411 
1412  histname = "NumberOfPixBarrelRecHitsPerTrack_" + CatagoryName;
1413  NumberOfPixBarrelRecHitsPerTrack = dqmStore_->book1D(histname, histname, PXBHitBin, PXBHitMin, PXBHitMax);
1414  NumberOfPixBarrelRecHitsPerTrack->setAxisTitle("Number of Pixel Barrel found RecHits of each Track",1);
1415  NumberOfPixBarrelRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1416 
1417  histname = "NumberOfPixBarrelRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1418  NumberOfPixBarrelRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, PXBHitBin, PXBHitMin, PXBHitMax,"");
1420  NumberOfPixBarrelRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of Pixel Barrel found RecHits of each Track",2);
1421 
1422  histname = "NumberOfPixBarrelRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1423  NumberOfPixBarrelRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, PXBHitBin, PXBHitMin, PXBHitMax,"");
1425  NumberOfPixBarrelRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of Pixel Barrel found RecHits of each Track",2);
1426 
1427  histname = "NumberOfPixBarrelLayersPerTrack_" + CatagoryName;
1428  NumberOfPixBarrelLayersPerTrack = dqmStore_->book1D(histname, histname, PXBLayBin, PXBLayMin, PXBLayMax);
1429  NumberOfPixBarrelLayersPerTrack->setAxisTitle("Number of Pixel Barrel Layers of each Track",1);
1430  NumberOfPixBarrelLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1431 
1432  histname = "NumberOfPixBarrelLayersPerTrackVsPhiProfile_" + CatagoryName;
1433  NumberOfPixBarrelLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, PXBLayBin, PXBLayMin, PXBLayMax,"");
1435  NumberOfPixBarrelLayersPerTrackVsPhiProfile->setAxisTitle("Number of Pixel Barrel Layers of each Track",2);
1436 
1437  histname = "NumberOfPixBarrelLayersPerTrackVsEtaProfile_" + CatagoryName;
1438  NumberOfPixBarrelLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, PXBLayBin, PXBLayMin, PXBLayMax,"");
1440  NumberOfPixBarrelLayersPerTrackVsEtaProfile->setAxisTitle("Number of Pixel Barrel Layers of each Track",2);
1441 
1442 
1443  // PixEndcap hits profiles
1444  dqmStore_->setCurrentFolder(MEFolderName+"/HitProperties/PixEndcap");
1445 
1446  histname = "NumberOfPixEndcapRecHitsPerTrack_" + CatagoryName;
1447  NumberOfPixEndcapRecHitsPerTrack = dqmStore_->book1D(histname, histname, PXFHitBin, PXFHitMin, PXFHitMax);
1448  NumberOfPixEndcapRecHitsPerTrack->setAxisTitle("Number of Pixel Endcap found RecHits of each Track",1);
1449  NumberOfPixEndcapRecHitsPerTrack->setAxisTitle("Number of Tracks", 2);
1450 
1451  histname = "NumberOfPixEndcapRecHitsPerTrackVsPhiProfile_" + CatagoryName;
1452  NumberOfPixEndcapRecHitsPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, PXBHitBin, PXBHitMin, PXBHitMax,"");
1454  NumberOfPixEndcapRecHitsPerTrackVsPhiProfile->setAxisTitle("Number of Pixel Endcap found RecHits of each Track",2);
1455 
1456  histname = "NumberOfPixEndcapRecHitsPerTrackVsEtaProfile_" + CatagoryName;
1457  NumberOfPixEndcapRecHitsPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, PXBHitBin, PXBHitMin, PXBHitMax,"");
1459  NumberOfPixEndcapRecHitsPerTrackVsEtaProfile->setAxisTitle("Number of Pixel Endcap found RecHits of each Track",2);
1460 
1461  histname = "NumberOfPixEndcapLayersPerTrack_" + CatagoryName;
1462  NumberOfPixEndcapLayersPerTrack = dqmStore_->book1D(histname, histname, PXFLayBin, PXFLayMin, PXFLayMax);
1463  NumberOfPixEndcapLayersPerTrack->setAxisTitle("Number of Pixel Endcap Layers of each Track",1);
1464  NumberOfPixEndcapLayersPerTrack->setAxisTitle("Number of Tracks", 2);
1465 
1466  histname = "NumberOfPixEndcapLayersPerTrackVsPhiProfile_" + CatagoryName;
1467  NumberOfPixEndcapLayersPerTrackVsPhiProfile = dqmStore_->bookProfile(histname, histname, PhiBin, PhiMin, PhiMax, PXBLayBin, PXBLayMin, PXBLayMax,"");
1469  NumberOfPixEndcapLayersPerTrackVsPhiProfile->setAxisTitle("Number of Pixel Endcap Layers of each Track",2);
1470 
1471  histname = "NumberOfPixEndcapLayersPerTrackVsEtaProfile_" + CatagoryName;
1472  NumberOfPixEndcapLayersPerTrackVsEtaProfile = dqmStore_->bookProfile(histname, histname, EtaBin, EtaMin, EtaMax, PXBLayBin, PXBLayMin, PXBLayMax,"");
1474  NumberOfPixEndcapLayersPerTrackVsEtaProfile->setAxisTitle("Number of Pixel Endcap Layers of each Track",2);
1475 
1476 }
1477 
1478 
1480 {
1481  double phi = track.phi();
1482  double eta = track.eta();
1483 
1484  //Fill TIB Layers and RecHits
1488 
1492 
1493  //Fill TOB Layers and RecHits
1497 
1501 
1502 
1503  //Fill TID Layers and RecHits
1507 
1511 
1512 
1513  //Fill TEC Layers and RecHits
1517 
1521 
1522  //Fill PixBarrel Layers and RecHits
1526 
1530 
1531  //Fill PixEndcap Layers and RecHits
1535 
1539 
1540 }
1541 //
1542 // -- Set Lumi Flag
1543 //
1545  /*
1546  if (Chi2oNDF) Chi2oNDF->setLumiFlag();
1547  if (NumberOfRecHitsPerTrack) NumberOfRecHitsPerTrack->setLumiFlag();
1548  if (GoodTrackChi2oNDF) GoodTrackChi2oNDF->setLumiFlag();
1549  if (GoodTrackNumberOfRecHitsPerTrack) GoodTrackNumberOfRecHitsPerTrack->setLumiFlag();
1550  */
1555 }
1556 //
1557 // -- Apply SoftReset
1558 //
1560  dqmStore_->softReset(Chi2oNDF);
1561  dqmStore_->softReset(NumberOfRecHitsPerTrack);
1562  dqmStore_->softReset(GoodTrackChi2oNDF);
1564 }
1565 //
1566 // -- Apply Reset
1567 //
1573 }
1574 //
1575 // -- Remove SoftReset
1576 //
1578  dqmStore_->disableSoftReset(Chi2oNDF);
1580  dqmStore_->disableSoftReset(GoodTrackChi2oNDF);
1582 }
1583 
1584 
double p() const
momentum vector magnitude
Definition: TrackBase.h:129
int stripTOBLayersWithMeasurement() const
Definition: HitPattern.cc:375
T getParameter(std::string const &) const
MonitorElement * NumberOfPixEndcapLayersPerTrackVsEtaProfile
MonitorElement * NumberOfRecHitsFoundPerTrack
Definition: TrackAnalyzer.h:80
MonitorElement * NumberOfRecHitVsPhiVsEtaPerTrack
Definition: TrackAnalyzer.h:83
< trclass="colgroup">< tdclass="colgroup"colspan=5 > Ecal cluster collections</td ></tr >< tr >< td >< ahref="classreco_1_1BasicCluster.html"> reco::BasicCluster</a ></td >< td >< ahref="DataFormats_EgammaReco.html"> reco::BasicClusterCollection</a ></td >< td >< ahref="#"> hybridSuperClusters</a ></td >< tdclass="description"> Basic clusters reconstructed with hybrid algorithm(barrel only)</td >< td >S.Rahatlou</td ></tr >< tr >< td >< a href
bool doTrackerSpecific_
Definition: TrackAnalyzer.h:51
MonitorElement * NumberOfLayersPerTrackVsEtaProfile
MonitorElement * NumberOfPixEndcapLayersPerTrack
T perp() const
Definition: PV3DBase.h:72
MonitorElement * NumberOfPixBarrelLayersPerTrack
MonitorElement * GoodTrackNumberOfRecHitsPerTrackVsPhiProfile
MonitorElement * GoodTrackChi2ProbVsPhi
double d0() const
dxy parameter in perigee convention (d0 = - dxy)
Definition: TrackBase.h:123
MonitorElement * GoodTrackNumberOfRecHitsPerTrack
MonitorElement * NumberOfTOBLayersPerTrackVsPhiProfile
MonitorElement * GoodTrackNumberOfLayersVsPhiVsEtaPerTrack
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
MonitorElement * NumberOfTIDRecHitsPerTrackVsPhiProfile
MonitorElement * GoodTrackChi2oNDFVsPhi
int stripTIBLayersWithMeasurement() const
Definition: HitPattern.cc:357
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 * Chi2oNDF_lumiFlag
MonitorElement * NumberOfRecHitsLostPerTrack
Definition: TrackAnalyzer.h:81
double theta() const
polar angle
Definition: TrackBase.h:117
MonitorElement * NumberOfTIBLayersPerTrack
MonitorElement * NumberOfTOBRecHitsPerTrack
MonitorElement * NumberOfPixEndcapRecHitsPerTrack
int numberOfValidHits() const
Definition: HitPattern.h:570
const CurvilinearTrajectoryError & curvilinearError() const
MonitorElement * NumberOfTECRecHitsPerTrackVsPhiProfile
MonitorElement * NumberOfPixBarrelRecHitsPerTrackVsPhiProfile
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
MonitorElement * NumberOfTIBRecHitsPerTrackVsPhiProfile
MonitorElement * NumberOfTIDRecHitsPerTrackVsEtaProfile
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
edm::ParameterSet conf_
Definition: TrackAnalyzer.h:49
MonitorElement * NumberOfRecHitsPerTrackVsPhiProfile
const CartesianTrajectoryError cartesianError() const
void doReset(DQMStore *dqmStore_)
Geom::Theta< T > theta() const
bool doGeneralPropertiesPlots_
Definition: TrackAnalyzer.h:56
T y() const
Definition: PV3DBase.h:63
double etaError() const
error on eta
Definition: TrackBase.h:205
MonitorElement * NumberOfPixBarrelRecHitsPerTrackVsEtaProfile
MonitorElement * GoodTrackNumberOfRecHitVsPhiVsEtaPerTrack
MonitorElement * DistanceOfClosestApproachVsPhi
Definition: TrackAnalyzer.h:91
MonitorElement * GoodTrackNumberOfRecHitsPerTrack_lumiFlag
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:139
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
Definition: TrackBase.h:234
#define NULL
Definition: scimark2.h:8
std::map< std::string, TkParameterMEs > TkParameterMEMap
MonitorElement * GoodTrackNumberOfRecHitsPerTrackVsEtaProfile
MonitorElement * algorithm
const double EtaMax[kNumberCalorimeter]
double px() const
x coordinate of momentum vector
Definition: TrackBase.h:133
T eta() const
bool doHitPropertiesPlots_
Definition: TrackAnalyzer.h:58
MonitorElement * DistanceOfClosestApproach
Definition: TrackAnalyzer.h:88
MonitorElement * NumberOfPixEndcapLayersPerTrackVsPhiProfile
bool doRecHitVsPhiVsEtaPerTrack_
Definition: TrackAnalyzer.h:59
const Point & referencePoint() const
Reference point on the track.
Definition: TrackBase.h:153
MonitorElement * NumberOfTIBLayersPerTrackVsEtaProfile
MonitorElement * NumberOfRecHitsPerTrack_lumiFlag
int pixelEndcapLayersWithMeasurement() const
Definition: HitPattern.cc:347
int numberOfValidStripTOBHits() const
Definition: HitPattern.h:606
bool doMeasurementStatePlots_
Definition: TrackAnalyzer.h:57
TrajectoryStateOnSurface innermostMeasurementState() const
MonitorElement * NumberOfRecHitsPerTrack
Definition: TrackAnalyzer.h:79
void Fill(long long x)
MonitorElement * NumberOfPixEndcapRecHitsPerTrackVsEtaProfile
Geom::Theta< T > theta() const
Definition: PV3DBase.h:75
MonitorElement * GoodTrackChi2oNDF
MonitorElement * GoodTrackChi2Prob
TrackAlgorithm algo() const
Definition: TrackBase.h:332
void bookHistosForState(std::string sname, DQMStore *dqmStore_)
void disableSoftReset(MonitorElement *me)
Definition: DQMStore.cc:2747
MonitorElement * TESTDistanceOfClosestApproachToBSVsPhi
MonitorElement * NumberOfTECLayersPerTrackVsEtaProfile
MonitorElement * NumberOfLayersPerTrackVsPhiProfile
MonitorElement * NumberOfPixBarrelLayersPerTrackVsPhiProfile
virtual void beginJob(DQMStore *dqmStore_)
MonitorElement * Chi2oNDFVsEta
int iEvent
Definition: GenABIO.cc:243
MonitorElement * xPointOfClosestApproachVsZ0wrt000
Definition: TrackAnalyzer.h:95
T mag() const
Definition: PV3DBase.h:67
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:141
MonitorElement * GoodTrackChi2ProbVsEta
int numberOfValidPixelBarrelHits() const
Definition: HitPattern.h:586
MonitorElement * NumberOfTOBLayersPerTrack
MonitorElement * NumberOfTECLayersPerTrack
bool doDCAwrt000Plots_
Definition: TrackAnalyzer.h:72
void doTrackerSpecificInitialization(DQMStore *dqmStore_)
MonitorElement * xPointOfClosestApproach
Definition: TrackAnalyzer.h:94
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:107
MonitorElement * GoodTrackAlgorithm
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * NumberOfTIDRecHitsPerTrack
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:366
int trackerLayersWithMeasurement() const
Definition: HitPattern.h:721
T sqrt(T t)
Definition: SSEVec.h:48
double pt() const
track transverse momentum
Definition: TrackBase.h:131
T z() const
Definition: PV3DBase.h:64
MonitorElement * NumberOfLayersPerTrackVsThetaProfile
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:194
MonitorElement * xPointOfClosestApproachVsZ0wrtBS
Definition: TrackAnalyzer.h:96
double phiError() const
error on phi
Definition: TrackBase.h:207
MonitorElement * NumberOfTIDLayersPerTrack
int numberOfHits() const
Definition: HitPattern.cc:213
MonitorElement * NumberOfTECRecHitsPerTrackVsEtaProfile
MonitorElement * NumberOfTIDLayersPerTrackVsPhiProfile
int numberOfValidStripTIDHits() const
Definition: HitPattern.h:602
TH1 * getTH1(void) const
const double EtaMin[kNumberCalorimeter]
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:232
MonitorElement * GoodTrackNumberOfFoundRecHitsPerTrackVsEtaProfile
int numberOfValidStripTECHits() const
Definition: HitPattern.h:610
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:1036
void softReset(MonitorElement *me)
Definition: DQMStore.cc:2739
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:361
MonitorElement * DistanceOfClosestApproachVsEta
Definition: TrackAnalyzer.h:93
MonitorElement * zPointOfClosestApproachVsPhi
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
double vz() const
z coordinate of the reference point on track
Definition: TrackBase.h:147
void fillHistosForState(const edm::EventSetup &iSetup, const reco::Track &track, std::string sname)
MonitorElement * NumberOfTOBRecHitsPerTrackVsPhiProfile
TrajectoryStateOnSurface TSOS
Definition: TestHits.cc:19
virtual ~TrackAnalyzer()
bool doLumiAnalysis_
Definition: TrackAnalyzer.h:74
MonitorElement * NumberOfTIBLayersPerTrackVsPhiProfile
bool doGoodTrackPlots_
Definition: TrackAnalyzer.h:54
MonitorElement * GoodTrackChi2oNDFVsEta
virtual void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup, const reco::Track &track)
MonitorElement * yPointOfClosestApproachVsZ0wrtBS
Definition: TrackAnalyzer.h:99
MonitorElement * NumberOfLayersPerTrack
Definition: TrackAnalyzer.h:82
MonitorElement * NumberOfTIBRecHitsPerTrackVsEtaProfile
MonitorElement * NumberOfRecHitsPerTrackVsEtaProfile
const T & get() const
Definition: EventSetup.h:55
int stripLayersWithMeasurement() const
Definition: HitPattern.h:731
int pixelBarrelLayersWithMeasurement() const
Definition: HitPattern.cc:337
MonitorElement * NumberOfPixEndcapRecHitsPerTrackVsPhiProfile
MonitorElement * DistanceOfClosestApproachVsTheta
Definition: TrackAnalyzer.h:90
MonitorElement * GoodTrackNumberOfFoundRecHitsPerTrackVsPhiProfile
int numberOfValidStripTIBHits() const
Definition: HitPattern.h:598
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:377
int numberOfValidPixelEndcapHits() const
Definition: HitPattern.h:590
T eta() const
Definition: PV3DBase.h:76
MonitorElement * NumberOfTECLayersPerTrackVsPhiProfile
MonitorElement * NumberOfTIDLayersPerTrackVsEtaProfile
double vy() const
y coordinate of the reference point on track
Definition: TrackBase.h:145
MonitorElement * NumberOfTOBLayersPerTrackVsEtaProfile
const AlgebraicSymMatrix55 & matrix() const
bool doTrackPxPyPlots_
Definition: TrackAnalyzer.h:69
GlobalVector globalMomentum() const
MonitorElement * DistanceOfClosestApproachToBSVsPhi
Definition: TrackAnalyzer.h:92
bool doLayersVsPhiVsEtaPerTrack_
Definition: TrackAnalyzer.h:61
void doSoftReset(DQMStore *dqmStore_)
MonitorElement * NumberOfTECRecHitsPerTrack
int stripTECLayersWithMeasurement() const
Definition: HitPattern.cc:384
MonitorElement * yPointOfClosestApproachVsZ0wrt000
Definition: TrackAnalyzer.h:98
MonitorElement * TrackPtErrVsEta
bool doGoodTrackRecHitVsPhiVsEtaPerTrack_
Definition: TrackAnalyzer.h:62
MonitorElement * TESTDistanceOfClosestApproachToBS
bool doGoodTrackLayersVsPhiVsEtaPerTrack_
Definition: TrackAnalyzer.h:63
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:97
MonitorElement * NumberOfPixBarrelRecHitsPerTrack
void Reset(std::vector< TH2F > &depth)
MonitorElement * NumberOfLayersVsPhiVsEtaPerTrack
Definition: TrackAnalyzer.h:84
Definition: DDAxes.h:10
MonitorElement * Chi2Prob
Definition: TrackAnalyzer.h:86
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
TrackAnalyzer(const edm::ParameterSet &)
T x() const
Definition: PV3DBase.h:62
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * NumberOfRecHitsPerTrackVsThetaProfile
MonitorElement * GoodTrackNumberOfFoundRecHitsPerTrack
MonitorElement * DistanceOfClosestApproachToBS
Definition: TrackAnalyzer.h:89
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
MonitorElement * Chi2oNDF
Definition: TrackAnalyzer.h:87
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
std::string histname
MonitorElement * GoodTrackChi2oNDF_lumiFlag
MonitorElement * NumberOfTOBRecHitsPerTrackVsEtaProfile
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: DDAxes.h:10
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
Definition: DQMStore.cc:1180
MonitorElement * Chi2oNDFVsPhi