CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
QcdUeDQM.cc
Go to the documentation of this file.
1 
2 /*
3  This is the DQM code for UE physics plots
4  11/12/2009 Sunil Bansal
5 */
36 #include <TString.h>
37 #include <TMath.h>
38 #include <TH1F.h>
39 #include <TH2F.h>
40 #include <TH3F.h>
41 #include <TProfile.h>
42 using namespace std;
43 using namespace edm;
44 
45 #define CP(level) \
46  if (level>=verbose_)
47 
48 struct deleter {
49  void operator()(TH3F *&h) { delete h; h=0;}
50 };
51 
52 
53 //--------------------------------------------------------------------------------------------------
55  hltResName_(parameters.getUntrackedParameter<string>("hltTrgResults")),
56  verbose_(parameters.getUntrackedParameter<int>("verbose",3)),
57  tgeo_(0),
58  theDbe_(0),
59  repSumMap_(0),
60  repSummary_(0),
61  h2TrigCorr_(0),
62  ptMin_(parameters.getParameter<double>("ptMin")),
63  minRapidity_(parameters.getParameter<double>("minRapidity")),
64  maxRapidity_(parameters.getParameter<double>("maxRapidity")),
65  tip_(parameters.getParameter<double>("tip")),
66  lip_(parameters.getParameter<double>("lip")),
67  diffvtxbs_(parameters.getParameter<double>("diffvtxbs")),
68  ptErr_pt_(parameters.getParameter<double>("ptErr_pt")),
69  vtxntk_(parameters.getParameter<double>("vtxntk")),
70  minHit_(parameters.getParameter<int>("minHit")),
71  pxlLayerMinCut_(parameters.getParameter<double>("pxlLayerMinCut")),
72  requirePIX1_(parameters.getParameter<bool>("requirePIX1")),
73  min3DHit_(parameters.getParameter<int>("min3DHit")),
74  maxChi2_(parameters.getParameter<double>("maxChi2")),
75  bsuse_(parameters.getParameter<bool>("bsuse")),
76  allowTriplets_(parameters.getParameter<bool>("allowTriplets")),
77  bsPos_(parameters.getParameter<double>("bsPos")),
78  caloJetLabel_(consumes<reco::CaloJetCollection>(
79  parameters.getUntrackedParameter<edm::InputTag>("caloJetTag"))),
80  chargedJetLabel_(consumes<reco::TrackJetCollection>(
81  parameters.getUntrackedParameter<edm::InputTag>("chargedJetTag"))),
82  trackLabel_(consumes<reco::TrackCollection>(
83  parameters.getUntrackedParameter<edm::InputTag>("trackTag"))),
84  vtxLabel_(consumes<reco::VertexCollection>(
85  parameters.getUntrackedParameter<edm::InputTag>("vtxTag"))),
86  bsLabel_(consumes<reco::BeamSpot>(
87  parameters.getParameter<edm::InputTag>("beamSpotTag")))
88 {
89  // Constructor.
90  std::vector<std::string> quality = parameters.getParameter<std::vector<std::string> >("quality");
91  for (unsigned int j=0;j<quality.size();j++) quality_.push_back(reco::TrackBase::qualityByName(quality[j]));
92  std::vector<std::string> algorithm = parameters.getParameter<std::vector<std::string> >("algorithm");
93  for (unsigned int j=0;j<algorithm.size();j++) algorithm_.push_back(reco::TrackBase::algoByName(algorithm[j]));
94 
95  if (parameters.exists("hltTrgNames"))
96  hltTrgNames_ = parameters.getUntrackedParameter<vector<string> >("hltTrgNames");
97 
98  if (parameters.exists("hltProcNames"))
99  hltProcNames_ = parameters.getUntrackedParameter<vector<string> >("hltProcNames");
100  else {
101  // hltProcNames_.push_back("FU");
102  hltProcNames_.push_back("HLT");
103  }
104 
105  isHltConfigSuccessful_ = false; // init
106 
107 }
108 
109 //--------------------------------------------------------------------------------------------------
111 {
112  // Destructor.
113 
114 
115 }
116 
117 //--------------------------------------------------------------------------------------------------
118 void QcdUeDQM::analyze(const Event &iEvent, const EventSetup &iSetup)
119 {
120  if( ! isHltConfigSuccessful_ ) return;
121 
122  // Analyze the given event.
123 
125  bool ValidBS_ = iEvent.getByToken(bsLabel_,beamSpot);
126  if(!ValidBS_)return;
127 
129  bool ValidTrack_ = iEvent.getByToken(trackLabel_,tracks);
130  if(!ValidTrack_)return;
131 
133  bool ValidTrackJet_ = iEvent.getByToken(chargedJetLabel_,trkJets );
134  if(!ValidTrackJet_)return;
135 
136 
138  bool ValidCaloJet_ = iEvent.getByToken(caloJetLabel_,calJets);
139  if(!ValidCaloJet_)return;
140 
142  bool ValidVtxColl_ = iEvent.getByToken(vtxLabel_, vertexColl);
143  if(!ValidVtxColl_)return;
144 
145  reco::TrackCollection tracks_sort = *tracks;
146  std::sort(tracks_sort.begin(), tracks_sort.end(), PtSorter());
147 
148  // get tracker geometry
149 /* ESHandle<TrackerGeometry> trackerHandle;
150  iSetup.get<TrackerDigiGeometryRecord>().get(trackerHandle);
151  tgeo_ = trackerHandle.product();
152  if (!tgeo_)return;
153 */
154  selected_.clear();
155  fillHltBits(iEvent,iSetup);
156  // select good tracks
157  if(fillVtxPlots(beamSpot.product(),vertexColl))
158  {
159  fill1D(hNevts_,1);
160  for(reco::TrackCollection::const_iterator Trk = tracks_sort.begin(); Trk != tracks_sort.end(); ++Trk)
161  {
162 
163  if ( trackSelection(*Trk,beamSpot.product(),vtx1,vertexColl->size()) ) selected_.push_back( & * Trk );
164  }
165 
166 
168  fillChargedJetSpectra(trkJets);
169 // fillCaloJetSpectra(calJets);
171  if(trkJets->size() > 0)fillUE_with_ChargedJets(selected_,trkJets);
172  // if(calJets->size()>0)fillUE_with_CaloJets(selected_,calJets);
173 
174  }
175 
176 }
177 
178 //--------------------------------------------------------------------------------------------------
180 {
181  // Begin job and setup the DQM store.
182 
184  if (!theDbe_)return;
185 
186  // theDbe_->setCurrentFolder("Physics/QcdUe");
187 
188 }
189 
190 //--------------------------------------------------------------------------------------------------
192  const EventSetup &iSetup)
193 {
194  if( ! isHltConfigSuccessful_ ) return;
195 
196  // At the moment, nothing needed to be done.
197 }
198 
199 //--------------------------------------------------------------------------------------------------
200 void QcdUeDQM::beginRun(const Run &run, const EventSetup &iSetup)
201 {
202 
203  // indicating change of HLT cfg at run boundries
204  // for HLTConfigProvider::init()
205  bool isHltCfgChange = false;
206  isHltConfigSuccessful_ = false; // init
207 
208  string teststr;
209  for(size_t i=0; i<hltProcNames_.size(); ++i) {
210  if (i>0)
211  teststr += ", ";
212  teststr += hltProcNames_.at(i);
213  if ( hltConfig.init( run, iSetup, hltProcNames_.at(i), isHltCfgChange ) ) {
214  isHltConfigSuccessful_ = true;
216  if (hltResName_.find(':')==string::npos)
217  hltUsedResName_ += "::";
218  else
219  hltUsedResName_ += ":";
221  break;
222  }
223  }
224 
225  if ( ! isHltConfigSuccessful_ )return;
226 
227  // setup "Any" bit
228  hltTrgBits_.clear();
229  hltTrgBits_.push_back(-1);
230  hltTrgDeci_.clear();
231  hltTrgDeci_.push_back(true);
232  hltTrgUsedNames_.clear();
233  hltTrgUsedNames_.push_back("Any");
234 
235  // figure out relation of trigger name to trigger bit and store used trigger names/bits
236  for(size_t i=0;i<hltTrgNames_.size();++i) {
237  const string &n1(hltTrgNames_.at(i));
238  //unsigned int hlt_prescale = hltConfig.prescaleValue(iSetup, n1);
239  //cout<<"trigger=="<<n1<<"presc=="<<hlt_prescale<<endl;
240  bool found = 0;
241  for(size_t j=0;j<hltConfig.size();++j) {
242  const string &n2(hltConfig.triggerName(j));
243  if (n2==n1) {
244  hltTrgBits_.push_back(j);
245  hltTrgUsedNames_.push_back(n1);
246  hltTrgDeci_.push_back(false);
247  found = 1;
248  break;
249  }
250  }
251  if (!found) {
252  CP(2) cout<<"Could not find trigger bit"<<endl ;
253  }
254  }
255 
256  // book monitoring histograms
257  createHistos();
258  isHltConfigSuccessful_ = true;
259 
260 }
261 
262 //--------------------------------------------------------------------------------------------------
263 void QcdUeDQM::book1D(std::vector<MonitorElement*> &mes,
264  const std::string &name, const std::string &title,
265  int nx, double x1, double x2, bool sumw2, bool sbox)
266 {
267  // Book 1D histos.
268 
269  for(size_t i=0;i<hltTrgUsedNames_.size();++i) {
270  std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
271  theDbe_->setCurrentFolder(folderName);
272  MonitorElement *e = theDbe_->book1D(Form("%s_%s",name.c_str(),hltTrgUsedNames_.at(i).c_str()),
273  Form("%s: %s",hltTrgUsedNames_.at(i).c_str(), title.c_str()),
274  nx, x1, x2);
275  TH1 *h1 = e->getTH1();
276  if (sumw2) {
277  if( 0 == h1->GetSumw2N() ) { // protect against re-summing (would cause exception)
278  h1->Sumw2();
279  }
280  }
281  h1->SetStats(sbox);
282  mes.push_back(e);
283  }
284 }
285 
286 //--------------------------------------------------------------------------------------------------
287 void QcdUeDQM::book2D(std::vector<MonitorElement*> &mes,
288  const std::string &name, const std::string &title,
289  int nx, double x1, double x2, int ny, double y1, double y2,
290  bool sumw2, bool sbox)
291 {
292  // Book 2D histos.
293 
294  for(size_t i=0;i<hltTrgUsedNames_.size();++i) {
295  std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
296  theDbe_->setCurrentFolder(folderName);
297  MonitorElement *e = theDbe_->book2D(Form("%s_%s",name.c_str(),hltTrgUsedNames_.at(i).c_str()),
298  Form("%s: %s",hltTrgUsedNames_.at(i).c_str(), title.c_str()),
299  nx, x1, x2, ny, y1, y2);
300  TH1 *h1 = e->getTH1();
301  if (sumw2) {
302  if( 0 == h1->GetSumw2N() ) { // protect against re-summing (would cause exception)
303  h1->Sumw2();
304  }
305  }
306  h1->SetStats(sbox);
307  mes.push_back(e);
308  }
309 }
310 
311 //--------------------------------------------------------------------------------------------------
312 void QcdUeDQM::bookProfile(std::vector<MonitorElement*> &mes,
313  const std::string &name, const std::string &title,
314  int nx, double x1, double x2, double y1, double y2,
315  bool sumw2, bool sbox)
316 {
317  // Book Profile histos.
318 
319  for(size_t i=0;i<hltTrgUsedNames_.size();++i) {
320  std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
321  theDbe_->setCurrentFolder(folderName);
322  MonitorElement *e = theDbe_->bookProfile(Form("%s_%s",name.c_str(),hltTrgUsedNames_.at(i).c_str()),
323  Form("%s: %s",hltTrgUsedNames_.at(i).c_str(), title.c_str()),
324  nx, x1, x2, y1, y2," ");
325  mes.push_back(e);
326  }
327 }
328 //--------------------------------------------------------------------------------------------------
330 {
331  // Book histograms if needed.
332 
333 
334 /* if (1) {
335  theDbe_->setCurrentFolder("Physics/EventInfo/");
336  repSumMap_ = theDbe_->book2D("reportSummaryMap","reportSummaryMap",1,0,1,1,0,1);
337  repSummary_ = theDbe_->bookFloat("reportSummary");
338  }
339  */
340  theDbe_->setCurrentFolder("Physics/QcdUe");
341 
342  if (1) {
343  const int Nx = hltTrgUsedNames_.size();
344  const double x1 = -0.5;
345  const double x2 = Nx-0.5;
346  h2TrigCorr_ = theDbe_->book2D("h2TriCorr","Trigger bit x vs y;y&&!x;x&&y",Nx,x1,x2,Nx,x1,x2);
347  for(size_t i=1;i<=hltTrgUsedNames_.size();++i) {
350  }
351  TH1 *h = h2TrigCorr_->getTH1();
352  if (h)
353  h->SetStats(0);
354  }
355  book1D(hNevts_,"hNevts","number of events",2,0,2);
356  book1D(hNtrackerLayer_,"hNtrackerLayer","number of tracker layers;multiplicity",20,-0.5,19.5 );
357  book1D(hNtrackerPixelLayer_,"hNtrackerPixelLayer","number of pixel layers;multiplicity",10,-0.5,9.5 );
358  book1D(hNtrackerStripPixelLayer_,"hNtrackerStripPixelLayer","number of strip + pixel layers;multiplicity",30,-0.5,39.5 );
359  book1D(hRatioPtErrorPt_,"hRatioPtErrorPt","ratio of pT error and track pT",25,0.,5.);
360  book1D(hTrkPt_,"hTrkPt","pT of all tracks",50,0.,50.);
361  book1D(hTrkEta_,"hTrkEta","eta of all tracks",40,-4.,4.);
362  book1D(hTrkPhi_,"hTrkPhi","phi of all tracks",40,-4.,4.);
363  book1D(hRatioDxySigmaDxyBS_,"hRatioDxySigmaDxyBS","ratio of transverse impact parameter and its significance wrt beam spot",60,-10.,10);
364  book1D(hRatioDxySigmaDxyPV_,"hRatioDxySigmaDxyPV","ratio of transverse impact parameter and its significance wrt PV",60,-10.,10);
365  book1D(hRatioDzSigmaDzBS_,"hRatioDzSigmaDzBS","ratio of longitudinal impact parameter and its significance wrt beam spot",80,-20.,20);
366  book1D(hRatioDzSigmaDzPV_,"hRatioDzSigmaDzPV","ratio of longitudinal impact parameter and its significance wrt PV",80,-20.,20);
367  book1D(hTrkChi2_,"hTrkChi2","track chi2",30,0.,30);
368  book1D(hTrkNdof_,"hTrkNdof","track NDOF",100,0,100);
369 
370  book1D(hNgoodTrk_,"hNgoodTrk","number of good tracks",50,-0.5,49.5);
371 
372  book1D(hGoodTrkPt500_,"hGoodTrkPt500","pT of all good tracks with pT > 500 MeV",50,0.,50.);
373  book1D(hGoodTrkEta500_,"hGoodTrkEta500","eta of all good tracks pT > 500 MeV",40,-4.,4.);
374  book1D(hGoodTrkPhi500_,"hGoodTrkPhi500","phi of all good tracks pT > 500 MeV",40,-4.,4.);
375 
376  book1D(hGoodTrkPt900_,"hGoodTrkPt900","pT of all good tracks with pT > 900 MeV",50,0.,50.);
377  book1D(hGoodTrkEta900_,"hGoodTrkEta900","eta of all good tracks pT > 900 MeV",40,-4.,4.);
378  book1D(hGoodTrkPhi900_,"hGoodTrkPhi900","phi of all good tracks pT > 900 MeV",40,-4.,4.);
379 
380  book1D(hNvertices_,"hNvertices","number of vertices",5,-0.5,4.5);
381  book1D(hVertex_z_,"hVertex_z","z position of vertex; z[cm]",200,-50,50);
382  book1D(hVertex_y_,"hVertex_y","y position of vertex; y[cm]",100,-5,5);
383  book1D(hVertex_x_,"hVertex_x","x position of vertex; x[cm]",100,-5,5);
384  book1D(hVertex_ndof_,"hVertex_ndof","ndof of vertex",100,0,100);
385  book1D(hVertex_rho_,"hVertex_rho","rho of vertex",100,0,5);
386  book1D(hVertex_z_bs_,"hVertex_z_bs","z position of vertex from beamspot; z[cm]",200,-50,50);
387 
388  book1D(hBeamSpot_z_,"hBeamSpot_z","z position of beamspot; z[cm]",100,-20,20);
389  book1D(hBeamSpot_y_,"hBeamSpot_y","y position of beamspot; y[cm]",50,-10,10);
390  book1D(hBeamSpot_x_,"hBeamSpot_x","x position of beamspot; x[cm]",50,-10,10);
391 
392 
393  if (1) {
394  const int Nx = 25;
395  const double x1 = 0.0;
396  const double x2 = 50.0;
397  book1D(hLeadingTrack_pTSpectrum_,"hLeadingTrack_pTSpectrum","pT spectrum of leading track;pT(GeV/c)",Nx,x1,x2);
398 // book1D(hLeadingCaloJet_pTSpectrum_,"hLeadingCalo_pTSpectrum","pT spectrum of leading calo jet;pT(GeV/c)",Nx,x1,x2);
399  book1D(hLeadingChargedJet_pTSpectrum_,"hLeadingChargedJet_pTSpectrum","pT spectrum of leading track jet;pT(GeV/c)",Nx,x1,x2);
400 
401  }
402 
403  if (1) {
404  const int Nx = 24;
405  const double x1 = -4.;
406  const double x2 = 4.;
407  book1D(hLeadingTrack_phiSpectrum_,"hLeadingTrack_phiSpectrum","#phi spectrum of leading track;#phi",Nx,x1,x2);
408  // book1D(hLeadingCaloJet_phiSpectrum_,"hLeadingCaloJet_phiSpectrum","#phi spectrum of leading calo jet;#phi",Nx,x1,x2);
409  book1D(hLeadingChargedJet_phiSpectrum_,"hLeadingChargedJet_phiSpectrum","#phi spectrum of leading track jet;#phi",Nx,x1,x2);
410 
411  }
412 
413  if (1) {
414  const int Nx = 24;
415  const double x1 = -4.;
416  const double x2 = 4.;
417  book1D(hLeadingTrack_etaSpectrum_,"hLeadingTrack_etaSpectrum","#eta spectrum of leading track;#eta",Nx,x1,x2);
418  //book1D(hLeadingCaloJet_etaSpectrum_,"hLeadingCaloJet_etaSpectrum","#eta spectrum of leading calo jet;#eta",Nx,x1,x2);
419  book1D(hLeadingChargedJet_etaSpectrum_,"hLeadingChargedJet_etaSpectrum","#eta spectrum of leading track jet;#eta",Nx,x1,x2);
420 
421  }
422 
423 
424 if (1) {
425  const int Nx = 75;
426  const double x1 = 0.0;
427  const double x2 = 75.0;
428  const double y1 = 0.;
429  const double y2 = 10.;
430  bookProfile(hdNdEtadPhi_pTMax_Toward500_,"hdNdEtadPhi_pTMax_Toward500",
431  "Average number of tracks (pT > 500 MeV) in toward region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
432  bookProfile(hdNdEtadPhi_pTMax_Transverse500_,"hdNdEtadPhi_pTMax_Transverse500",
433  "Average number of tracks (pT > 500 MeV) in transverse region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
434  bookProfile(hdNdEtadPhi_pTMax_Away500_,"hdNdEtadPhi_pTMax_Away500",
435  "Average number of tracks (pT > 500 MeV) in away region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
436  /*
437  bookProfile(hdNdEtadPhi_caloJet_Toward500_,"hdNdEtadPhi_caloJet_Toward500",
438  "Average number of tracks (pT > 500 MeV) in toward region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
439  bookProfile(hdNdEtadPhi_caloJet_Transverse500_,"hdNdEtadPhi_caloJet_Transverse500",
440  "Average number of tracks (pT > 500 MeV) in transverse region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
441  bookProfile(hdNdEtadPhi_caloJet_Away500_,"hdNdEtadPhi_caloJet_Away500",
442  "Average number of tracks (pT > 500 MeV) in away region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
443  */
444 
445  bookProfile(hdNdEtadPhi_trackJet_Toward500_,"hdNdEtadPhi_trackJet_Toward500",
446  "Average number of tracks (pT > 500 MeV) in toward region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2);
447  bookProfile(hdNdEtadPhi_trackJet_Transverse500_,"hdNdEtadPhi_trackJet_Transverse500",
448  "Average number of tracks (pT > 500 MeV) in transverse region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
449  bookProfile(hdNdEtadPhi_trackJet_Away500_,"hdNdEtadPhi_trackJet_Away500",
450  "Average number of tracks (pT > 500 MeV) in away region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
451 
452 
453 
454  bookProfile(hpTSumdEtadPhi_pTMax_Toward500_,"hpTSumdEtadPhi_pTMax_Toward500",
455  "Average number of tracks (pT > 500 MeV) in toward region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
456  bookProfile(hpTSumdEtadPhi_pTMax_Transverse500_,"hpTSumdEtadPhi_pTMax_Transverse500",
457  "Average number of tracks (pT > 500 MeV) in transverse region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
458  bookProfile(hpTSumdEtadPhi_pTMax_Away500_,"hpTSumdEtadPhi_pTMax_Away500",
459  "Average number of tracks (pT > 500 MeV) in away region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
460 /*
461  bookProfile(hpTSumdEtadPhi_caloJet_Toward500_,"hpTSumdEtadPhi_caloJet_Toward500",
462  "Average number of tracks (pT > 500 MeV) in toward region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
463  bookProfile(hpTSumdEtadPhi_caloJet_Transverse500_,"hpTSumdEtadPhi_caloJet_Transverse500",
464  "Average number of tracks (pT > 500 MeV) in transverse region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
465  bookProfile(hpTSumdEtadPhi_caloJet_Away500_,"hpTSumdEtadPhi_caloJet_Away500",
466  "Average number of tracks (pT > 500 MeV) in away region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
467 */
468 
469  bookProfile(hpTSumdEtadPhi_trackJet_Toward500_,"hpTSumdEtadPhi_trackJet_Toward500",
470  "Average number of tracks (pT > 500 MeV) in toward region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
471  bookProfile(hpTSumdEtadPhi_trackJet_Transverse500_,"hpTSumdEtadPhi_trackJet_Transverse500",
472  "Average number of tracks (pT > 500 MeV) in transverse region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
473  bookProfile(hpTSumdEtadPhi_trackJet_Away500_,"hpTSumdEtadPhi_trackJet_Away500",
474  "Average number of tracks (pT > 500 MeV) in away region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
475 
476 
477  bookProfile(hdNdEtadPhi_pTMax_Toward900_,"hdNdEtadPhi_pTMax_Toward900",
478  "Average number of tracks (pT > 900 MeV) in toward region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
479  bookProfile(hdNdEtadPhi_pTMax_Transverse900_,"hdNdEtadPhi_pTMax_Transverse900",
480  "Average number of tracks (pT > 900 MeV) in transverse region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
481  bookProfile(hdNdEtadPhi_pTMax_Away900_,"hdNdEtadPhi_pTMax_Away900",
482  "Average number of tracks (pT > 900 MeV) in away region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
483 /*
484  bookProfile(hdNdEtadPhi_caloJet_Toward900_,"hdNdEtadPhi_caloJet_Toward900",
485  "Average number of tracks (pT > 900 MeV) in toward region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
486  bookProfile(hdNdEtadPhi_caloJet_Transverse900_,"hdNdEtadPhi_caloJet_Transverse900",
487  "Average number of tracks (pT > 900 MeV) in transverse region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
488  bookProfile(hdNdEtadPhi_caloJet_Away900_,"hdNdEtadPhi_caloJet_Away900",
489  "Average number of tracks (pT > 900 MeV) in away region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
490 */
491 
492  bookProfile(hdNdEtadPhi_trackJet_Toward900_,"hdNdEtadPhi_trackJet_Toward900",
493  "Average number of tracks (pT > 900 MeV) in toward region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2);
494  bookProfile(hdNdEtadPhi_trackJet_Transverse900_,"hdNdEtadPhi_trackJet_Transverse900",
495  "Average number of tracks (pT > 900 MeV) in transverse region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
496  bookProfile(hdNdEtadPhi_trackJet_Away900_,"hdNdEtadPhi_trackJet_Away900",
497  "Average number of tracks (pT > 900 MeV) in away region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
498 
499 
500 
501  bookProfile(hpTSumdEtadPhi_pTMax_Toward900_,"hpTSumdEtadPhi_pTMax_Toward900",
502  "Average number of tracks (pT > 900 MeV) in toward region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
503  bookProfile(hpTSumdEtadPhi_pTMax_Transverse900_,"hpTSumdEtadPhi_pTMax_Transverse900",
504  "Average number of tracks (pT > 900 MeV) in transverse region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
505  bookProfile(hpTSumdEtadPhi_pTMax_Away900_,"hpTSumdEtadPhi_pTMax_Away900",
506  "Average number of tracks (pT > 900 MeV) in away region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
507 /*
508  bookProfile(hpTSumdEtadPhi_caloJet_Toward900_,"hpTSumdEtadPhi_caloJet_Toward900",
509  "Average number of tracks (pT > 900 MeV) in toward region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
510  bookProfile(hpTSumdEtadPhi_caloJet_Transverse900_,"hpTSumdEtadPhi_caloJet_Transverse900",
511  "Average number of tracks (pT > 900 MeV) in transverse region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
512  bookProfile(hpTSumdEtadPhi_caloJet_Away900_,"hpTSumdEtadPhi_caloJet_Away900",
513  "Average number of tracks (pT > 900 MeV) in away region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
514 */
515  bookProfile(hpTSumdEtadPhi_trackJet_Toward900_,"hpTSumdEtadPhi_trackJet_Toward900",
516  "Average number of tracks (pT > 900 MeV) in toward region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
517  bookProfile(hpTSumdEtadPhi_trackJet_Transverse900_,"hpTSumdEtadPhi_trackJet_Transverse900",
518  "Average number of tracks (pT > 900 MeV) in transverse region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
519  bookProfile(hpTSumdEtadPhi_trackJet_Away900_,"hpTSumdEtadPhi_trackJet_Away900",
520  "Average number of tracks (pT > 900 MeV) in away region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
521 
522 
523  }
524 
525 if (1) {
526  const int Nx = 20;
527  const double x1 = 0.0;
528  const double x2 = 20.0;
529 
530  book1D(hChargedJetMulti_,"hChargedJetMulti","Charged jet multiplicity;multiplicities",Nx,x1,x2);
531  //book1D(hCaloJetMulti_,"hCaloJetMulti","Calo jet multiplicity;multiplicities",Nx,x1,x2);
532 
533  }
534 
535 
536 if (1) {
537  const int Nx = 60;
538  const double x1 = -180.0;
539  const double x2 = 180.0;
540 
541  book1D(hdPhi_maxpTTrack_tracks_,"hdPhi_maxpTTrack_tracks","delta phi between leading tracks and other tracks;#Delta#phi(leading track-track)",Nx,x1,x2);
542 // book1D(hdPhi_caloJet_tracks_,"hdPhi_caloJet_tracks","delta phi between leading calo jet and tracks;#Delta#phi(leading calo jet-track)",Nx,x1,x2);
543  book1D(hdPhi_chargedJet_tracks_,"hdPhi_chargedJet_tracks","delta phi between leading charged jet and tracks;#Delta#phi(leading charged jet-track)",Nx,x1,x2);
544 
545 }
546 
547 
548 }
549 
550 //--------------------------------------------------------------------------------------------------
552 {
553 }
554 
555 //--------------------------------------------------------------------------------------------------
556 
558  const EventSetup &iSetup)
559 {
560  if( ! isHltConfigSuccessful_ ) return;
561 
562  // Update various histograms.
563 
564  //repSummary_->Fill(1.);
565  // repSumMap_->Fill(0.5,0.5,1.);
566 
567 }
568 
569 //--------------------------------------------------------------------------------------------------
570 
571 void QcdUeDQM::endRun(const Run &, const EventSetup &)
572 {
573  if( ! isHltConfigSuccessful_ ) return;
574 
575  // End run, cleanup. TODO: can this be called several times in DQM???
576 
577 }
578 
579 //--------------------------------------------------------------------------------------------------
580 void QcdUeDQM::fill1D(std::vector<TH1F*> &hs, double val, double w)
581 {
582  // Loop over histograms and fill if trigger has fired.
583 
584  for(size_t i=0;i<hs.size();++i) {
585  if (!hltTrgDeci_.at(i))
586  continue;
587  hs.at(i)->Fill(val,w);
588  }
589 }
590 
591 //--------------------------------------------------------------------------------------------------
592 void QcdUeDQM::fill1D(std::vector<MonitorElement*> &mes, double val, double w)
593 {
594  // Loop over histograms and fill if trigger has fired.
595 
596  for(size_t i=0;i<mes.size();++i) {
597  if (!hltTrgDeci_.at(i))
598  continue;
599  mes.at(i)->Fill(val,w);
600  }
601 }
602 
603 //--------------------------------------------------------------------------------------------------
604 void QcdUeDQM::setLabel1D(std::vector<MonitorElement*> &mes)
605 {
606  // Loop over histograms and fill if trigger has fired.
607  string cut[5] = {"Nevt","vtx!=bmspt","Zvtx<10cm","pT>1GeV","trackFromVtx"};
608  for(size_t i=0;i<mes.size();++i) {
609  if (!hltTrgDeci_.at(i))
610  continue;
611  for(size_t j = 1;j < 6;j++)mes.at(i)->setBinLabel(j,cut[j-1],1);
612  }
613 }
614 
615 //--------------------------------------------------------------------------------------------------
616 void QcdUeDQM::fill2D(std::vector<TH2F*> &hs, double valx, double valy, double w)
617 {
618  // Loop over histograms and fill if trigger has fired.
619 
620  for(size_t i=0;i<hs.size();++i) {
621  if (!hltTrgDeci_.at(i))
622  continue;
623  hs.at(i)->Fill(valx, valy ,w);
624  }
625 }
626 
627 //--------------------------------------------------------------------------------------------------
628 void QcdUeDQM::fill2D(std::vector<MonitorElement*> &mes, double valx, double valy, double w)
629 {
630  // Loop over histograms and fill if trigger has fired.
631 
632  for(size_t i=0;i<mes.size();++i) {
633  if (!hltTrgDeci_.at(i))
634  continue;
635  mes.at(i)->Fill(valx, valy ,w);
636  }
637 }
638 //--------------------------------------------------------------------------------------------------
639 void QcdUeDQM::fillProfile(std::vector<TProfile*> &hs, double valx, double valy, double w)
640 {
641  // Loop over histograms and fill if trigger has fired.
642 
643  for(size_t i=0;i<hs.size();++i) {
644  if (!hltTrgDeci_.at(i))
645  continue;
646  hs.at(i)->Fill(valx, valy ,w);
647  }
648 }
649 
650 //--------------------------------------------------------------------------------------------------
651 void QcdUeDQM::fillProfile(std::vector<MonitorElement*> &mes, double valx, double valy, double w)
652 {
653  // Loop over histograms and fill if trigger has fired.
654 
655  for(size_t i=0;i<mes.size();++i) {
656  if (!hltTrgDeci_.at(i))
657  continue;
658  const double y = valy*w;
659  mes.at(i)->Fill(valx, y);
660  }
661 }
662 
663 //--------------------------------------------------------------------------------------------------
664 bool QcdUeDQM::trackSelection(const reco::Track &trk, const reco::BeamSpot* bs, const reco::Vertex& vtx, int sizevtx )
665 {
666 //-------------Fill basic histograms---------
667 
668 
669 //-------------------------------------------
670 
671  bool goodTrk = false;
672 
673  if(sizevtx!=1) return 0; //selection events with only a vertex
674 
675  //Fill basic information of all the tracks
679  fill1D(hRatioPtErrorPt_,(trk.ptError()/trk.pt()));
680  fill1D(hTrkPt_,trk.pt());
681  fill1D(hTrkEta_,trk.eta());
682  fill1D(hTrkPhi_,trk.phi());
683  fill1D(hRatioDxySigmaDxyBS_,(trk.dxy(bs->position())/trk.dxyError()));
684  fill1D(hRatioDxySigmaDxyPV_,(trk.dxy(vtx.position())/trk.dxyError()));
685  fill1D(hRatioDzSigmaDzBS_,(trk.dz(bs->position())/trk.dzError()));
686  fill1D(hRatioDzSigmaDzPV_,(trk.dz(vtx.position())/trk.dzError()));
688  fill1D(hTrkNdof_,trk.ndof());
689 
690  fill1D(hBeamSpot_x_,bs->x0());
691  fill1D(hBeamSpot_y_,bs->y0());
692  fill1D(hBeamSpot_z_,bs->z0());
693 
694  //number of layers
695  bool layerMinCutbool=false;
698  layerMinCutbool=true;
699 
700 
701  //number of pixel layers
702  bool pxlLayerMinCutbool=false;
703  if (trk.hitPattern().pixelLayersWithMeasurement() >=pxlLayerMinCut_) pxlLayerMinCutbool=true;
704 
705 
706  // cut on the hits in pixel layers
707  bool hasPIX1 = false;
708  if (requirePIX1_) {
709  const reco::HitPattern& p = trk.hitPattern();
710  for (int i=0; i<p.numberOfHits(); i++) {
711  uint32_t hit = p.getHitPattern(i);
712  if (p.validHitFilter(hit) && p.pixelHitFilter(hit) && p.getLayer(hit)==1) hasPIX1 = true;
713  }
714  }else hasPIX1 = true;
715 
716  // cut on the pT error
717  bool ptErrorbool=false;
718  if (trk.ptError()/trk.pt() < ptErr_pt_ ||
719  (trk.hitPattern().trackerLayersWithMeasurement()==3 && trk.hitPattern().pixelLayersWithMeasurement()==3 && allowTriplets_)) ptErrorbool=true;
720  // quality cut
721  bool quality_ok = true;
722  if (quality_.size()!=0) {
723  quality_ok = false;
724  for (unsigned int i = 0; i<quality_.size();++i) {
725  if (trk.quality(quality_[i])){
726  quality_ok = true;
727  break;
728  }
729  }
730  }
731  //-----
732  bool algo_ok = true;
733  if (algorithm_.size()!=0) {
734  if (std::find(algorithm_.begin(),algorithm_.end(),trk.algo())==algorithm_.end()) algo_ok = false;
735  }
736 
737 
738  if(bsuse_==1)
739  {
740  if(hasPIX1 && pxlLayerMinCutbool && layerMinCutbool && (trk.hitPattern().pixelLayersWithMeasurement() + trk.hitPattern().numberOfValidStripLayersWithMonoAndStereo()) >= min3DHit_ && ptErrorbool && fabs(trk.pt()) >= ptMin_ && trk.eta() >= minRapidity_ && trk.eta() <= maxRapidity_ && fabs(trk.dxy(bs->position())/trk.dxyError()) < tip_ && fabs(trk.dz(bs->position())/trk.dzError()) < lip_ && trk.normalizedChi2()<=maxChi2_ && quality_ok && algo_ok)goodTrk=true ;
741  }
742 
743  if(bsuse_==0)
744  {
745  if(hasPIX1 && pxlLayerMinCutbool && layerMinCutbool && (trk.hitPattern().pixelLayersWithMeasurement() + trk.hitPattern().numberOfValidStripLayersWithMonoAndStereo()) >= min3DHit_ && ptErrorbool && fabs(trk.pt()) >= ptMin_ && trk.eta() >= minRapidity_ && trk.eta() <= maxRapidity_ && fabs(trk.dxy(vtx.position())/trk.dxyError()) < tip_ && fabs(trk.dz(vtx.position())/trk.dzError()) < lip_ && trk.normalizedChi2()<=maxChi2_ && quality_ok && algo_ok)goodTrk=true;
746 
747  }
748 
749  return goodTrk;
750 
751  }
752 
753 
754 //--------------------------------------------------------------------------------------------------
756 {
757  const reco::VertexCollection theVertices = *(vtxColl.product());
758  bool goodVtx = false;
759  fill1D(hNvertices_,theVertices.size());
760  for (reco::VertexCollection::const_iterator vertexIt = theVertices.begin(); vertexIt != theVertices.end(); ++vertexIt)
761  {
762  fill1D(hVertex_z_,vertexIt->z());
763  fill1D(hVertex_y_,vertexIt->y());
764  fill1D(hVertex_x_,vertexIt->x());
765  fill1D(hVertex_ndof_,vertexIt->ndof());
766  fill1D(hVertex_rho_,vertexIt->position().rho());
767  fill1D(hVertex_z_bs_,(vertexIt->z() -bs->z0()));
768 
769  if(fabs(vertexIt->z() -bs->z0()) < diffvtxbs_ && vertexIt->ndof() >= 4 && vertexIt->position().rho()<= 2.0)
770  {
771  goodVtx = true;
772  vtx1=(*vertexIt);
773 
774  break;
775  }
776  } // Loop over vertcies
777  return goodVtx;
778 }
779 //--------------------------------------------------------------------------------------------------
780 void QcdUeDQM::fillpTMaxRelated(const std::vector<const reco::Track *> &track)
781  {
782  fill1D(hNgoodTrk_,track.size());
783  if(track.size()>0)
784  {
785  fill1D(hLeadingTrack_pTSpectrum_,track[0]->pt());
788  }
789  for(size_t i = 0; i < track.size(); i++)
790  {
791  fill1D(hGoodTrkPt500_,track[i]->pt());
792  fill1D(hGoodTrkEta500_,track[i]->eta());
793  fill1D(hGoodTrkPhi500_,track[i]->phi());
794  if(track[i]->pt() > 0.9)
795  {
796  fill1D(hGoodTrkPt900_,track[i]->pt());
797  fill1D(hGoodTrkEta900_,track[i]->eta());
798  fill1D(hGoodTrkPhi900_,track[i]->phi());
799  }
800  }
801 
802  }
803 
804 
806 {
807  fill1D(hChargedJetMulti_,trackJets->size());
808  for( reco::TrackJetCollection::const_iterator f = trackJets->begin(); f != trackJets->end(); f++)
809  {
810  if(f != trackJets->begin())continue;
814  }
815 
816 }
817 
818 /*
819 void QcdUeDQM::fillCaloJetSpectra(const edm::Handle<reco::CaloJetCollection> caloJets)
820 {
821  fill1D(hCaloJetMulti_,caloJets->size());
822  for( reco::CaloJetCollection::const_iterator f = caloJets->begin(); f != caloJets->end(); f++)
823  {
824  if(f != caloJets->begin())continue;
825  fill1D(hLeadingCaloJet_pTSpectrum_,f->pt());
826  fill1D(hLeadingCaloJet_etaSpectrum_,f->eta());
827  fill1D(hLeadingCaloJet_phiSpectrum_,f->phi());
828  }
829 
830 }
831 
832 
833 */
834 
835 
836 /*
837  weight for transverse/toward/away region = 0.12
838 
839 
840 */
841 
842 void QcdUeDQM::fillUE_with_MaxpTtrack(const std::vector<const reco::Track*> &track)
843 {
844 double w = 0.119;
845 //double w = 1.;
846 double nTrk500_TransReg = 0;
847 double nTrk500_AwayReg = 0;
848 double nTrk500_TowardReg = 0;
849 
850 double pTSum500_TransReg = 0;
851 double pTSum500_AwayReg = 0;
852 double pTSum500_TowardReg = 0;
853 
854 
855 double nTrk900_TransReg = 0;
856 double nTrk900_AwayReg = 0;
857 double nTrk900_TowardReg = 0;
858 
859 double pTSum900_TransReg = 0;
860 double pTSum900_AwayReg = 0;
861 double pTSum900_TowardReg = 0;
862  if(track.size() > 0)
863  {
864  if(track[0]->pt() > 1.)
865  {
866  for(size_t i = 1; i < track.size();i++)
867  {
868 
869  double dphi = (180./PI)*(deltaPhi(track[0]->phi(),track[i]->phi()));
871  if(fabs(dphi)>60. && fabs(dphi)<120.)
872  {
873  pTSum500_TransReg = pTSum500_TransReg + track[i]->pt();
874  nTrk500_TransReg++;
875  if(track[i]->pt() > 0.9)
876  {
877  pTSum900_TransReg = pTSum900_TransReg + track[i]->pt();
878  nTrk900_TransReg++;
879  }
880  }
881 
882  if(fabs(dphi)>120. && fabs(dphi)<180.)
883  {
884  pTSum500_AwayReg = pTSum500_AwayReg + track[i]->pt();
885  nTrk500_AwayReg++;
886  if(track[i]->pt() > 0.9)
887  {
888  pTSum900_AwayReg = pTSum900_AwayReg + track[i]->pt();
889  nTrk900_AwayReg++;
890 
891  }
892  }
893 
894  if(fabs(dphi)<60.)
895  {
896  pTSum500_TowardReg = pTSum500_TowardReg + track[i]->pt();
897  nTrk500_TowardReg++;
898  if(track[i]->pt() > 0.9)
899  {
900  pTSum900_TowardReg = pTSum900_TowardReg + track[i]->pt();
901  nTrk900_TowardReg++;
902  }
903  }
904  } // track loop
905  }// leading track
906  // non empty collection
907  fillProfile(hdNdEtadPhi_pTMax_Toward500_, track[0]->pt(),nTrk500_TowardReg,w);
908  fillProfile(hdNdEtadPhi_pTMax_Transverse500_, track[0]->pt(),nTrk500_TransReg,w);
909  fillProfile(hdNdEtadPhi_pTMax_Away500_, track[0]->pt(),nTrk500_AwayReg,w);
910 
911  fillProfile(hpTSumdEtadPhi_pTMax_Toward500_,track[0]->pt() ,pTSum500_TowardReg,w);
912  fillProfile(hpTSumdEtadPhi_pTMax_Transverse500_,track[0]->pt(),pTSum500_TransReg,w);
913  fillProfile(hpTSumdEtadPhi_pTMax_Away500_, track[0]->pt(),pTSum500_AwayReg,w);
914 
915  fillProfile(hdNdEtadPhi_pTMax_Toward900_, track[0]->pt(),nTrk900_TowardReg,w);
916  fillProfile(hdNdEtadPhi_pTMax_Transverse900_, track[0]->pt(),nTrk900_TransReg,w);
917  fillProfile(hdNdEtadPhi_pTMax_Away900_, track[0]->pt(),nTrk900_AwayReg,w);
918 
919  fillProfile(hpTSumdEtadPhi_pTMax_Toward900_,track[0]->pt() ,pTSum900_TowardReg,w);
920  fillProfile(hpTSumdEtadPhi_pTMax_Transverse900_,track[0]->pt(),pTSum900_TransReg,w);
921  fillProfile(hpTSumdEtadPhi_pTMax_Away900_, track[0]->pt(),pTSum900_AwayReg,w);
922  }
923 }
924 
925 void QcdUeDQM::fillUE_with_ChargedJets(const std::vector<const reco::Track *> &track, const edm::Handle<reco::TrackJetCollection> &trackJets)
926 {
927 double w = 0.119;
928 double nTrk500_TransReg = 0;
929 double nTrk500_AwayReg = 0;
930 double nTrk500_TowardReg = 0;
931 
932 double pTSum500_TransReg = 0;
933 double pTSum500_AwayReg = 0;
934 double pTSum500_TowardReg = 0;
935 
936 
937 double nTrk900_TransReg = 0;
938 double nTrk900_AwayReg = 0;
939 double nTrk900_TowardReg = 0;
940 
941 double pTSum900_TransReg = 0;
942 double pTSum900_AwayReg = 0;
943 double pTSum900_TowardReg = 0;
944 
945  if(!(trackJets->empty()) && (trackJets->begin())->pt() > 1.)
946  {
947  double jetPhi = (trackJets->begin())->phi();
948  for(size_t i = 0; i < track.size();i++)
949  {
950  double dphi = (180./PI)*(deltaPhi(jetPhi,track[i]->phi()));
952  if(fabs(dphi)>60. && fabs(dphi)<120.)
953  {
954  pTSum500_TransReg = pTSum500_TransReg + track[i]->pt();
955  nTrk500_TransReg++;
956  if(track[i]->pt() > 0.9)
957  {
958  pTSum900_TransReg = pTSum900_TransReg + track[i]->pt();
959  nTrk900_TransReg++;
960  }
961  }
962 
963  if(fabs(dphi)>120. && fabs(dphi)<180.)
964  {
965  pTSum500_AwayReg = pTSum500_AwayReg + track[i]->pt();
966  nTrk500_AwayReg++;
967  if(track[i]->pt() > 0.9)
968  {
969  pTSum900_AwayReg = pTSum900_AwayReg + track[i]->pt();
970  nTrk900_AwayReg++;
971  }
972  }
973  if(fabs(dphi)<60.)
974  {
975  pTSum500_TowardReg = pTSum500_TowardReg + track[i]->pt();
976  nTrk500_TowardReg++;
977  if(track[i]->pt() > 0.9)
978  {
979  pTSum900_TowardReg = pTSum900_TowardReg + track[i]->pt();
980  nTrk900_TowardReg++;
981  }
982  }
983  }// tracks loop
984 
985  }// leading track jet
986 
987  fillProfile(hdNdEtadPhi_trackJet_Toward500_, (trackJets->begin())->pt(),nTrk500_TowardReg,w);
988  fillProfile(hdNdEtadPhi_trackJet_Transverse500_, (trackJets->begin())->pt(),nTrk500_TransReg,w);
989  fillProfile(hdNdEtadPhi_trackJet_Away500_, (trackJets->begin())->pt(),nTrk500_AwayReg,w);
990 
991  fillProfile(hpTSumdEtadPhi_trackJet_Toward500_, (trackJets->begin())->pt(),pTSum500_TowardReg,w);
992  fillProfile(hpTSumdEtadPhi_trackJet_Transverse500_, (trackJets->begin())->pt(),pTSum500_TransReg,w);
993  fillProfile(hpTSumdEtadPhi_trackJet_Away500_, (trackJets->begin())->pt(),pTSum500_AwayReg,w);
994 
995  fillProfile(hdNdEtadPhi_trackJet_Toward900_, (trackJets->begin())->pt(),nTrk900_TowardReg,w);
996  fillProfile(hdNdEtadPhi_trackJet_Transverse900_, (trackJets->begin())->pt(),nTrk900_TransReg,w);
997  fillProfile(hdNdEtadPhi_trackJet_Away900_, (trackJets->begin())->pt(),nTrk900_AwayReg,w);
998 
999  fillProfile(hpTSumdEtadPhi_trackJet_Toward900_, (trackJets->begin())->pt(),pTSum900_TowardReg,w);
1000  fillProfile(hpTSumdEtadPhi_trackJet_Transverse900_, (trackJets->begin())->pt(),pTSum900_TransReg,w);
1001  fillProfile(hpTSumdEtadPhi_trackJet_Away900_, (trackJets->begin())->pt(),pTSum900_AwayReg,w);
1002 }
1003 
1004 /*
1005 void QcdUeDQM:: fillUE_with_CaloJets(const std::vector<const reco::Track *> &track, const edm::Handle<reco::CaloJetCollection> &caloJets)
1006 {
1007 double w = 0.119;
1008 double nTrk500_TransReg = 0;
1009 double nTrk500_AwayReg = 0;
1010 double nTrk500_TowardReg = 0;
1011 
1012 double pTSum500_TransReg = 0;
1013 double pTSum500_AwayReg = 0;
1014 double pTSum500_TowardReg = 0;
1015 
1016 double nTrk900_TransReg = 0;
1017 double nTrk900_AwayReg = 0;
1018 double nTrk900_TowardReg = 0;
1019 
1020 double pTSum900_TransReg = 0;
1021 double pTSum900_AwayReg = 0;
1022 double pTSum900_TowardReg = 0;
1023  if(!(caloJets->empty()) && (caloJets->begin())->pt() > 1.)
1024  {
1025  double jetPhi = (caloJets->begin())->phi();
1026  for(size_t i = 0; i < track.size();i++)
1027  {
1028  double dphi = (180./PI)*(deltaPhi(jetPhi,track[i]->phi()));
1029  fill1D(hdPhi_caloJet_tracks_,dphi);
1030  if(fabs(dphi)>60. && fabs(dphi)<120.)
1031  {
1032  pTSum500_TransReg = pTSum500_TransReg + track[i]->pt();
1033  nTrk500_TransReg++;
1034  if(track[i]->pt() > 0.9)
1035  {
1036  pTSum900_TransReg = pTSum900_TransReg + track[i]->pt();
1037  nTrk900_TransReg++;
1038  }
1039  }
1040  if(fabs(dphi)>120. && fabs(dphi)<180.)
1041  {
1042  pTSum500_AwayReg = pTSum500_AwayReg + track[i]->pt();
1043  nTrk500_AwayReg++;
1044  if(track[i]->pt() > 0.9)
1045  {
1046  pTSum900_AwayReg = pTSum900_AwayReg + track[i]->pt();
1047  nTrk900_AwayReg++;
1048  }
1049  }
1050  if(fabs(dphi)<60.)
1051  {
1052  pTSum500_TowardReg = pTSum500_TowardReg + track[i]->pt();
1053  nTrk500_TowardReg++;
1054  if(track[i]->pt() > 0.9)
1055  {
1056  pTSum900_TowardReg = pTSum900_TowardReg + track[i]->pt();
1057  nTrk900_TowardReg++;
1058  }
1059  }
1060  }// tracks loop
1061 
1062  }// leading calo jet
1063  fillProfile(hdNdEtadPhi_caloJet_Toward500_, (caloJets->begin())->pt(),nTrk500_TowardReg,w);
1064  fillProfile(hdNdEtadPhi_caloJet_Transverse500_, (caloJets->begin())->pt(),nTrk500_TransReg,w);
1065  fillProfile(hdNdEtadPhi_caloJet_Away500_, (caloJets->begin())->pt(),nTrk500_AwayReg,w);
1066 
1067  fillProfile(hpTSumdEtadPhi_caloJet_Toward500_, (caloJets->begin())->pt(),pTSum500_TowardReg,w);
1068  fillProfile(hpTSumdEtadPhi_caloJet_Transverse500_, (caloJets->begin())->pt(),pTSum500_TransReg,w);
1069  fillProfile(hpTSumdEtadPhi_caloJet_Away500_, (caloJets->begin())->pt(),pTSum500_AwayReg,w);
1070 
1071  fillProfile(hdNdEtadPhi_caloJet_Toward900_, (caloJets->begin())->pt(),nTrk900_TowardReg,w);
1072  fillProfile(hdNdEtadPhi_caloJet_Transverse900_, (caloJets->begin())->pt(),nTrk900_TransReg,w);
1073  fillProfile(hdNdEtadPhi_caloJet_Away900_, (caloJets->begin())->pt(),nTrk900_AwayReg,w);
1074 
1075  fillProfile(hpTSumdEtadPhi_caloJet_Toward900_, (caloJets->begin())->pt(),pTSum900_TowardReg,w);
1076  fillProfile(hpTSumdEtadPhi_caloJet_Transverse900_, (caloJets->begin())->pt(),pTSum900_TransReg,w);
1077  fillProfile(hpTSumdEtadPhi_caloJet_Away900_, (caloJets->begin())->pt(),pTSum900_AwayReg,w);
1078 
1079 
1080 }
1081 
1082 */
1083 void QcdUeDQM::fillHltBits(const Event &iEvent,const EventSetup &iSetup)
1084 {
1085  // Fill HLT trigger bits.
1086 
1087  Handle<TriggerResults> triggerResultsHLT;
1088  getProduct(hltUsedResName_, triggerResultsHLT, iEvent);
1089 
1090 /* const unsigned int ntrigs(triggerResultsHLT.product()->size());
1091  if( ntrigs != 0 ) {
1092  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*triggerResultsHLT);
1093  for (unsigned int j=0; j!=ntrigs; j++) {
1094 // if(triggerResultsHLT->accept(j)){
1095 // unsigned int hlt_prescale = hltConfig_.prescaleValue(iEvent, iSetup, triggerName);
1096  cout<<"trigger fired"<<triggerNames.triggerName(j)<<endl;
1097  for(unsigned int itrigName = 0; itrigName < hltTrgNames_.size(); itrigName++ ) {
1098  unsigned int hlt_prescale = hltConfig.prescaleValue(iEvent, iSetup, hltTrgNames_[itrigName]);
1099 
1100  if(triggerNames.triggerIndex(hltTrgNames_[itrigName]) >= (unsigned int)ntrigs ) continue;
1101 // if( triggerResultsHLT->accept(triggerNames.triggerIndex(hltTrgNames_[itrigName])) )cout<<hltTrgNames_[itrigName]<<endl;
1102 
1103  }
1104  }
1105  }
1106  // }
1107 */
1108  for(size_t i=0;i<hltTrgBits_.size();++i) {
1109  if (hltTrgBits_.at(i)<0)
1110  continue; //ignore unknown trigger
1111  size_t tbit = hltTrgBits_.at(i);
1112  if (tbit<triggerResultsHLT->size()) {
1113  hltTrgDeci_[i] = triggerResultsHLT->accept(tbit);
1114  }
1115  }
1116  // fill correlation histogram
1117  for(size_t i=0;i<hltTrgBits_.size();++i) {
1118  if (hltTrgDeci_.at(i))
1119  h2TrigCorr_->Fill(i,i);
1120  for(size_t j=i+1;j<hltTrgBits_.size();++j) {
1121  if (hltTrgDeci_.at(i) && hltTrgDeci_.at(j))
1122  h2TrigCorr_->Fill(i,j);
1123  if (hltTrgDeci_.at(i) && !hltTrgDeci_.at(j))
1124  h2TrigCorr_->Fill(j,i);
1125  }
1126  }
1127 }
1128 
1129 
1130 
1131 //--------------------------------------------------------------------------------------------------
1132 
1133 // Local Variables:
1134 // show-trailing-whitespace: t
1135 // truncate-lines: t
1136 // End:
unsigned int size() const
number of trigger paths in trigger table
bool bsuse_
Definition: QcdUeDQM.h:277
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Away500_
Definition: QcdUeDQM.h:234
void endLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:557
T getParameter(std::string const &) const
double z0() const
z coordinate
Definition: BeamSpot.h:68
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
< 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
dictionary parameters
Definition: Parameters.py:2
std::vector< MonitorElement * > hGoodTrkEta500_
Definition: QcdUeDQM.h:158
std::vector< MonitorElement * > hRatioPtErrorPt_
Definition: QcdUeDQM.h:152
void getProduct(const std::string name, edm::Handle< TYPE > &prod, const edm::Event &event) const
Definition: QcdUeDQM.h:295
std::vector< MonitorElement * > hTrkPt_
Definition: QcdUeDQM.h:153
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Toward900_
Definition: QcdUeDQM.h:245
std::vector< MonitorElement * > hVertex_ndof_
Definition: QcdUeDQM.h:176
std::vector< MonitorElement * > hNtrackerStripPixelLayer_
Definition: QcdUeDQM.h:151
std::vector< MonitorElement * > hGoodTrkPhi500_
Definition: QcdUeDQM.h:159
void fillHltBits(const edm::Event &iEvent, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:1083
std::vector< MonitorElement * > hBeamSpot_x_
Definition: QcdUeDQM.h:183
const std::string & triggerName(unsigned int triggerIndex) const
static uint32_t getLayer(uint32_t pattern)
Definition: HitPattern.h:520
std::vector< MonitorElement * > hNvertices_
Definition: QcdUeDQM.h:172
std::vector< MonitorElement * > hGoodTrkPt900_
Definition: QcdUeDQM.h:160
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Transverse500_
Definition: QcdUeDQM.h:233
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:872
#define PI
void fill1D(std::vector< TH1F * > &hs, double val, double w=1.)
Definition: QcdUeDQM.cc:580
bool trackSelection(const reco::Track &trk, const reco::BeamSpot *bs, const reco::Vertex &vtx, int sizevtx)
Definition: QcdUeDQM.cc:664
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:109
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
double dxyError() const
error on dxy
Definition: TrackBase.h:207
virtual ~QcdUeDQM()
Definition: QcdUeDQM.cc:110
void beginJob(void)
Definition: QcdUeDQM.cc:179
void createHistos()
Definition: QcdUeDQM.cc:329
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Transverse900_
Definition: QcdUeDQM.h:246
std::string hltUsedResName_
Definition: QcdUeDQM.h:140
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Toward900_
Definition: QcdUeDQM.h:258
std::vector< MonitorElement * > hdPhi_chargedJet_tracks_
Definition: QcdUeDQM.h:206
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:10
bool exists(std::string const &parameterName) const
checks if a parameter exists
int pixelLayersWithMeasurement() const
Definition: HitPattern.h:745
std::vector< MonitorElement * > hLeadingTrack_pTSpectrum_
Definition: QcdUeDQM.h:186
std::vector< std::string > hltTrgUsedNames_
Definition: QcdUeDQM.h:139
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Transverse900_
Definition: QcdUeDQM.h:252
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:137
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
edm::EDGetTokenT< reco::TrackCollection > trackLabel_
Definition: QcdUeDQM.h:282
std::vector< MonitorElement * > hBeamSpot_y_
Definition: QcdUeDQM.h:182
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Toward500_
Definition: QcdUeDQM.h:212
bool fillVtxPlots(const reco::BeamSpot *bs, const edm::Handle< reco::VertexCollection > vtxColl)
Definition: QcdUeDQM.cc:755
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Transverse500_
Definition: QcdUeDQM.h:220
edm::EDGetTokenT< reco::CaloJetCollection > caloJetLabel_
Definition: QcdUeDQM.h:280
void fillProfile(std::vector< TProfile * > &hs, double valx, double valy, double w=1.)
Definition: QcdUeDQM.cc:639
void fillUE_with_ChargedJets(const std::vector< const reco::Track * > &track, const edm::Handle< reco::TrackJetCollection > &trackJets)
Definition: QcdUeDQM.cc:925
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Transverse500_
Definition: QcdUeDQM.h:226
double ptErr_pt_
Definition: QcdUeDQM.h:270
void setLabel1D(std::vector< MonitorElement * > &mes)
Definition: QcdUeDQM.cc:604
T eta() const
void beginRun(const edm::Run &r, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:200
std::vector< MonitorElement * > hVertex_z_bs_
Definition: QcdUeDQM.h:178
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
void operator()(TH3F *&h)
Definition: QcdUeDQM.cc:49
bool requirePIX1_
Definition: QcdUeDQM.h:274
const Point & position() const
position
Definition: Vertex.h:92
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Transverse500_
Definition: QcdUeDQM.h:213
std::vector< MonitorElement * > hLeadingChargedJet_etaSpectrum_
Definition: QcdUeDQM.h:209
bool isHltConfigSuccessful_
Definition: QcdUeDQM.h:69
void fillUE_with_MaxpTtrack(const std::vector< const reco::Track * > &track)
Definition: QcdUeDQM.cc:842
std::vector< std::string > hltTrgNames_
Definition: QcdUeDQM.h:134
edm::EDGetTokenT< reco::TrackJetCollection > chargedJetLabel_
Definition: QcdUeDQM.h:281
std::vector< MonitorElement * > hTrkChi2_
Definition: QcdUeDQM.h:167
void Fill(long long x)
TrackAlgorithm algo() const
Definition: TrackBase.h:330
std::vector< MonitorElement * > hVertex_rho_
Definition: QcdUeDQM.h:177
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Toward500_
Definition: QcdUeDQM.h:219
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Away500_
Definition: QcdUeDQM.h:227
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Toward500_
Definition: QcdUeDQM.h:232
int iEvent
Definition: GenABIO.cc:243
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:139
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:118
std::vector< MonitorElement * > hdPhi_maxpTTrack_tracks_
Definition: QcdUeDQM.h:204
std::vector< std::string > hltProcNames_
Definition: QcdUeDQM.h:133
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Away900_
Definition: QcdUeDQM.h:240
std::string hltResName_
Definition: QcdUeDQM.h:132
void beginLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:191
MonitorElement * h2TrigCorr_
Definition: QcdUeDQM.h:146
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:107
int trackerLayersWithMeasurement() const
Definition: HitPattern.h:740
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Away500_
Definition: QcdUeDQM.h:221
std::vector< MonitorElement * > hTrkPhi_
Definition: QcdUeDQM.h:155
double pt() const
track transverse momentum
Definition: TrackBase.h:129
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Transverse900_
Definition: QcdUeDQM.h:259
double maxChi2_
Definition: QcdUeDQM.h:276
std::vector< int > hltTrgBits_
Definition: QcdUeDQM.h:137
std::vector< MonitorElement * > hLeadingTrack_phiSpectrum_
Definition: QcdUeDQM.h:188
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:192
static bool pixelHitFilter(uint32_t pattern)
Definition: HitPattern.h:419
HLTConfigProvider hltConfig
Definition: QcdUeDQM.h:130
void book2D(std::vector< MonitorElement * > &mes, const std::string &name, const std::string &title, int nx, double x1, double x2, int ny, double y1, double y2, bool sumw2=1, bool sbox=1)
Definition: QcdUeDQM.cc:287
int numberOfHits() const
Definition: HitPattern.cc:211
int j
Definition: DBlmapReader.cc:9
std::vector< MonitorElement * > hRatioDxySigmaDxyBS_
Definition: QcdUeDQM.h:163
std::vector< MonitorElement * > hRatioDzSigmaDzBS_
Definition: QcdUeDQM.h:165
double lip_
Definition: QcdUeDQM.h:268
TH1 * getTH1(void) const
double f[11][100]
static bool validHitFilter(uint32_t pattern)
Definition: HitPattern.h:564
reco::Vertex vtx1
Definition: QcdUeDQM.h:289
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Toward900_
Definition: QcdUeDQM.h:238
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:1186
std::vector< MonitorElement * > hRatioDxySigmaDxyPV_
Definition: QcdUeDQM.h:164
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Transverse900_
Definition: QcdUeDQM.h:239
std::vector< reco::TrackBase::TrackAlgorithm > algorithm_
Definition: QcdUeDQM.h:286
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:221
std::vector< MonitorElement * > hNtrackerPixelLayer_
Definition: QcdUeDQM.h:150
std::vector< MonitorElement * > hChargedJetMulti_
Definition: QcdUeDQM.h:194
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:125
double dzError() const
error on dz
Definition: TrackBase.h:213
edm::EDGetTokenT< reco::BeamSpot > bsLabel_
Definition: QcdUeDQM.h:284
std::vector< MonitorElement * > hTrkEta_
Definition: QcdUeDQM.h:154
edm::EDGetTokenT< reco::VertexCollection > vtxLabel_
Definition: QcdUeDQM.h:283
std::vector< MonitorElement * > hNtrackerLayer_
Definition: QcdUeDQM.h:149
std::vector< MonitorElement * > hGoodTrkPt500_
Definition: QcdUeDQM.h:157
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:46
bool allowTriplets_
Definition: QcdUeDQM.h:278
double ptMin_
Definition: QcdUeDQM.h:264
std::vector< MonitorElement * > hVertex_z_
Definition: QcdUeDQM.h:173
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
std::vector< MonitorElement * > hVertex_y_
Definition: QcdUeDQM.h:174
tuple tracks
Definition: testEve_cfg.py:39
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Away900_
Definition: QcdUeDQM.h:247
std::vector< MonitorElement * > hLeadingChargedJet_pTSpectrum_
Definition: QcdUeDQM.h:196
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
std::vector< MonitorElement * > hNgoodTrk_
Definition: QcdUeDQM.h:156
double diffvtxbs_
Definition: QcdUeDQM.h:269
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Away900_
Definition: QcdUeDQM.h:253
double minRapidity_
Definition: QcdUeDQM.h:265
int min3DHit_
Definition: QcdUeDQM.h:275
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Toward500_
Definition: QcdUeDQM.h:225
T const * product() const
Definition: Handle.h:81
container selected_
Definition: QcdUeDQM.h:288
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:375
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Away500_
Definition: QcdUeDQM.h:214
std::vector< MonitorElement * > hBeamSpot_z_
Definition: QcdUeDQM.h:181
double pxlLayerMinCut_
Definition: QcdUeDQM.h:273
void bookProfile(std::vector< MonitorElement * > &mes, const std::string &name, const std::string &title, int nx, double x1, double x2, double y1, double y2, bool sumw2=1, bool sbox=1)
Definition: QcdUeDQM.cc:312
std::vector< TrackJet > TrackJetCollection
collection of TrackJet objects
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Toward900_
Definition: QcdUeDQM.h:251
QcdUeDQM(const edm::ParameterSet &parameters)
Definition: QcdUeDQM.cc:54
static TrackAlgorithm algoByName(const std::string &name)
Definition: TrackBase.cc:55
double y0() const
y coordinate
Definition: BeamSpot.h:66
std::vector< MonitorElement * > hRatioDzSigmaDzPV_
Definition: QcdUeDQM.h:166
std::vector< MonitorElement * > hTrkNdof_
Definition: QcdUeDQM.h:168
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Away900_
Definition: QcdUeDQM.h:260
tuple cout
Definition: gather_cfg.py:121
const Point & position() const
position
Definition: BeamSpot.h:62
std::vector< MonitorElement * > hVertex_x_
Definition: QcdUeDQM.h:175
void fillChargedJetSpectra(const edm::Handle< reco::TrackJetCollection > trackJets)
Definition: QcdUeDQM.cc:805
T w() const
std::vector< reco::TrackBase::TrackQuality > quality_
Definition: QcdUeDQM.h:285
std::vector< MonitorElement * > hNevts_
Definition: QcdUeDQM.h:148
DQMStore * theDbe_
Definition: QcdUeDQM.h:143
void fillpTMaxRelated(const std::vector< const reco::Track * > &track)
Definition: QcdUeDQM.cc:780
double maxRapidity_
Definition: QcdUeDQM.h:266
void fill2D(std::vector< TH2F * > &hs, double valx, double valy, double w=1.)
Definition: QcdUeDQM.cc:616
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:1000
uint32_t getHitPattern(int position) const
Definition: HitPattern.cc:142
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:119
#define CP(level)
Definition: QcdUeDQM.cc:45
int minHit_
Definition: QcdUeDQM.h:272
std::vector< MonitorElement * > hGoodTrkEta900_
Definition: QcdUeDQM.h:161
int numberOfValidStripLayersWithMonoAndStereo(uint32_t stripdet, uint32_t layer) const
Definition: HitPattern.cc:221
tuple size
Write out results.
void endRun(const edm::Run &r, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:571
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:584
void endJob(void)
Definition: QcdUeDQM.cc:551
Definition: Run.h:41
std::vector< MonitorElement * > hLeadingTrack_etaSpectrum_
Definition: QcdUeDQM.h:187
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
double tip_
Definition: QcdUeDQM.h:267
double x0() const
x coordinate
Definition: BeamSpot.h:64
std::vector< MonitorElement * > hLeadingChargedJet_phiSpectrum_
Definition: QcdUeDQM.h:210
Definition: DDAxes.h:10
void book1D(std::vector< MonitorElement * > &mes, const std::string &name, const std::string &title, int nx, double x1, double x2, bool sumw2=1, bool sbox=1)
Definition: QcdUeDQM.cc:263
std::vector< bool > hltTrgDeci_
Definition: QcdUeDQM.h:138
std::vector< MonitorElement * > hGoodTrkPhi900_
Definition: QcdUeDQM.h:162