CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
AlignmentMonitorSegmentDifferences.cc
Go to the documentation of this file.
1 /*
2  * Package: CommonAlignmentProducer
3  * Class : AlignmentMonitorSegmentDifferences
4  *
5  * Original Author: Jim Pivarski
6  * Created: Mon Nov 12 13:30:14 CST 2007
7  *
8  * $Id: AlignmentMonitorSegmentDifferences.cc,v 1.5 2011/04/15 23:09:38 khotilov Exp $
9  */
10 
17 
24 
25 #include <sstream>
26 
33 
35 public:
38 
39  void book() override;
40 
41  void event(const edm::Event &iEvent,
42  const edm::EventSetup &iSetup,
43  const ConstTrajTrackPairCollection &iTrajTracks) override;
45 
46 private:
47  // es token
52 
53  // parameters
55  double m_minTrackPt;
56  double m_minTrackP;
57  double m_maxDxy;
65  bool m_doDT;
66  bool m_doCSC;
67 
68  // wheel, sector, stationdiff
69  TProfile *m_dt13_resid[5][12][3];
70  TProfile *m_dt13_slope[5][12][3];
71  TProfile *m_dt2_resid[5][12][2];
72  TProfile *m_dt2_slope[5][12][2];
73  TH1F *m_posdt13_resid[5][12][3];
74  TH1F *m_posdt13_slope[5][12][3];
75  TH1F *m_posdt2_resid[5][12][2];
76  TH1F *m_posdt2_slope[5][12][2];
77  TH1F *m_negdt13_resid[5][12][3];
78  TH1F *m_negdt13_slope[5][12][3];
79  TH1F *m_negdt2_resid[5][12][2];
80  TH1F *m_negdt2_slope[5][12][2];
81 
82  // endcap, chamber, stationdiff
83  TProfile *m_cscouter_resid[2][36][2];
84  TProfile *m_cscouter_slope[2][36][2];
85  TProfile *m_cscinner_resid[2][18][3];
86  TProfile *m_cscinner_slope[2][18][3];
87  TH1F *m_poscscouter_resid[2][36][2];
88  TH1F *m_poscscouter_slope[2][36][2];
89  TH1F *m_poscscinner_resid[2][18][3];
90  TH1F *m_poscscinner_slope[2][18][3];
91  TH1F *m_negcscouter_resid[2][36][2];
92  TH1F *m_negcscouter_slope[2][36][2];
93  TH1F *m_negcscinner_resid[2][18][3];
94  TH1F *m_negcscinner_slope[2][18][3];
95 
96  // cross-system segdiffs: // [endcap][dtsector]
97  TH1F *m_x_pos_dt1_csc1_resid[2][12]; // tracks going through DT W+-2 St1 and CSC St1 Ring3
98  TH1F *m_x_pos_dt1_csc2_resid[2][12]; // tracks going through DT W+-2 St1 and CSC St2 Ring2
99  TH1F *m_x_pos_dt2_csc1_resid[2][12]; // tracks going through DT W+-2 St2 and CSC St1 Ring3
103 };
104 
105 //
106 // constants, enums and typedefs
107 //
108 
109 //
110 // static data member definitions
111 //
112 
113 //
114 // member functions
115 //
116 
119  : AlignmentMonitorBase(cfg, iC, "AlignmentMonitorSegmentDifferences"),
120  m_esTokenGBTGeom(iC.esConsumes()),
121  m_esTokenDetId(iC.esConsumes(edm::ESInputTag("", "MuonDetIdAssociator"))),
122  m_esTokenProp(iC.esConsumes(edm::ESInputTag("", "SteppingHelixPropagatorAny"))),
123  m_esTokenMF(iC.esConsumes()),
124  m_muonCollectionTag(cfg.getParameter<edm::InputTag>("muonCollectionTag")),
125  m_minTrackPt(cfg.getParameter<double>("minTrackPt")),
126  m_minTrackP(cfg.getParameter<double>("minTrackP")),
127  m_maxDxy(cfg.getParameter<double>("maxDxy")),
128  m_minTrackerHits(cfg.getParameter<int>("minTrackerHits")),
129  m_maxTrackerRedChi2(cfg.getParameter<double>("maxTrackerRedChi2")),
130  m_allowTIDTEC(cfg.getParameter<bool>("allowTIDTEC")),
131  m_minNCrossedChambers(cfg.getParameter<int>("minNCrossedChambers")),
132  m_minDT13Hits(cfg.getParameter<int>("minDT13Hits")),
133  m_minDT2Hits(cfg.getParameter<int>("minDT2Hits")),
134  m_minCSCHits(cfg.getParameter<int>("minCSCHits")),
135  m_doDT(cfg.getParameter<bool>("doDT")),
136  m_doCSC(cfg.getParameter<bool>("doCSC")) {}
137 
139  char name[225], pos[228], neg[228];
140 
141  double max_curv = 1. / m_minTrackPt;
142 
143  if (m_doDT)
144  for (int wheel = -2; wheel <= +2; wheel++) {
145  char wheel_label[][2] = {"A", "B", "C", "D", "E"};
146  for (int sector = 1; sector <= 12; sector++) {
147  char wheel_sector[50];
148  sprintf(wheel_sector, "%s_%02d", wheel_label[wheel + 2], sector);
149 
150  int nb = 100;
151  double wnd = 25.;
152 
153  sprintf(name, "dt13_resid_%s_12", wheel_sector);
154  sprintf(pos, "pos%s", name);
155  sprintf(neg, "neg%s", name);
156  m_dt13_resid[wheel + 2][sector - 1][0] =
157  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
158  m_posdt13_resid[wheel + 2][sector - 1][0] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
159  m_negdt13_resid[wheel + 2][sector - 1][0] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
160 
161  sprintf(name, "dt13_resid_%s_23", wheel_sector);
162  sprintf(pos, "pos%s", name);
163  sprintf(neg, "neg%s", name);
164  m_dt13_resid[wheel + 2][sector - 1][1] =
165  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
166  m_posdt13_resid[wheel + 2][sector - 1][1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
167  m_negdt13_resid[wheel + 2][sector - 1][1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
168 
169  sprintf(name, "dt13_resid_%s_34", wheel_sector);
170  sprintf(pos, "pos%s", name);
171  sprintf(neg, "neg%s", name);
172  m_dt13_resid[wheel + 2][sector - 1][2] =
173  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
174  m_posdt13_resid[wheel + 2][sector - 1][2] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
175  m_negdt13_resid[wheel + 2][sector - 1][2] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
176 
177  sprintf(name, "dt2_resid_%s_12", wheel_sector);
178  sprintf(pos, "pos%s", name);
179  sprintf(neg, "neg%s", name);
180  m_dt2_resid[wheel + 2][sector - 1][0] =
181  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -200., 200., " ");
182  m_posdt2_resid[wheel + 2][sector - 1][0] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
183  m_negdt2_resid[wheel + 2][sector - 1][0] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
184 
185  sprintf(name, "dt2_resid_%s_23", wheel_sector);
186  sprintf(pos, "pos%s", name);
187  sprintf(neg, "neg%s", name);
188  m_dt2_resid[wheel + 2][sector - 1][1] =
189  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -200., 200., " ");
190  m_posdt2_resid[wheel + 2][sector - 1][1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
191  m_negdt2_resid[wheel + 2][sector - 1][1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
192 
193  sprintf(name, "dt13_slope_%s_12", wheel_sector);
194  sprintf(pos, "pos%s", name);
195  sprintf(neg, "neg%s", name);
196  m_dt13_slope[wheel + 2][sector - 1][0] =
197  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
198  m_posdt13_slope[wheel + 2][sector - 1][0] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
199  m_negdt13_slope[wheel + 2][sector - 1][0] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
200 
201  sprintf(name, "dt13_slope_%s_23", wheel_sector);
202  sprintf(pos, "pos%s", name);
203  sprintf(neg, "neg%s", name);
204  m_dt13_slope[wheel + 2][sector - 1][1] =
205  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
206  m_posdt13_slope[wheel + 2][sector - 1][1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
207  m_negdt13_slope[wheel + 2][sector - 1][1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
208 
209  sprintf(name, "dt13_slope_%s_34", wheel_sector);
210  sprintf(pos, "pos%s", name);
211  sprintf(neg, "neg%s", name);
212  m_dt13_slope[wheel + 2][sector - 1][2] =
213  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
214  m_posdt13_slope[wheel + 2][sector - 1][2] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
215  m_negdt13_slope[wheel + 2][sector - 1][2] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
216 
217  sprintf(name, "dt2_slope_%s_12", wheel_sector);
218  sprintf(pos, "pos%s", name);
219  sprintf(neg, "neg%s", name);
220  m_dt2_slope[wheel + 2][sector - 1][0] =
221  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -1000., 1000., " ");
222  m_posdt2_slope[wheel + 2][sector - 1][0] = book1D("/iterN/", pos, pos, nb, -100., 100.);
223  m_negdt2_slope[wheel + 2][sector - 1][0] = book1D("/iterN/", neg, neg, nb, -100., 100.);
224 
225  sprintf(name, "dt2_slope_%s_23", wheel_sector);
226  sprintf(pos, "pos%s", name);
227  sprintf(neg, "neg%s", name);
228  m_dt2_slope[wheel + 2][sector - 1][1] =
229  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -1000., 1000., " ");
230  m_posdt2_slope[wheel + 2][sector - 1][1] = book1D("/iterN/", pos, pos, nb, -100., 100.);
231  m_negdt2_slope[wheel + 2][sector - 1][1] = book1D("/iterN/", neg, neg, nb, -100., 100.);
232  }
233  }
234 
235  if (m_doCSC)
236  for (int endcap = 1; endcap <= 2; endcap++) {
237  std::string endcapletter;
238  if (endcap == 1)
239  endcapletter = "p";
240  else if (endcap == 2)
241  endcapletter = "m";
242 
243  for (int chamber = 1; chamber <= 36; chamber++) {
244  char ec_chamber[50];
245  sprintf(ec_chamber, "%s_%02d", endcapletter.c_str(), chamber);
246 
247  int nb = 100;
248  double wnd = 60.;
249 
250  sprintf(name, "cscouter_resid_%s_12", ec_chamber);
251  sprintf(pos, "pos%s", name);
252  sprintf(neg, "neg%s", name);
253  m_cscouter_resid[endcap - 1][chamber - 1][0] =
254  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
255  m_poscscouter_resid[endcap - 1][chamber - 1][0] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
256  m_negcscouter_resid[endcap - 1][chamber - 1][0] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
257 
258  sprintf(name, "cscouter_resid_%s_23", ec_chamber);
259  sprintf(pos, "pos%s", name);
260  sprintf(neg, "neg%s", name);
261  m_cscouter_resid[endcap - 1][chamber - 1][1] =
262  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
263  m_poscscouter_resid[endcap - 1][chamber - 1][1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
264  m_negcscouter_resid[endcap - 1][chamber - 1][1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
265 
266  sprintf(name, "cscouter_slope_%s_12", ec_chamber);
267  sprintf(pos, "pos%s", name);
268  sprintf(neg, "neg%s", name);
269  m_cscouter_slope[endcap - 1][chamber - 1][0] =
270  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
271  m_poscscouter_slope[endcap - 1][chamber - 1][0] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
272  m_negcscouter_slope[endcap - 1][chamber - 1][0] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
273 
274  sprintf(name, "cscouter_slope_%s_23", ec_chamber);
275  sprintf(pos, "pos%s", name);
276  sprintf(neg, "neg%s", name);
277  m_cscouter_slope[endcap - 1][chamber - 1][1] =
278  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
279  m_poscscouter_slope[endcap - 1][chamber - 1][1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
280  m_negcscouter_slope[endcap - 1][chamber - 1][1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
281  }
282 
283  for (int chamber = 1; chamber <= 18; chamber++) {
284  char ec_chamber[50];
285  sprintf(ec_chamber, "%s_%02d", endcapletter.c_str(), chamber);
286 
287  int nb = 100;
288  double wnd = 40.;
289 
290  sprintf(name, "cscinner_resid_%s_12", ec_chamber);
291  sprintf(pos, "pos%s", name);
292  sprintf(neg, "neg%s", name);
293  m_cscinner_resid[endcap - 1][chamber - 1][0] =
294  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
295  m_poscscinner_resid[endcap - 1][chamber - 1][0] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
296  m_negcscinner_resid[endcap - 1][chamber - 1][0] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
297 
298  sprintf(name, "cscinner_resid_%s_23", ec_chamber);
299  sprintf(pos, "pos%s", name);
300  sprintf(neg, "neg%s", name);
301  m_cscinner_resid[endcap - 1][chamber - 1][1] =
302  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
303  m_poscscinner_resid[endcap - 1][chamber - 1][1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
304  m_negcscinner_resid[endcap - 1][chamber - 1][1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
305 
306  sprintf(name, "cscinner_resid_%s_34", ec_chamber);
307  sprintf(pos, "pos%s", name);
308  sprintf(neg, "neg%s", name);
309  m_cscinner_resid[endcap - 1][chamber - 1][2] =
310  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
311  m_poscscinner_resid[endcap - 1][chamber - 1][2] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
312  m_negcscinner_resid[endcap - 1][chamber - 1][2] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
313 
314  sprintf(name, "cscinner_slope_%s_12", ec_chamber);
315  sprintf(pos, "pos%s", name);
316  sprintf(neg, "neg%s", name);
317  m_cscinner_slope[endcap - 1][chamber - 1][0] =
318  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
319  m_poscscinner_slope[endcap - 1][chamber - 1][0] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
320  m_negcscinner_slope[endcap - 1][chamber - 1][0] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
321 
322  sprintf(name, "cscinner_slope_%s_23", ec_chamber);
323  sprintf(pos, "pos%s", name);
324  sprintf(neg, "neg%s", name);
325  m_cscinner_slope[endcap - 1][chamber - 1][1] =
326  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
327  m_poscscinner_slope[endcap - 1][chamber - 1][1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
328  m_negcscinner_slope[endcap - 1][chamber - 1][1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
329 
330  sprintf(name, "cscinner_slope_%s_34", ec_chamber);
331  sprintf(pos, "pos%s", name);
332  sprintf(neg, "neg%s", name);
333  m_cscinner_slope[endcap - 1][chamber - 1][2] =
334  bookProfile("/iterN/", name, name, 20, -max_curv, max_curv, 1, -100., 100., " ");
335  m_poscscinner_slope[endcap - 1][chamber - 1][2] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
336  m_negcscinner_slope[endcap - 1][chamber - 1][2] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
337  }
338  }
339 
340  // cross-system
341  for (int e = 1; e <= 2; e++)
342  for (int s = 1; s <= 12; s++) {
343  char endcap_sector[50];
344  if (e == 1)
345  sprintf(endcap_sector, "Wp2S%02d", s);
346  if (e == 2)
347  sprintf(endcap_sector, "Wm2S%02d", s);
348 
349  int nb = 200;
350  double wnd = 100.;
351 
352  sprintf(pos, "pos_x_dt1_csc1_%s", endcap_sector);
353  sprintf(neg, "neg_x_dt1_csc1_%s", endcap_sector);
354  m_x_pos_dt1_csc1_resid[e - 1][s - 1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
355  m_x_neg_dt1_csc1_resid[e - 1][s - 1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
356 
357  sprintf(pos, "pos_x_dt1_csc2_%s", endcap_sector);
358  sprintf(neg, "neg_x_dt1_csc2_%s", endcap_sector);
359  m_x_pos_dt1_csc2_resid[e - 1][s - 1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
360  m_x_neg_dt1_csc2_resid[e - 1][s - 1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
361 
362  sprintf(pos, "pos_x_dt2_csc1_%s", endcap_sector);
363  sprintf(neg, "neg_x_dt2_csc1_%s", endcap_sector);
364  m_x_pos_dt2_csc1_resid[e - 1][s - 1] = book1D("/iterN/", pos, pos, nb, -wnd, wnd);
365  m_x_neg_dt2_csc1_resid[e - 1][s - 1] = book1D("/iterN/", neg, neg, nb, -wnd, wnd);
366  }
367 }
368 
370  const edm::EventSetup &iSetup,
371  const ConstTrajTrackPairCollection &trajtracks) {
373  iEvent.getByLabel(m_beamSpotTag, beamSpot);
374 
375  const GlobalTrackingGeometry *globalGeometry = &iSetup.getData(m_esTokenGBTGeom);
376  const DetIdAssociator *muonDetIdAssociator_ = &iSetup.getData(m_esTokenDetId);
377  const Propagator *prop = &iSetup.getData(m_esTokenProp);
379 
380  if (m_muonCollectionTag.label().empty()) // use trajectories
381  {
382  for (ConstTrajTrackPairCollection::const_iterator trajtrack = trajtracks.begin(); trajtrack != trajtracks.end();
383  ++trajtrack) {
384  const Trajectory *traj = (*trajtrack).first;
385  const reco::Track *track = (*trajtrack).second;
386 
387  if (track->pt() > m_minTrackPt && track->p() > m_minTrackP && fabs(track->dxy(beamSpot->position())) < m_maxDxy) {
388  MuonResidualsFromTrack muonResidualsFromTrack(
389  iSetup, magneticField, globalGeometry, muonDetIdAssociator_, prop, traj, track, pNavigator(), 1000.);
390  processMuonResidualsFromTrack(muonResidualsFromTrack);
391  }
392  } // end loop over tracks
393  } else {
395  iEvent.getByLabel(m_muonCollectionTag, muons);
396 
397  for (reco::MuonCollection::const_iterator muon = muons->begin(); muon != muons->end(); ++muon) {
398  if (!(muon->isTrackerMuon() && muon->innerTrack().isNonnull()))
399  continue;
400 
401  if (m_minTrackPt < muon->pt() && m_minTrackP < muon->p() &&
402  fabs(muon->innerTrack()->dxy(beamSpot->position())) < m_maxDxy) {
403  MuonResidualsFromTrack muonResidualsFromTrack(globalGeometry, &(*muon), pNavigator(), 100.);
404  processMuonResidualsFromTrack(muonResidualsFromTrack);
405  }
406  }
407  }
408 }
409 
411  if (mrft.trackerNumHits() < m_minTrackerHits)
412  return;
413  if (!m_allowTIDTEC && mrft.contains_TIDTEC())
414  return;
415  if (mrft.normalizedChi2() > m_maxTrackerRedChi2)
416  return;
417 
418  int nMuChambers = 0;
419  std::vector<DetId> chamberIds = mrft.chamberIds();
420  for (unsigned ch = 0; ch < chamberIds.size(); ch++)
421  if (chamberIds[ch].det() == DetId::Muon)
422  nMuChambers++;
423  if (nMuChambers < m_minNCrossedChambers)
424  return;
425 
426  double qoverpt = (mrft.getTrack()->charge() > 0 ? 1. : -1.) / mrft.getTrack()->pt();
427  double qoverpz = 0.;
428  if (fabs(mrft.getTrack()->pz()) > 0.01)
429  qoverpz = mrft.getTrack()->charge() / fabs(mrft.getTrack()->pz());
430 
431  for (std::vector<DetId>::const_iterator chamberId = chamberIds.begin(); chamberId != chamberIds.end(); ++chamberId) {
432  if (chamberId->det() != DetId::Muon)
433  continue;
434 
435  // **************** DT ****************
436  if (m_doDT && chamberId->subdetId() == MuonSubdetId::DT) {
439 
440  if (dt13 != nullptr && dt13->numHits() >= m_minDT13Hits) {
441  DTChamberId thisid(chamberId->rawId());
442  for (std::vector<DetId>::const_iterator otherId = chamberIds.begin(); otherId != chamberIds.end(); ++otherId) {
443  if (otherId->det() == DetId::Muon && otherId->subdetId() == MuonSubdetId::DT) {
444  DTChamberId thatid(otherId->rawId());
445  if (thisid.rawId() != thatid.rawId() && thisid.wheel() == thatid.wheel() &&
446  thisid.sector() == thatid.sector()) {
448  if (dt13other != nullptr && dt13other->numHits() >= m_minDT13Hits) {
449  double slopediff = 1000. * (dt13->global_resslope() - dt13other->global_resslope());
450  //double length = dt13->chamberAlignable()->surface().toGlobal(align::LocalPoint(0,0,0)).perp() -
451  // dt13other->chamberAlignable()->surface().toGlobal(align::LocalPoint(0,0,0)).perp();
452  //double residdiff = 10. * (dt13->global_residual() + length*dt13->global_resslope() - dt13other->global_residual());
453  double residdiff = 10. * (dt13->global_residual() - dt13other->global_residual());
454 
455  int st = 0;
456  if (thatid.station() - thisid.station() == 1)
457  st = thisid.station();
458  if (st > 0) {
459  m_dt13_resid[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(qoverpt, residdiff);
460  m_dt13_slope[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(qoverpt, slopediff);
461  if (qoverpt > 0) {
462  m_posdt13_resid[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(residdiff);
463  m_posdt13_slope[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(slopediff);
464  } else {
465  m_negdt13_resid[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(residdiff);
466  m_negdt13_slope[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(slopediff);
467  }
468  }
469  } // end other numhits
470  } // end this near other
471  } // end other is DT
472 
473  // cross-system: other is CSC
474  // only do it for DT stubs in W+-2 St1&2:
475  if (!(abs(thisid.wheel()) == 2 && (thisid.station() == 1 || thisid.station() == 2)))
476  continue;
477  if (otherId->det() == DetId::Muon && otherId->subdetId() == MuonSubdetId::CSC) {
478  CSCDetId thatid(otherId->rawId());
479  //only do it for CSC stubs in St1R3 or St2R2:
480  if (!((thatid.station() == 1 && thatid.ring() == 3) || (thatid.station() == 2 && thatid.ring() == 2)))
481  continue;
482 
484  if (cscother != nullptr && cscother->numHits() >= m_minCSCHits) {
485  // scale to adjust the csc residual size to be comparabe to dt's one
486  double csc_scale = dt13->chamberAlignable()
487  ->surface()
488  .toGlobal(align::LocalPoint(dt13->trackx(), dt13->tracky(), 0))
489  .perp() /
490  cscother->chamberAlignable()
491  ->surface()
492  .toGlobal(align::LocalPoint(cscother->trackx(), cscother->tracky(), 0))
493  .perp();
494  double residdiff = 10. * (dt13->global_residual() - cscother->global_residual() * csc_scale);
495  if (thisid.station() == 1 && thatid.station() == 1) {
496  if (qoverpt > 0)
497  m_x_pos_dt1_csc1_resid[thatid.endcap() - 1][thisid.sector() - 1]->Fill(residdiff);
498  else
499  m_x_neg_dt1_csc1_resid[thatid.endcap() - 1][thisid.sector() - 1]->Fill(residdiff);
500  } else if (thisid.station() == 1 && thatid.station() == 2) {
501  if (qoverpt > 0)
502  m_x_pos_dt1_csc2_resid[thatid.endcap() - 1][thisid.sector() - 1]->Fill(residdiff);
503  else
504  m_x_neg_dt1_csc2_resid[thatid.endcap() - 1][thisid.sector() - 1]->Fill(residdiff);
505  } else if (thisid.station() == 2 && thatid.station() == 1) {
506  if (qoverpt > 0)
507  m_x_pos_dt2_csc1_resid[thatid.endcap() - 1][thisid.sector() - 1]->Fill(residdiff);
508  else
509  m_x_neg_dt2_csc1_resid[thatid.endcap() - 1][thisid.sector() - 1]->Fill(residdiff);
510  }
511  }
512  } // end other is CSC
513  } // end loop over other
514  } // end if DT13
515 
516  // z-direction
517  if (dt2 != nullptr && dt2->numHits() >= m_minDT2Hits && (dt2->chi2() / double(dt2->ndof())) < 2.0) {
518  DTChamberId thisid(chamberId->rawId());
519  for (std::vector<DetId>::const_iterator otherId = chamberIds.begin(); otherId != chamberIds.end(); ++otherId) {
520  if (otherId->det() == DetId::Muon && otherId->subdetId() == MuonSubdetId::DT) {
521  DTChamberId thatid(otherId->rawId());
522  if (thisid.rawId() != thatid.rawId() && thisid.wheel() == thatid.wheel() &&
523  thisid.sector() == thatid.sector()) {
525  if (dt2other != nullptr && dt2other->numHits() >= m_minDT2Hits) {
526  double slopediff = 1000. * (dt2->global_resslope() - dt2other->global_resslope());
527  //double length = dt2->chamberAlignable()->surface().toGlobal(align::LocalPoint(0,0,0)).perp() -
528  // dt2other->chamberAlignable()->surface().toGlobal(align::LocalPoint(0,0,0)).perp();
529  //double residdiff = 10. * (dt2->global_residual() + length*dt2->global_resslope() - dt2other->global_residual());
530  double residdiff = 10. * (dt2->global_residual() - dt2other->global_residual());
531 
532  int st = 0;
533  if (thatid.station() - thisid.station() == 1)
534  st = thisid.station();
535  if (st > 0) {
536  m_dt2_resid[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(qoverpt, residdiff);
537  m_dt2_slope[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(qoverpt, slopediff);
538  if (qoverpt > 0) {
539  m_posdt2_resid[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(residdiff);
540  m_posdt2_slope[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(slopediff);
541  } else {
542  m_negdt2_resid[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(residdiff);
543  m_negdt2_slope[thisid.wheel() + 2][thisid.sector() - 1][st - 1]->Fill(slopediff);
544  }
545  }
546  } // end other numhits
547  } // end this near other
548  } // end other is DT
549  } // end loop over other
550  } // end if DT2
551  } // end if DT
552 
553  // **************** CSC ****************
554  else if (m_doCSC && chamberId->subdetId() == MuonSubdetId::CSC) {
556  if (csc->numHits() >= m_minCSCHits) {
557  CSCDetId thisid(chamberId->rawId());
558  for (std::vector<DetId>::const_iterator otherId = chamberIds.begin(); otherId != chamberIds.end(); ++otherId) {
559  if (otherId->det() == DetId::Muon && otherId->subdetId() == MuonSubdetId::CSC) {
560  CSCDetId thatid(otherId->rawId());
561  if (thisid.rawId() != thatid.rawId() && thisid.endcap() == thatid.endcap()) {
563  if (cscother != nullptr && cscother->numHits() >= m_minCSCHits) {
564  double slopediff = 1000. * (csc->global_resslope() - cscother->global_resslope());
565  //double length = csc->chamberAlignable()->surface().toGlobal(align::LocalPoint(0,0,0)).z() -
566  // cscother->chamberAlignable()->surface().toGlobal(align::LocalPoint(0,0,0)).z();
567  //double residdiff = 10. * (csc->global_residual() + length*csc->global_resslope() - cscother->global_residual());
568  double residdiff = 10. * (csc->global_residual() - cscother->global_residual());
569 
570  int thischamber = thisid.chamber();
571  int thisring = thisid.ring();
572  if (thisid.station() == 1 && (thisring == 1 || thisring == 4)) {
573  thischamber = (thischamber - 1) / 2 + 1;
574  thisring = 1;
575  }
576 
577  if (thisring == thatid.ring() && thischamber == thatid.chamber()) {
578  bool inner = (thisring == 1);
579  bool outer = (thisring == 2);
580  int st = 0;
581  if (thatid.station() - thisid.station() == 1 && (inner || thisid.station() < 3))
582  st = thisid.station();
583 
584  if (outer && st > 0) {
585  m_cscouter_resid[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(qoverpz, residdiff);
586  m_cscouter_slope[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(qoverpz, slopediff);
587  if (qoverpz > 0) {
588  m_poscscouter_resid[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(residdiff);
589  m_poscscouter_slope[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(slopediff);
590  } else {
591  m_negcscouter_resid[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(residdiff);
592  m_negcscouter_slope[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(slopediff);
593  }
594  }
595  if (inner && st > 0) {
596  m_cscinner_resid[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(qoverpz, residdiff);
597  m_cscinner_slope[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(qoverpz, slopediff);
598  if (qoverpz > 0) {
599  m_poscscinner_resid[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(residdiff);
600  m_poscscinner_slope[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(slopediff);
601  } else {
602  m_negcscinner_resid[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(residdiff);
603  m_negcscinner_slope[thisid.endcap() - 1][thischamber - 1][st - 1]->Fill(slopediff);
604  }
605  }
606  } // end of same ring&chamber
607  } // end other min numhits
608  } // end this near other
609  } // end other is CSC
610  } // end loop over other
611 
612  } // end if this min numhits
613  } // end if CSC
614 
615  } // end loop over chamberIds
616 }
617 
620  "AlignmentMonitorSegmentDifferences");
AlignmentMonitorSegmentDifferences::m_minTrackP
double m_minTrackP
Definition: AlignmentMonitorSegmentDifferences.cc:56
Propagator.h
PDWG_BPHSkim_cff.muons
muons
Definition: PDWG_BPHSkim_cff.py:47
MuonSubdetId::CSC
static constexpr int CSC
Definition: MuonSubdetId.h:12
AlignmentMonitorSegmentDifferences::m_x_pos_dt1_csc2_resid
TH1F * m_x_pos_dt1_csc2_resid[2][12]
Definition: AlignmentMonitorSegmentDifferences.cc:98
AlignmentMonitorSegmentDifferences::m_minTrackPt
double m_minTrackPt
Definition: AlignmentMonitorSegmentDifferences.cc:55
electrons_cff.bool
bool
Definition: electrons_cff.py:366
pwdgSkimBPark_cfi.beamSpot
beamSpot
Definition: pwdgSkimBPark_cfi.py:5
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
MessageLogger.h
AlignmentMonitorSegmentDifferences::m_posdt2_resid
TH1F * m_posdt2_resid[5][12][2]
Definition: AlignmentMonitorSegmentDifferences.cc:75
ESInputTag
MuonResidualsAngleFitter.h
muon
Definition: MuonCocktails.h:17
AlignmentMonitorSegmentDifferences::m_negdt13_slope
TH1F * m_negdt13_slope[5][12][3]
Definition: AlignmentMonitorSegmentDifferences.cc:78
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
MuonResidualsPositionFitter.h
edm
HLT enums.
Definition: AlignableModifier.h:19
AlignmentMonitorSegmentDifferences::m_poscscouter_slope
TH1F * m_poscscouter_slope[2][36][2]
Definition: AlignmentMonitorSegmentDifferences.cc:88
pos
Definition: PixelAliasList.h:18
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
MuonResidualsFromTrack::chamberResidual
MuonChamberResidual * chamberResidual(DetId chamberId, int type)
Definition: MuonResidualsFromTrack.cc:735
MuonResidualsFromTrack::trackerNumHits
int trackerNumHits() const
Definition: MuonResidualsFromTrack.h:78
MuonResidualsTwoBin.h
AlignmentMonitorSegmentDifferences::m_x_neg_dt2_csc1_resid
TH1F * m_x_neg_dt2_csc1_resid[2][12]
Definition: AlignmentMonitorSegmentDifferences.cc:102
AlignmentMonitorPluginFactory
AlignmentMonitorSegmentDifferences::m_negdt2_resid
TH1F * m_negdt2_resid[5][12][2]
Definition: AlignmentMonitorSegmentDifferences.cc:79
AlignmentMonitorSegmentDifferences::m_negcscouter_slope
TH1F * m_negcscouter_slope[2][36][2]
Definition: AlignmentMonitorSegmentDifferences.cc:92
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
HLT_FULL_cff.magneticField
magneticField
Definition: HLT_FULL_cff.py:348
AlignmentMonitorSegmentDifferences::m_esTokenMF
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > m_esTokenMF
Definition: AlignmentMonitorSegmentDifferences.cc:51
edm::Handle< reco::BeamSpot >
AlignmentMonitorSegmentDifferences::m_maxDxy
double m_maxDxy
Definition: AlignmentMonitorSegmentDifferences.cc:57
AlignmentMonitorBase::pNavigator
AlignableNavigator * pNavigator()
Definition: AlignmentMonitorBase.h:115
AlignmentMonitorSegmentDifferences::m_cscouter_slope
TProfile * m_cscouter_slope[2][36][2]
Definition: AlignmentMonitorSegmentDifferences.cc:84
AlignmentMonitorSegmentDifferences::AlignmentMonitorSegmentDifferences
AlignmentMonitorSegmentDifferences(const edm::ParameterSet &cfg, edm::ConsumesCollector iC)
Definition: AlignmentMonitorSegmentDifferences.cc:117
AlignmentMonitorSegmentDifferences::m_poscscinner_slope
TH1F * m_poscscinner_slope[2][18][3]
Definition: AlignmentMonitorSegmentDifferences.cc:90
MuonChamberResidual::global_residual
double global_residual() const
Definition: MuonChamberResidual.cc:49
AlignmentMonitorSegmentDifferences::book
void book() override
Book or retrieve histograms; MUST be reimplemented.
Definition: AlignmentMonitorSegmentDifferences.cc:138
reco::TrackBase::pt
double pt() const
track transverse momentum
Definition: TrackBase.h:637
edm::InputTag::label
std::string const & label() const
Definition: InputTag.h:36
AlignmentMonitorSegmentDifferences::m_minTrackerHits
int m_minTrackerHits
Definition: AlignmentMonitorSegmentDifferences.cc:58
Propagator
Definition: Propagator.h:44
csc
Definition: L1Track.h:19
AlignmentMonitorSegmentDifferences::m_posdt2_slope
TH1F * m_posdt2_slope[5][12][2]
Definition: AlignmentMonitorSegmentDifferences.cc:76
alignCSCRings.s
s
Definition: alignCSCRings.py:92
AlignmentMonitorSegmentDifferences::m_muonCollectionTag
edm::InputTag m_muonCollectionTag
Definition: AlignmentMonitorSegmentDifferences.cc:54
AlignmentMonitorSegmentDifferences::m_negcscinner_slope
TH1F * m_negcscinner_slope[2][18][3]
Definition: AlignmentMonitorSegmentDifferences.cc:94
AlignmentMonitorSegmentDifferences::m_poscscinner_resid
TH1F * m_poscscinner_resid[2][18][3]
Definition: AlignmentMonitorSegmentDifferences.cc:89
AlignmentMonitorSegmentDifferences::m_negcscinner_resid
TH1F * m_negcscinner_resid[2][18][3]
Definition: AlignmentMonitorSegmentDifferences.cc:93
AlignmentMonitorSegmentDifferences::m_minDT2Hits
int m_minDT2Hits
Definition: AlignmentMonitorSegmentDifferences.cc:63
GlobalTrackingGeometry
Definition: GlobalTrackingGeometry.h:20
AlignmentMonitorSegmentDifferences::m_cscinner_resid
TProfile * m_cscinner_resid[2][18][3]
Definition: AlignmentMonitorSegmentDifferences.cc:85
HLT_FULL_cff.muon
muon
Definition: HLT_FULL_cff.py:11725
SurfaceOrientation::inner
Definition: Surface.h:19
AlignmentMonitorSegmentDifferences::m_maxTrackerRedChi2
double m_maxTrackerRedChi2
Definition: AlignmentMonitorSegmentDifferences.cc:59
reco::Track
Definition: Track.h:27
IdealMagneticFieldRecord.h
MuonResidualsFromTrack
Definition: MuonResidualsFromTrack.h:52
MuonResidualsFromTrack::getTrack
const reco::Track * getTrack()
Definition: MuonResidualsFromTrack.h:75
MuonChamberResidual::chi2
double chi2() const
Definition: MuonChamberResidual.h:59
MuonResidualsFromTrack::chamberIds
const std::vector< DetId > chamberIds() const
Definition: MuonResidualsFromTrack.h:86
reco::TrackBase::charge
int charge() const
track electric charge
Definition: TrackBase.h:596
AlignableSurface::toGlobal
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
Definition: AlignableSurface.cc:15
MuonSubdetId::DT
static constexpr int DT
Definition: MuonSubdetId.h:11
Alignable::surface
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:132
Point3DBase
Definition: Point3DBase.h:10
MuonResidualsFromTrack::normalizedChi2
double normalizedChi2() const
Definition: MuonResidualsFromTrack.cc:729
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
AlignmentMonitorPluginFactory.h
GlobalTrackingGeometryRecord.h
AlignmentMonitorSegmentDifferences::m_dt2_resid
TProfile * m_dt2_resid[5][12][2]
Definition: AlignmentMonitorSegmentDifferences.cc:71
AlignmentMonitorSegmentDifferences::m_x_pos_dt1_csc1_resid
TH1F * m_x_pos_dt1_csc1_resid[2][12]
Definition: AlignmentMonitorSegmentDifferences.cc:97
AlignmentMonitorSegmentDifferences::m_posdt13_slope
TH1F * m_posdt13_slope[5][12][3]
Definition: AlignmentMonitorSegmentDifferences.cc:74
AlignmentMonitorSegmentDifferences::m_minCSCHits
int m_minCSCHits
Definition: AlignmentMonitorSegmentDifferences.cc:64
DetIdAssociator
Definition: DetIdAssociator.h:45
AlignmentMonitorSegmentDifferences::m_dt2_slope
TProfile * m_dt2_slope[5][12][2]
Definition: AlignmentMonitorSegmentDifferences.cc:72
MuonChamberResidual::kDT2
Definition: MuonChamberResidual.h:28
AlignmentMonitorSegmentDifferences::m_minDT13Hits
int m_minDT13Hits
Definition: AlignmentMonitorSegmentDifferences.cc:62
AlignmentMonitorSegmentDifferences::m_esTokenGBTGeom
const edm::ESGetToken< GlobalTrackingGeometry, GlobalTrackingGeometryRecord > m_esTokenGBTGeom
Definition: AlignmentMonitorSegmentDifferences.cc:48
edm::ParameterSet
Definition: ParameterSet.h:47
AlignmentMonitorBase::bookProfile
TProfile * bookProfile(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX, int nchY=1, double lowY=0., double highY=0., const char *option="s")
Definition: AlignmentMonitorBase.cc:114
MuonChamberResidual::numHits
int numHits() const
Definition: MuonChamberResidual.h:52
MuonChamberResidual::chamberAlignable
AlignableDetOrUnitPtr chamberAlignable() const
Definition: MuonChamberResidual.h:50
AlignmentMonitorBase.h
AlignmentMonitorSegmentDifferences::m_dt13_resid
TProfile * m_dt13_resid[5][12][3]
Definition: AlignmentMonitorSegmentDifferences.cc:69
MuonChamberResidual::trackx
double trackx() const
Definition: MuonChamberResidual.h:64
CSCDetId
Definition: CSCDetId.h:26
AlignmentMonitorSegmentDifferences::m_doCSC
bool m_doCSC
Definition: AlignmentMonitorSegmentDifferences.cc:66
AlignmentMonitorBase
Definition: AlignmentMonitorBase.h:43
makeMuonMisalignmentScenario.wheel
wheel
Definition: makeMuonMisalignmentScenario.py:319
createfilelist.int
int
Definition: createfilelist.py:10
MuonChamberResidual
Definition: MuonChamberResidual.h:26
iEvent
int iEvent
Definition: GenABIO.cc:224
MuonResidualsFromTrack::contains_TIDTEC
bool contains_TIDTEC() const
Definition: MuonResidualsFromTrack.h:84
AlignmentMonitorBase::m_beamSpotTag
const edm::InputTag m_beamSpotTag
Definition: AlignmentMonitorBase.h:117
DetIdAssociatorRecord.h
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:58
MuonChamberResidual::kCSC
Definition: MuonChamberResidual.h:28
MuonResidualsFromTrack.h
AlignmentMonitorSegmentDifferences::m_x_neg_dt1_csc2_resid
TH1F * m_x_neg_dt1_csc2_resid[2][12]
Definition: AlignmentMonitorSegmentDifferences.cc:101
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ESGetToken< GlobalTrackingGeometry, GlobalTrackingGeometryRecord >
InputTag.h
AlignmentMonitorSegmentDifferences::~AlignmentMonitorSegmentDifferences
~AlignmentMonitorSegmentDifferences() override
Definition: AlignmentMonitorSegmentDifferences.cc:37
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
looper.cfg
cfg
Definition: looper.py:296
AlignmentMonitorSegmentDifferences::m_x_neg_dt1_csc1_resid
TH1F * m_x_neg_dt1_csc1_resid[2][12]
Definition: AlignmentMonitorSegmentDifferences.cc:100
AlignmentMonitorBase::book1D
TH1F * book1D(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX)
Definition: AlignmentMonitorBase.cc:109
AlignmentMonitorSegmentDifferences::m_negcscouter_resid
TH1F * m_negcscouter_resid[2][36][2]
Definition: AlignmentMonitorSegmentDifferences.cc:91
MuonChamberResidual::tracky
double tracky() const
Definition: MuonChamberResidual.h:65
AlignmentMonitorSegmentDifferences::m_posdt13_resid
TH1F * m_posdt13_resid[5][12][3]
Definition: AlignmentMonitorSegmentDifferences.cc:73
Trajectory
Definition: Trajectory.h:38
DetIdAssociator.h
TrackingComponentsRecord.h
AlignmentMonitorSegmentDifferences::m_cscouter_resid
TProfile * m_cscouter_resid[2][36][2]
Definition: AlignmentMonitorSegmentDifferences.cc:83
AlignmentMonitorSegmentDifferences
Definition: AlignmentMonitorSegmentDifferences.cc:34
AlignmentMonitorSegmentDifferences::m_cscinner_slope
TProfile * m_cscinner_slope[2][18][3]
Definition: AlignmentMonitorSegmentDifferences.cc:86
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
AlignmentMonitorSegmentDifferences::m_negdt2_slope
TH1F * m_negdt2_slope[5][12][2]
Definition: AlignmentMonitorSegmentDifferences.cc:80
AlignmentMonitorSegmentDifferences::event
void event(const edm::Event &iEvent, const edm::EventSetup &iSetup, const ConstTrajTrackPairCollection &iTrajTracks) override
Called for each event (by "run()"): may be reimplemented.
Definition: AlignmentMonitorSegmentDifferences.cc:369
AlignmentMonitorSegmentDifferences::m_doDT
bool m_doDT
Definition: AlignmentMonitorSegmentDifferences.cc:65
AlignmentMonitorSegmentDifferences::m_dt13_slope
TProfile * m_dt13_slope[5][12][3]
Definition: AlignmentMonitorSegmentDifferences.cc:70
reco::TrackBase::pz
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:646
AlignmentMonitorSegmentDifferences::m_esTokenProp
const edm::ESGetToken< Propagator, TrackingComponentsRecord > m_esTokenProp
Definition: AlignmentMonitorSegmentDifferences.cc:50
AlignmentMonitorBase::ConstTrajTrackPairCollection
std::vector< ConstTrajTrackPair > ConstTrajTrackPairCollection
Definition: AlignmentMonitorBase.h:46
DetId::Muon
Definition: DetId.h:26
MuonChamberResidual::ndof
int ndof() const
Definition: MuonChamberResidual.h:60
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
AlignmentMonitorSegmentDifferences::m_x_pos_dt2_csc1_resid
TH1F * m_x_pos_dt2_csc1_resid[2][12]
Definition: AlignmentMonitorSegmentDifferences.cc:99
DTChamberId
Definition: DTChamberId.h:14
ParameterSet.h
AlignmentMonitorSegmentDifferences::m_allowTIDTEC
bool m_allowTIDTEC
Definition: AlignmentMonitorSegmentDifferences.cc:60
SurfaceOrientation::outer
Definition: Surface.h:19
AlignmentMonitorSegmentDifferences::processMuonResidualsFromTrack
void processMuonResidualsFromTrack(MuonResidualsFromTrack &mrft)
Definition: AlignmentMonitorSegmentDifferences.cc:410
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
GlobalTrackingGeometry.h
MuonChamberResidual::kDT13
Definition: MuonChamberResidual.h:28
edm::Event
Definition: Event.h:73
AlignmentMonitorSegmentDifferences::m_poscscouter_resid
TH1F * m_poscscouter_resid[2][36][2]
Definition: AlignmentMonitorSegmentDifferences.cc:87
MagneticField
Definition: MagneticField.h:19
MuonChamberResidual::global_resslope
double global_resslope() const
Definition: MuonChamberResidual.cc:51
AlignmentMonitorSegmentDifferences::m_negdt13_resid
TH1F * m_negdt13_resid[5][12][3]
Definition: AlignmentMonitorSegmentDifferences.cc:77
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
AlignmentMonitorSegmentDifferences::m_minNCrossedChambers
bool m_minNCrossedChambers
Definition: AlignmentMonitorSegmentDifferences.cc:61
AlignmentMonitorSegmentDifferences::m_esTokenDetId
const edm::ESGetToken< DetIdAssociator, DetIdAssociatorRecord > m_esTokenDetId
Definition: AlignmentMonitorSegmentDifferences.cc:49