CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ResidualRefitting.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include "ResidualRefitting.h"
3 #include <iomanip>
4 
5 //framework includes
12 
19 
23 
27 
29 
33 
35 
36 
37 
39  outputFileName_ ( cfg.getUntrackedParameter<std::string>("histoutputFile") ),
40  PropagatorSource_ ( cfg.getParameter<std::string>("propagator")),
41  muons_ ( cfg.getParameter<edm::InputTag>( "muons" ) ),
42  muonsRemake_ ( cfg.getParameter<edm::InputTag>("muonsRemake" ) ), //This Feels Misalignment
43  muonsNoStation1_ ( cfg.getParameter<edm::InputTag>("muonsNoStation1") ),
44  muonsNoStation2_ ( cfg.getParameter<edm::InputTag>("muonsNoStation2") ),
45  muonsNoStation3_ ( cfg.getParameter<edm::InputTag>("muonsNoStation3") ),
46  muonsNoStation4_ ( cfg.getParameter<edm::InputTag>("muonsNoStation4") ),
47 
48 /*
49  muonsNoPXBLayer1_ ( cfg.getParameter<edm::InputTag>("muonsNoPXBLayer1" ) ),
50  muonsNoPXBLayer2_ ( cfg.getParameter<edm::InputTag>("muonsNoPXBLayer1" ) ),
51  muonsNoPXBLayer3_ ( cfg.getParameter<edm::InputTag>("muonsNoPXBLayer1" ) ),
52 
53  muonsNoTIBLayer1_ ( cfg.getParameter<edm::InputTag>("muonsNoTIBLayer1" ) ),
54  muonsNoTIBLayer2_ ( cfg.getParameter<edm::InputTag>("muonsNoTIBLayer2" ) ),
55  muonsNoTIBLayer3_ ( cfg.getParameter<edm::InputTag>("muonsNoTIBLayer3" ) ),
56  muonsNoTIBLayer4_ ( cfg.getParameter<edm::InputTag>("muonsNoTIBLayer4" ) ),
57 
58  muonsNoTOBLayer1_ ( cfg.getParameter<edm::InputTag>("muonsNoTOBLayer1" ) ),
59  muonsNoTOBLayer2_ ( cfg.getParameter<edm::InputTag>("muonsNoTOBLayer2" ) ),
60  muonsNoTOBLayer3_ ( cfg.getParameter<edm::InputTag>("muonsNoTOBLayer3" ) ),
61  muonsNoTOBLayer4_ ( cfg.getParameter<edm::InputTag>("muonsNoTOBLayer4" ) ),
62  muonsNoTOBLayer5_ ( cfg.getParameter<edm::InputTag>("muonsNoTOBLayer5" ) ),
63  muonsNoTOBLayer6_ ( cfg.getParameter<edm::InputTag>("muonsNoTOBLayer6" ) ),*/
64  debug_ ( cfg.getUntrackedParameter<bool>("doDebug" ) ),
65  outputFile_(0),
66  outputTree_(0),
67  outputBranch_(0),
68  theField(0)
69 {
70  eventInfo_.evtNum_ = 0;
71  eventInfo_.evtNum_ = 0;
72 
73 // service parameters
74  edm::ParameterSet serviceParameters = cfg.getParameter<edm::ParameterSet>("ServiceParameters");
75 
76 // the services
77  theService = new MuonServiceProxy(serviceParameters);
78 
79 } //The constructor
80 
82 
83  if(debug_) printf("STARTING EVENT\n");
84 
85  eventInfo_.evtNum_ = (int)event.id().run();
86  eventInfo_.runNum_ = (int)event.id().event();
87 
88  // Generator Collection
89 
90 // The original muon collection that is sitting in memory
92 
98 
99 
100  event.getByLabel(muons_ , muons ); //set label to muons
101  event.getByLabel(muonsRemake_ , muonTracks);
102  event.getByLabel(muonsNoStation1_ , muonsNoSt1);
103  event.getByLabel(muonsNoStation2_ , muonsNoSt2);
104  event.getByLabel(muonsNoStation3_ , muonsNoSt3);
105  event.getByLabel(muonsNoStation4_ , muonsNoSt4);
106 
107 
108 /*
109 // std::cout<<"Muon Collection No PXB "<<std::endl;
110 //Tracker Barrel Pixel Refits
111  edm::Handle<MuonCollection> muonsNoPXBLayer1Coll;
112  event.getByLabel(muonsNoPXBLayer1_, muonsNoPXBLayer1Coll);
113  edm::Handle<MuonCollection> muonsNoPXBLayer2Coll;
114  event.getByLabel(muonsNoPXBLayer2_, muonsNoPXBLayer2Coll);
115  edm::Handle<MuonCollection> muonsNoPXBLayer3Coll;
116  event.getByLabel(muonsNoPXBLayer3_, muonsNoPXBLayer3Coll);
117 // std::cout<<"Muon Collection No TIB "<<std::endl;
118 // Tracker Inner Barrel Refits
119  edm::Handle<MuonCollection> muonsNoTIBLayer1Coll;
120  event.getByLabel(muonsNoTIBLayer1_, muonsNoTIBLayer1Coll);
121  edm::Handle<MuonCollection> muonsNoTIBLayer2Coll;
122  event.getByLabel(muonsNoTIBLayer2_, muonsNoTIBLayer2Coll);
123  edm::Handle<MuonCollection> muonsNoTIBLayer3Coll;
124  event.getByLabel(muonsNoTIBLayer3_, muonsNoTIBLayer3Coll);
125  edm::Handle<MuonCollection> muonsNoTIBLayer4Coll;
126  event.getByLabel(muonsNoTIBLayer4_, muonsNoTIBLayer4Coll);
127 
128 // std::cout<<"Muon Collection No TOB "<<std::endl;
129 
130 //Tracker outer barrel refits
131  edm::Handle<MuonCollection> muonsNoTOBLayer1Coll;
132  event.getByLabel(muonsNoTOBLayer1_, muonsNoTOBLayer1Coll);
133  edm::Handle<MuonCollection> muonsNoTOBLayer2Coll;
134  event.getByLabel(muonsNoTOBLayer2_, muonsNoTOBLayer2Coll);
135  edm::Handle<MuonCollection> muonsNoTOBLayer3Coll;
136  event.getByLabel(muonsNoTOBLayer3_, muonsNoTOBLayer3Coll);
137  edm::Handle<MuonCollection> muonsNoTOBLayer4Coll;
138  event.getByLabel(muonsNoTOBLayer4_, muonsNoTOBLayer4Coll);
139  edm::Handle<MuonCollection> muonsNoTOBLayer5Coll;
140  event.getByLabel(muonsNoTOBLayer5_, muonsNoTOBLayer5Coll);
141  edm::Handle<MuonCollection> muonsNoTOBLayer6Coll;
142  event.getByLabel(muonsNoTOBLayer6_, muonsNoTOBLayer6Coll);
143 */
144  //magnetic field information
146  edm::ESHandle<GlobalTrackingGeometry> globalTrackingGeometry;
147  eventSetup.get<IdealMagneticFieldRecord>().get(field);
148  eventSetup.get<GlobalTrackingGeometryRecord>().get(globalTrackingGeometry);
150  theField = &*field;
151 
152 
153  theService->update(eventSetup);
154 
155 //Zero storage
156  zero_storage();
157 
158 
159 //Do the Gmr Muons from the unModified Collection
160 
161 /*
162  int iGmr = 0;
163  if ( (muons->end() - muons->begin()) > 0) printf("Data Dump:: Original GMR Muons\n");
164  for ( MuonCollection::const_iterator muon = muons->begin(); muon!=muons->end(); muon++, iGmr++) {
165  if ( iGmr >= ResidualRefitting::N_MAX_STORED) break; // error checking
166  if (!debug
167 
168  dumpTrackRef(muon->combinedMuon(), "cmb");
169  dumpTrackRef(muon->standAloneMuon(), "sam");
170  dumpTrackRef(muon->track(), "trk");
171 
172 
173  }
174  storageGmrOld_.n_ = iGmr;
175  storageSamNew_.n_ = iGmr;
176 */
177 
178 //Refitted muons
179  if (debug_) printf("Data Dump:: Rebuilt GMR Muon Track With TeV refitter default\n");
180  int iGmrRemake = 0;
181  for ( reco::TrackCollection::const_iterator muon = muonTracks->begin(); muon!=muonTracks->end(); muon++, iGmrRemake++) {
182  if ( iGmrRemake >= ResidualRefitting::N_MAX_STORED) break; // error checking
183  // from TrackInfoProducer/test/TrackInfoAnalyzerExample.cc
184  reco::TrackRef trackref=reco::TrackRef(muonTracks,iGmrRemake);
185 
186  if (debug_) dumpTrackRef(trackref, "gmr");
187  muonInfo(storageGmrNew_,trackref,iGmrRemake);
188 
189  }
190  storageGmrNew_.n_ = iGmrRemake;
191 
192 
193 
194  if (debug_) printf("muons Remake");
195  if (debug_) printf("-----------------------------------------\n");
196  CollectTrackHits(muonTracks, storageTrackExtrapRec_, eventSetup);
197 
198 
199  if (true) {
200  printf("muons No Station 1");
201  printf("-----------------------------------------\n");
202  }
203  NewTrackMeasurements(muonTracks, muonsNoSt1, storageTrackExtrapRecNoSt1_);
204 
205  if (true) {
206  printf("muons No Station 2");
207  printf("-----------------------------------------\n");
208  }
209  NewTrackMeasurements(muonTracks, muonsNoSt2, storageTrackExtrapRecNoSt2_);
210 
211  if (true) {
212  printf("muons No Station 3");
213  printf("-----------------------------------------\n");
214  }
215  NewTrackMeasurements(muonTracks, muonsNoSt3, storageTrackExtrapRecNoSt3_);
216 
217  if (true) {
218  printf("muons No Station 4");
219  printf("-----------------------------------------\n");
220  }
221  NewTrackMeasurements(muonTracks, muonsNoSt4, storageTrackExtrapRecNoSt4_);
222 
223 
224 // dumpMuonRecHits(storageRecMuon_);
225 
226 /****************************************************************************************************************************************/
227 
228 
229 /*
230  * extrapolates track to a cylinder.
231  * commented for cosmic runs with no tracker in reco muons!!
232  *
233 */
234 
235 
236  int iGmrCyl = 0;
237  for (reco::MuonCollection::const_iterator muon = muons->begin(); muon != muons->end(); muon++, iGmrCyl++) {
238 
239  dumpTrackRef(muon->combinedMuon(), "cmb");
240  dumpTrackRef(muon->standAloneMuon(), "sam");
241  dumpTrackRef(muon->track(), "trk");
242 
243  cylExtrapTrkSam(iGmrCyl, muon->standAloneMuon() , samExtrap120_ , 120.);
244  cylExtrapTrkSam(iGmrCyl, muon->track() , trackExtrap120_ , 120.);
245 
246  }
247  samExtrap120_.n_ = iGmrCyl;
248  trackExtrap120_.n_ = iGmrCyl;
249 
250 
251  if (iGmrRemake > 0 || iGmrCyl > 0) {
252  outputTree_ -> Fill();
253  std::cout << "FILLING NTUPLE!" << std::endl;
254  std::cout << "Entries Recorded: " << outputTree_ -> GetEntries() << " Branch :: " << outputBranch_ -> GetEntries() << std::endl<<std::endl;
255  } else std::cout<<"no tracks -- no fill!\n"<<std::endl<<std::endl;
256 
257 // /*************************************************************************************************************/
258 // //END OF ntuple dumper
259 // //END OF ntuple dumper
260 // /***********************************************************************************************************/
261 }
262 //end Analyze() main function
263 
264 //------------------------------------------------------------------------------
265 //
266 // Destructor
267 //
269  delete outputFile_;
270  delete theService;
271 }
272 //
273 // Track Collection Analysis
274 //
277  const edm::EventSetup& eventSetup) {
278 
279  //Retrieve tracker topology from geometry
280  edm::ESHandle<TrackerTopology> tTopoHandle;
281  eventSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
282  const TrackerTopology* const tTopo = tTopoHandle.product();
283 
284  int iMuonHit = 0;
285  int iTrackHit= 0;
286  int numTracks= 0;
287 
288  for ( reco::TrackCollection::const_iterator muon = trackColl->begin(); muon!=trackColl->end(); muon++) {
289 
290  int iTrack = muon - trackColl->begin();
291  reco::TrackRef trackref=reco::TrackRef(trackColl,iTrack);
293 
294  if (debug_) dumpTrackRef(trackref, "CollectTrackHits Track");
295 
296  for (trackingRecHit_iterator rec = muon->recHitsBegin(); rec != muon->recHitsEnd(); rec++) {
297 
298  int iRec = rec - muon->recHitsBegin();
299  DetId detid = (*rec)->geographicalId();
300 
301  if (detid.det() != DetId::Muon && detid.det() != DetId::Tracker) {
302  if (debug_) printf("Rec Hit not from muon system or tracker... continuing...\n");
303  continue;
304  }
305 // numTracks++;
306 // Get Local and Global Position of Hits
307 
308  LocalPoint lp = (*rec)->localPosition();
309  float lpX = lp.x();
310  float lpY = lp.y();
311  float lpZ = lp.z();
312 
314  MuonTransientTrackingRecHit::specificBuild(theService->trackingGeometry()->idToDet((**rec).geographicalId())
315  ,&(**rec));
316 
317  GlobalPoint gp = mrhp->globalPosition();
318  float gpRecX = gp.x();
319  float gpRecY = gp.y();
320  float gpRecZ = gp.z();
321  float gpRecEta = gp.eta();
322  float gpRecPhi = gp.phi();
323 
324  if (detid.det() == DetId::Muon) {
325 
326  int systemMuon = detid.subdetId(); // 1 DT; 2 CSC; 3 RPC
327  int endcap = -999;
328  int station = -999;
329  int ring = -999;
330  int chamber = -999;
331  int layer = -999;
332  int superLayer = -999;
333  int wheel = -999;
334  int sector = -999;
335  if ( systemMuon == MuonSubdetId::CSC) {
336  CSCDetId id(detid.rawId());
337  endcap = id.endcap();
338  station = id.station();
339  ring = id.ring();
340  chamber = id.chamber();
341  layer = id.layer();
342  if (debug_)printf("CSC\t[endcap][station][ringN][chamber][layer]:[%d][%d][%d][%d][%d]\t",
343  endcap, station, ring, chamber, layer);
344 
345  }
346  else if ( systemMuon == MuonSubdetId::DT ) {
347  DTWireId id(detid.rawId());
348  station = id.station();
349  layer = id.layer();
350  superLayer = id.superLayer();
351  wheel = id.wheel();
352  sector = id.sector();
353  if (debug_) printf("DT \t[station][layer][superlayer]:[%d][%d][%d]\n", station,layer,superLayer);
354 
355  }
356  else if ( systemMuon == MuonSubdetId::RPC) {
357  RPCDetId id(detid.rawId());
358  station = id.station();
359  if (debug_) printf("RPC\t[station]:[%d]\n", station);
360  }
361 
362 
363  storageRecMuon_.muonLink_ [iMuonHit] = iTrack;
364  storageRecMuon_.system_ [iMuonHit] = systemMuon;
365  storageRecMuon_.endcap_ [iMuonHit] = endcap;
366  storageRecMuon_.station_ [iMuonHit] = station;
367  storageRecMuon_.ring_ [iMuonHit] = ring;
368  storageRecMuon_.chamber_ [iMuonHit] = chamber;
369  storageRecMuon_.layer_ [iMuonHit] = layer;
370  storageRecMuon_.superLayer_ [iMuonHit] = superLayer;
371  storageRecMuon_.wheel_ [iMuonHit] = wheel;
372  storageRecMuon_.sector_ [iMuonHit] = sector;
373 
374  storageRecMuon_.gpX_ [iMuonHit] = gpRecX;
375  storageRecMuon_.gpY_ [iMuonHit] = gpRecY;
376  storageRecMuon_.gpZ_ [iMuonHit] = gpRecZ;
377  storageRecMuon_.gpEta_ [iMuonHit] = gpRecEta;
378  storageRecMuon_.gpPhi_ [iMuonHit] = gpRecPhi;
379  storageRecMuon_.lpX_ [iMuonHit] = lpX;
380  storageRecMuon_.lpY_ [iMuonHit] = lpY;
381  storageRecMuon_.lpZ_ [iMuonHit] = lpZ;
382  iMuonHit++;
383 
384  }
385  else if (detid.det() == DetId::Tracker) {
386 
387  if (debug_) printf("Tracker\n");
388 
389  StoreTrackerRecHits(detid, tTopo, iTrack, iTrackHit);
390 
391  storageTrackHit_.gpX_ [iTrackHit] = gpRecX;
392  storageTrackHit_.gpY_ [iTrackHit] = gpRecY;
393  storageTrackHit_.gpZ_ [iTrackHit] = gpRecZ;
394  storageTrackHit_.gpEta_ [iTrackHit] = gpRecEta;
395  storageTrackHit_.gpPhi_ [iTrackHit] = gpRecPhi;
396  storageTrackHit_.lpX_ [iTrackHit] = lpX;
397  storageTrackHit_.lpY_ [iTrackHit] = lpY;
398  storageTrackHit_.lpZ_ [iTrackHit] = lpZ;
399  iTrackHit++;
400  }
401  else printf("THIS CAN NOT HAPPEN\n");
402 
403  trkExtrap(detid, numTracks, iTrack, iRec, recoStart, lp, trackExtrap);
404  numTracks++;
405 
406  if (debug_) printf("\tLocal Positon: \tx = %2.2f\ty = %2.2f\tz = %2.2f\n",lpX, lpY, lpZ);
407  if (debug_) printf("\tGlobal Position: \tx = %6.2f\ty = %6.2f\tz = %6.2f\teta = %4.2f\tphi = %3.2f\n",
408  gpRecX,gpRecY,gpRecZ,gpRecEta,gpRecPhi);
409 
410 
411  }
412 
413  }
414 
415  storageRecMuon_ .n_ = iMuonHit;
416  storageTrackHit_.n_ = iTrackHit;
417  trackExtrap .n_ = numTracks;
418 
419 }
420 //
421 // Deal with Re-Fitted Track with some station omitted.
422 //
423 // This should take the new track, match it to its track before refitting with the hits dumped, and extrapolate out to the
424 // rec hits that were removed from the fit.
425 //
426 //
427 
430 
431  int numTracks = 0;
432  int recCounter = 0;
433 
434  for ( reco::TrackCollection::const_iterator muon = trackColl->begin(); muon!=trackColl->end(); muon++) {
435 
436  int iTrack = muon - trackColl->begin();
437 
438  reco::TrackRef trackref=reco::TrackRef(trackColl,iTrack);
440 
441  int iTrackLink = MatchTrackWithRecHits(muon,trackCollOrig);
442  reco::TrackRef ref = reco::TrackRef(trackCollOrig, iTrackLink);
443 
444  for (trackingRecHit_iterator rec1 = ref->recHitsBegin(); rec1!= ref->recHitsEnd(); rec1++, recCounter++) {
445 
446  //int iRec = rec1 - ref->recHitsBegin();
447 
448  bool unbiasedRec = true;
449 
450  for ( trackingRecHit_iterator rec2 = muon->recHitsBegin(); rec2!=muon->recHitsEnd();rec2++) {
451 
452  if (IsSameHit(rec1,rec2)) {
453  unbiasedRec = false;
454  break;
455  }
456  }
457  if (!unbiasedRec) continue;
458 
459  DetId detid = (*rec1)->geographicalId();
460 
462  MuonTransientTrackingRecHit::specificBuild(theService->trackingGeometry()->idToDet((**rec1).geographicalId())
463  ,&(**rec1));
464 
465  trkExtrap(detid, numTracks, iTrackLink, recCounter, recoStart, (*rec1)->localPosition(), trackExtrap);
466  numTracks++;
467 
468  }
469 
470  }
471 
472  trackExtrap.n_ = numTracks;
473 
474 }
475 //
476 // Find the original track that corresponds to the re-fitted track
477 //
478 int ResidualRefitting::MatchTrackWithRecHits(reco::TrackCollection::const_iterator trackIt,
480 
481  if (debug_) printf("Matching a re-fitted track to the original track.\n");
482 
483  int TrackMatch = -1;
484 
485  for (trackingRecHit_iterator rec = trackIt->recHitsBegin(); rec!=trackIt->recHitsEnd(); rec++) {
486 
487  bool foundMatch = false;
488  for (reco::TrackCollection::const_iterator refIt = ref->begin(); refIt!=ref->end(); refIt++) {
489 
490  int iTrackMatch = refIt - ref->begin();
491  if (foundMatch && TrackMatch !=iTrackMatch) break;
492  for (trackingRecHit_iterator recRef = refIt->recHitsBegin(); recRef!=refIt->recHitsEnd(); recRef++) {
493 
494  if (!IsSameHit(rec,recRef)) continue;
495 
496  foundMatch = true;
497  TrackMatch = iTrackMatch;
498  // printf("Rec hit match for original track %d\n", iTrackMatch);
499 
500  }
501  }
502  if (!foundMatch) {
503  printf("SOMETHING WENT WRONG! Could not match Track with original track!");
504  exit(1);
505  }
506 
507  }
508  if (debug_) printf("Rec hit match for original track %d\n", TrackMatch);
509 
510 // reco::TrackRef trackref=reco::TrackRef(ref,TrackMatch);
511  return TrackMatch;
512 }
513 /*
514 //
515 // Match two tracks to see if one is a subset of the other
516 //
517 
518 bool ResidualRefitting::TrackSubset(reco::TrackRef trackSub, reco::TrackRef trackTop) {
519 
520 
521  bool matchAll = true;
522 
523  for (trackingRecHit_iterator recSub = trackSub->recHitsBegin(); recSub!=trackSub->recHitsEnd(); recSub++) {
524 
525  bool matchSub = false;
526 
527 
528  for (trackingRecHit_iterator recTop = trackTop->recHitsBegin(); recTop!=trackTop->recHitsEnd(); recTop++) {
529 
530  if ( recSub == recTop ) matchSub = true;
531  if (matchSub) break;
532 
533  }
534  if (!matchSub) return false;
535 
536  }
537 
538  return matchAll;
539 
540 }
541 */
542 
543 //
544 // Check to see if the rec hits are the same
545 //
547 
548 
549  double lpx1 = (*hit1)->localPosition().x();
550  double lpy1 = (*hit1)->localPosition().y();
551  double lpz1 = (*hit1)->localPosition().z();
552 
553  double lpx2 = (*hit2)->localPosition().x();
554  double lpy2 = (*hit2)->localPosition().y();
555  double lpz2 = (*hit2)->localPosition().z();
556  if ( fabs( lpx1 - lpx2) > 1e-3) return false;
557 // printf("Match lpx...\n");
558  if ( fabs( lpy1 - lpy2) > 1e-3) return false;
559 // printf("Match lpy...\n");
560  if ( fabs( lpz1 - lpz2) > 1e-3) return false;
561 // printf("Match lpz...\n");
562 
563  return true;
564 
565 }
566 
567 //
568 // Store Tracker Rec Hits
569 //
570 void ResidualRefitting::StoreTrackerRecHits(DetId detid, const TrackerTopology* tTopo, int iTrack, int iRec) {
571 
572 
573  int detector = -1;
574  int subdetector = -1;
575  int blade = -1;
576  int disk = -1;
577  int ladder = -1;
578  int layer = -1;
579  int module = -1;
580  int panel = -1;
581  int ring = -1;
582  int side = -1;
583  int wheel = -1;
584 
585 //Detector Info
586 
587  detector = detid.det();
588  subdetector = detid.subdetId();
589 
590  if (detector != DetId::Tracker) {
591  std::cout<<"OMFG NOT THE TRACKER\n"<<std::endl;
592  return;
593  }
594 
595  if (debug_) std::cout<<"Tracker:: ";
596  if (subdetector == ResidualRefitting::PXB) {
597  layer = tTopo->pxbLayer(detid.rawId());
598  ladder = tTopo->pxbLadder(detid.rawId());
599  module = tTopo->pxbModule(detid.rawId());
600  if (debug_) std::cout << "PXB"
601  << "\tlayer = " << layer
602  << "\tladder = " << ladder
603  << "\tmodule = " << module;
604 
605  }
606  else if (subdetector == ResidualRefitting::PXF) {
607  side = tTopo->pxfSide(detid.rawId());
608  disk = tTopo->pxfDisk(detid.rawId());
609  blade = tTopo->pxfBlade(detid.rawId());
610  panel = tTopo->pxfPanel(detid.rawId());
611  module = tTopo->pxfModule(detid.rawId());
612  if (debug_) std::cout << "PXF"
613  << "\tside = " << side
614  << "\tdisk = " << disk
615  << "\tblade = " << blade
616  << "\tpanel = " << panel
617  << "\tmodule = " << module;
618 
619  }
620  else if (subdetector == ResidualRefitting::TIB) {
621  layer = tTopo->tibLayer(detid.rawId());
622  module = tTopo->tibModule(detid.rawId());
623  if (debug_) std::cout << "TIB"
624  << "\tlayer = " << layer
625  << "\tmodule = "<< module;
626  }
627  else if (subdetector == ResidualRefitting::TID) {
628  side = tTopo->tidSide(detid.rawId());
629  wheel = tTopo->tidWheel(detid.rawId());
630  ring = tTopo->tidRing(detid.rawId());
631  if (debug_) std::cout <<"TID"
632  << "\tside = " << side
633  << "\twheel = " << wheel
634  << "\tring = " << ring;
635 
636  }
637  else if (subdetector == ResidualRefitting::TOB) {
638  layer = tTopo->tobLayer(detid.rawId());
639  module = tTopo->tobModule(detid.rawId());
640  if (debug_) std::cout <<"TOB"
641  <<"\tlayer = " << layer
642  <<"\tmodule = " << module;
643 
644  }
645  else if (subdetector == ResidualRefitting::TEC) {
646  ring = tTopo->tecRing(detid.rawId());
647  module = tTopo->tecModule(detid.rawId());
648  if (debug_) std::cout <<"TEC"
649  << "\tring = " << ring
650  << "\tmodule = "<< module;
651  }
652 
653 
654 //Do Storage
655 
656  storageTrackHit_.muonLink_ [iRec] =iTrack ;
657  storageTrackHit_.detector_ [iRec] =detector ;
659  storageTrackHit_.blade_ [iRec] =blade ;
660  storageTrackHit_.disk_ [iRec] =disk ;
661  storageTrackHit_.ladder_ [iRec] =ladder ;
662  storageTrackHit_.layer_ [iRec] =layer ;
664  storageTrackHit_.panel_ [iRec] =panel ;
665  storageTrackHit_.ring_ [iRec] =ring ;
666  storageTrackHit_.side_ [iRec] =side ;
667  storageTrackHit_.wheel_ [iRec] =wheel ;
668 
669 }
670 
671 //
672 // Store Muon info on P, Pt, eta, phi
673 //
675 
676 
677  storeMuon.pt_ [val] = muon->pt();
678  storeMuon.p_ [val] = muon->p();
679  storeMuon.eta_[val] = muon->eta();
680  storeMuon.phi_[val] = muon->phi();
681  storeMuon.charge_[val] = muon->charge();
682  storeMuon.numRecHits_[val] = muon->numberOfValidHits();
683  storeMuon.chiSq_[val] = muon->chi2();
684  storeMuon.ndf_[val] = muon->ndof();
685  storeMuon.chiSqOvrNdf_[val] = muon->normalizedChi2();
686 
687 }
688 //
689 // Fill a track extrapolation
690 //
691 void ResidualRefitting::trkExtrap(const DetId& detid, int iTrk, int iTrkLink, int iRec,
692  const FreeTrajectoryState& freeTrajState,
693  const LocalPoint& recPoint,
694  storage_trackExtrap& storeTemp){
695 
696  bool dump_ = debug_;
697 
698  if (dump_) std::cout<< "In the trkExtrap function"<<std::endl;
699 
700  float gpExtrapX = -99999;
701  float gpExtrapY = -99999;
702  float gpExtrapZ = -99999;
703  float gpExtrapEta = -99999;
704  float gpExtrapPhi = -99999;
705 
706  float lpX = -99999;
707  float lpY = -99999;
708  float lpZ = -99999;
709 
710  //
711  // Get the local positions for the recHits
712  //
713 
714  float recLpX = recPoint.x();
715  float recLpY = recPoint.y();
716  float recLpZ = recPoint.z();
717 
718  float resX = -9999;
719  float resY = -9999;
720  float resZ = -9999;
721 
722  const GeomDet* gdet = theService->trackingGeometry()->idToDet(detid);
723 
724 // TrajectoryStateOnSurface surfTest = prop.propagate(freeTrajState, gdet->surface());
725  TrajectoryStateOnSurface surfTest = thePropagator->propagate(freeTrajState, gdet->surface());
726 
727  if (surfTest.isValid()) {
728 
729  GlobalPoint globTest = surfTest.globalPosition();
730  gpExtrapX = globTest.x();
731  gpExtrapY = globTest.y();
732  gpExtrapZ = globTest.z();
733  gpExtrapEta = globTest.eta();
734  gpExtrapPhi = globTest.phi();
735  LocalPoint loc = surfTest.localPosition();
736  if (detid.det() == DetId::Muon || detid.det() == DetId::Tracker) {
737  lpX = loc.x();
738  lpY = loc.y();
739  lpZ = loc.z();
740 
741  resX = lpX - recLpX;
742  resY = lpY - recLpY;
743  resZ = lpZ - recLpZ;
744 
745  }
746 
747  }
748  storeTemp.muonLink_ [iTrk] = iTrkLink ;
749  storeTemp.recLink_ [iTrk] = iRec ;
750  storeTemp.gpX_ [iTrk] = gpExtrapX ;
751  storeTemp.gpY_ [iTrk] = gpExtrapY ;
752  storeTemp.gpZ_ [iTrk] = gpExtrapZ ;
753  storeTemp.gpEta_ [iTrk] = gpExtrapEta;
754  storeTemp.gpPhi_ [iTrk] = gpExtrapPhi;
755  storeTemp.lpX_ [iTrk] = lpX ;
756  storeTemp.lpY_ [iTrk] = lpY ;
757  storeTemp.lpZ_ [iTrk] = lpZ ;
758  storeTemp.resX_ [iTrk] = resX ;
759  storeTemp.resY_ [iTrk] = resY ;
760  storeTemp.resZ_ [iTrk] = resZ ;
761 
762  printf("station: %d\tsector: %d\tresX storage: %4.2f\n", ReturnStation(detid), ReturnSector(detid), resX);
763 
764 }
765 //
766 // Return the station
767 //
769 
770  int station = -999;
771 
772  if (detid.det() == DetId::Muon) {
773 
774  int systemMuon = detid.subdetId(); // 1 DT; 2 CSC; 3 RPC
775  if ( systemMuon == MuonSubdetId::CSC) {
776  CSCDetId id(detid.rawId());
777  station = id.station();
778 
779  }
780  else if ( systemMuon == MuonSubdetId::DT ) {
781  DTWireId id(detid.rawId());
782  station = id.station();
783 
784  }
785  else if ( systemMuon == MuonSubdetId::RPC) {
786  RPCDetId id(detid.rawId());
787  station = id.station();
788  }
789 
790  }
791 
792  return station;
793 }
794 //
795 // Return the sector
796 //
798 
799  int sector = -999;
800 
801  if (detid.det() == DetId::Muon) {
802 
803  int systemMuon = detid.subdetId(); // 1 DT; 2 CSC; 3 RPC
804  if ( systemMuon == MuonSubdetId::DT ) {
805  DTWireId id(detid.rawId());
806  sector = id.sector();
807 
808  }
809 
810  }
811 
812  return sector;
813 }
814 
815 //
816 // Store the SAM and Track position info at a particular rho
817 //
819 
820  Cylinder::PositionType pos(0,0,0);
822 
823  Cylinder::CylinderPointer myCylinder = Cylinder::build(pos, rot, rho);
824 // SteppingHelixPropagator inwardProp ( theField, oppositeToMomentum );
825 // SteppingHelixPropagator outwardProp ( theField, alongMomentum );
826  FreeTrajectoryState recoStart = freeTrajStateMuon(track);
827 // TrajectoryStateOnSurface recoProp = outwardProp.propagate(recoStart, *myCylinder);
828  TrajectoryStateOnSurface recoProp = thePropagator->propagate(recoStart, *myCylinder);
829 
830  double xVal = -9999;
831  double yVal = -9999;
832  double zVal = -9999;
833  double phiVal = -9999;
834  double etaVal = -9999;
835 
836  if(recoProp.isValid()) {
837  GlobalPoint recoPoint = recoProp.globalPosition();
838  xVal = recoPoint.x();
839  yVal = recoPoint.y();
840  zVal = recoPoint.z();
841  phiVal = recoPoint.phi();
842  etaVal = recoPoint.eta();
843  }
844  storage.muonLink_[recNum] = recNum;
845  storage.gpX_ [recNum] = xVal;
846  storage.gpY_ [recNum] = yVal;
847  storage.gpZ_ [recNum] = zVal;
848  storage.gpEta_ [recNum] = etaVal;
849  storage.gpPhi_ [recNum] = phiVal;
850 
851  float rhoVal = sqrt( xVal*xVal + yVal*yVal);
852 
853  printf("Cylinder: rho = %4.2f\tphi = %4.2f\teta = %4.2f\n", rhoVal, phiVal, etaVal);
854  if (debug_) printf("Cylinder: rho = %4.2f\tphi = %4.2f\teta = %4.2f\n", rhoVal, phiVal, etaVal);
855 
856 
857 }
859 //Pre-Job junk
861 
862 //
863 // zero storage
864 //
866  if (debug_) printf("zero_storage\n");
867 
880 //zero out the tracker
884 
886 
891 
893 
900 
902 
906 
908 
913 
915 
922 
924 
931 
933 
935 
939 
941 
946 
953 
955 
957 
958  storageRecMuon_ .n_ = 0;
959  storageTrackHit_ .n_ = 0;
960 
961 }
962 //
963 // Zero out a muon reference
964 //
966 
967  str->n_ = 0;
968 
969  for (int i = 0; i < ResidualRefitting::N_MAX_STORED; i++) {
970 
971  str->pt_ [i] = -9999;
972  str->eta_ [i] = -9999;
973  str->p_ [i] = -9999;
974  str->phi_ [i] = -9999;
975  str->numRecHits_ [i] = -9999;
976  str->chiSq_ [i] = -9999;
977  str->ndf_ [i] = -9999;
978  str->chiSqOvrNdf_ [i] = -9999;
979  }
980 
981 }
982 //
983 // Zero track extrapolation
984 //
986 
987  str->n_ = 0;
988  for (int i = 0; i < ResidualRefitting::N_MAX_STORED_HIT; i++) {
989 
990  str->muonLink_ [i] = -9999;
991  str->recLink_ [i] = -9999;
992  str->gpX_ [i] = -9999;
993  str->gpY_ [i] = -9999;
994  str->gpZ_ [i] = -9999;
995  str->gpEta_ [i] = -9999;
996  str->gpPhi_ [i] = -9999;
997  str->lpX_ [i] = -9999;
998  str->lpY_ [i] = -9999;
999  str->lpZ_ [i] = -9999;
1000  str->resX_ [i] = -9999;
1001  str->resY_ [i] = -9999;
1002  str->resZ_ [i] = -9999;
1003  }
1004 
1005 }
1006 //
1007 // Begin Job
1008 //
1010 
1011  std::cout<<"Creating file "<< outputFileName_.c_str()<<std::endl;
1012 
1013  outputFile_ = new TFile( outputFileName_.c_str(), "RECREATE" ) ;
1014 
1015  outputTree_ = new TTree("outputTree","outputTree");
1016 
1017  outputTree_->Branch("eventInfo",&eventInfo_,
1018  "evtNum_/I:"
1019  "runNum_/I"
1020  );
1021 
1022 
1029 
1035 
1053 
1070 
1071  outputBranch_ = outputTree_ -> Branch("recHitsNew", &storageRecMuon_,
1072 
1073  "n_/I:"
1074  "muonLink_[1000]/I:"
1075 
1076  "system_[1000]/I:"
1077  "endcap_[1000]/I:"
1078  "station_[1000]/I:"
1079  "ring_[1000]/I:"
1080  "chamber_[1000]/I:"
1081  "layer_[1000]/I:"
1082  "superLayer_[1000]/I:"
1083  "wheel_[1000]/I:"
1084  "sector_[1000]/I:"
1085 
1086 
1087  "gpX_[1000]/F:"
1088  "gpY_[1000]/F:"
1089  "gpZ_[1000]/F:"
1090  "gpEta_[1000]/F:"
1091  "gpPhi_[1000]/F:"
1092  "lpX_[1000]/F:"
1093  "lpY_[1000]/F:"
1094  "lpZ_[1000]/F"
1095  );
1096 
1097 
1098  outputBranch_ = outputTree_ -> Branch("recHitsTracker", &storageTrackHit_,
1099 
1100  "n_/I:"
1101 
1102  "muonLink_[1000]/I:"
1103  "detector_[1000]/I:"
1104  "subdetector_[1000]/I:"
1105  "blade_[1000]/I:"
1106  "disk_[1000]/I:"
1107  "ladder_[1000]/I:"
1108  "layer_[1000]/I:"
1109  "module_[1000]/I:"
1110  "panel_[1000]/I:"
1111  "ring_[1000]/I:"
1112  "side_[1000]/I:"
1113  "wheel_[1000]/I:"
1114 
1115  "gpX_[1000]/F:"
1116  "gpY_[1000]/F:"
1117  "gpZ_[1000]/F:"
1118  "gpEta_[1000]/F:"
1119  "gpPhi_[1000]/F:"
1120  "lpX_[1000]/F:"
1121  "lpY_[1000]/F:"
1122  "lpZ_[1000]/F"
1123  );
1124 
1125 
1131 
1149 
1152 
1153 }
1154 //
1155 // Set the Muon Branches
1156 //
1158 
1159  outputBranch_ = outputTree_ -> Branch(branchName.c_str(), &storageTmp,
1160  "n_/I:"
1161  "charge_[10]/I:"
1162  "pt_[10]/F:"
1163  "eta_[10]/F:"
1164  "p_[10]/F:"
1165  "phi_[10]/F:"
1166  "numRecHits_[10]/I:"
1167  "chiSq_[10]/F:"
1168  "ndf_[10]/F:"
1169  "chiSqOvrNdf_[10]/F"
1170 
1171  );
1172 
1173 }
1174 //
1175 // Set the Branches for Track Extrapolations
1176 //
1178 
1179  outputBranch_ = outputTree_ -> Branch(branchName.c_str(), &storageTmp,
1180  "n_/I:"
1181  "muonLink_[1000]/I:"
1182  "recLink_[1000]/I:"
1183  "gpX_[1000]/F:"
1184  "gpY_[1000]/F:"
1185  "gpZ_[1000]/F:"
1186  "gpEta_[1000]/F:"
1187  "gpPhi_[1000]/F:"
1188  "lpX_[1000]/F:"
1189  "lpY_[1000]/F:"
1190  "lpZ_[1000]/F:"
1191  "resX_[1000]/F:"
1192  "resY_[1000]/F:"
1193  "resZ_[1000]/F"
1194 
1195  );
1196 
1197 }
1198 //
1199 // End Job
1200 //
1202 
1203 
1204  outputFile_ -> Write();
1205 
1206  outputFile_ -> Close() ;
1207 
1208 }
1209 //
1210 // Return a Free Trajectory state for a muon track
1211 //
1213 
1214  math::XYZPoint innerPos = muon -> referencePoint();
1215  math::XYZVector innerMom = muon -> momentum();
1216  if (debug_) std::cout << "Inner Pos: "
1217  << "\tx = " << innerPos.X()
1218  << "\ty = " << innerPos.Y()
1219  << "\tz = " << innerPos.Z()
1220  << std::endl;
1221 
1222  GlobalPoint innerPoint( innerPos.X(), innerPos.Y(), innerPos.Z());
1223  GlobalVector innerVec ( innerMom.X(), innerMom.Y(), innerMom.Z());
1224 
1225  FreeTrajectoryState recoStart( innerPoint, innerVec, muon ->charge(), theField );
1226  return recoStart;
1227 
1228 }
1229 
1231 // nTuple value Dumps
1233 
1234 //
1235 // dump Track Extrapolation
1236 //
1238  std::cout<<"\n\nExtrapolation Dump:\n";
1239  for (unsigned int i = 0; i < (unsigned int)track.n_; i++) {
1240 
1241 // double rho = sqrt( (float)track.gpX_[i] * (float)track.gpX_[i] + (float)track.gpY_[i] * (float)track.gpY_[i] );
1242 
1243  printf ("%d\tmuonLink= %d",i, (int)track.muonLink_[i]);
1244  printf ("\trecLink = %d", (int)track.recLink_[i] );
1245 // printf ("\tGlobal\tx = %0.3f" , (float)track.gpX_[i] );
1246 // printf ("\ty = %0.3f" , (float)track.gpY_[i] );
1247 // printf ("\tz = %0.3f" , (float)track.gpZ_[i] );
1248 // printf ("\trho =%0.3f" , rho );
1249 // printf ("\teta = %0.3f" , (float)track.gpEta_[i] );
1250 // printf ("\tphi = %0.3f" , (float)track.gpPhi_[i] );
1251  printf ("\t\tLocal\tx = %0.3f" , (float)track.lpX_[i] );
1252  printf ("\ty = %0.3f" , (float)track.lpY_[i] );
1253  printf ("\tz = %0.3f\n" , (float)track.lpZ_[i] );
1254 
1255  }
1256 
1257 }
1258 //
1259 // dump Muon Rec Hits
1260 //
1262  std::cout<<"Muon Rec Hits Dump:\n";
1263  for (unsigned int i = 0; i < (unsigned int)hit.n_; i++) {
1264 
1265 // double rho = sqrt( (float)hit.gpX_[i] * (float)hit.gpX_[i] + (float)hit.gpY_[i] * (float)hit.gpY_[i] );
1266 
1267  printf ("%d\tsubdetector = %d\t superLayer =%d" , i, (int)hit.system_[i], (int)hit.superLayer_[i] );
1268 // printf ("\tGlobal\tx = %0.3f" , (float)hit.gpX_[i] );
1269 // printf ("\ty = %0.3f" , (float)hit.gpY_[i] );
1270 // printf ("\tz = %0.3f" , (float)hit.gpZ_[i] );
1271 // printf ("\trho =%0.3f" , rho );
1272 // printf ("\teta = %0.3f" , (float)hit.gpEta_[i] );
1273 // printf ("\tphi = %0.3f\n" , (float)hit.gpPhi_[i] );
1274  printf ("\t\tLocal\tx = %0.3f" , (float)hit.lpX_[i] );
1275  printf ("\ty = %0.3f" , (float)hit.lpY_[i] );
1276  printf ("\tz = %0.3f\n" , (float)hit.lpZ_[i] );
1277 
1278  }
1279 
1280 }
1281 //
1282 // dump Tracker Rec Hits
1283 //
1285  std::cout<<"Tracker Rec Hits Dump:\n";
1286  for (unsigned int i = 0; i < (unsigned int)hit.n_; i++) {
1287 
1288 // double rho = sqrt( (float)hit.gpX_[i] * (float)hit.gpX_[i] + (float)hit.gpY_[i] * (float)hit.gpY_[i] );
1289 
1290  printf ("%d\tsubdetector = %d" , i, (int)hit.subdetector_[i] );
1291  printf ("\tlayer = %d" , (int)hit.layer_[i] );
1292 // printf ("\tGlobal\tx = %0.3f" , (float)hit.gpX_[i] );
1293 // printf ("\ty = %0.3f" , (float)hit.gpY_[i] );
1294 // printf ("\tz = %0.3f" , (float)hit.gpZ_[i] );
1295 // printf ("\trho =%0.3f" , rho );
1296 // printf ("\teta = %0.3f" , (float)hit.gpEta_[i] );
1297 // printf ("\tphi = %0.3f\n" , (float)hit.gpPhi_[i] );
1298  printf ("\t\tLocal\tx = %0.3f" , (float)hit.lpX_[i] );
1299  printf ("\ty = %0.3f" , (float)hit.lpY_[i] );
1300  printf ("\tz = %0.3f\n" , (float)hit.lpZ_[i] );
1301 
1302  }
1303 
1304 }
1305 //
1306 //Dump a TrackRef
1307 //
1309 
1310  float pt = muon->pt();
1311  float p = muon->p ();
1312  float eta = muon->eta();
1313  float phi = muon->phi();
1314  printf("\t%s: \tp = %4.2f \t pt = %4.2f \t eta = %4.2f \t phi = %4.2f\n",str.c_str(), p, pt, eta, phi);
1315 
1316 }
1317 
1319 
1320 
1322 //Deprecated
void update(const edm::EventSetup &setup)
update the services each event
void CollectTrackHits(edm::Handle< reco::TrackCollection > trackColl, ResidualRefitting::storage_trackExtrap &trackExtrap, const edm::EventSetup &eventSetup)
RunNumber_t run() const
Definition: EventID.h:39
ResidualRefitting::storage_muon storageGmrNoTIBLayer4
int endcap_[N_MAX_STORED_HIT]
static const int TIB
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:41
ResidualRefitting::storage_muon storageTrkNoTOBLayer4
int i
Definition: DBlmapReader.cc:9
void zero_muon(ResidualRefitting::storage_muon *str)
tuple cfg
Definition: looper.py:293
static const int N_MAX_STORED
unsigned int tibLayer(const DetId &id) const
int ReturnStation(DetId detid)
unsigned int tidRing(const DetId &id) const
void dumpTrackRef(reco::TrackRef muon, std::string str)
ResidualRefitting::storage_muon storageGmrNoTOBLayer1
void dumpMuonRecHits(const ResidualRefitting::storage_hit &hit)
ResidualRefitting::storage_trackExtrap storageTrackNoTEC
ResidualRefitting::storage_muon storageGmrNoPXBLayer1
float lpZ_[N_MAX_STORED_HIT]
ResidualRefitting::storage_trackExtrap storageTrackNoPXBLayer1
ResidualRefitting::storage_muon storageGmrNoTID
ResidualRefitting::storage_muon storageTrkNoTOBLayer6
TString subdetector
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
unsigned int pxfDisk(const DetId &id) const
int ReturnSector(DetId detid)
ResidualRefitting::storage_muon storageGmrNoTIBLayer1
unsigned int tecRing(const DetId &id) const
ring id
static const int PXB
ResidualRefitting::storage_trackHit storageTrackHit_
std::string PropagatorSource_
const MagneticField * theField
void zero_trackExtrap(ResidualRefitting::storage_trackExtrap *str)
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
unsigned int pxbLadder(const DetId &id) const
T y() const
Definition: PV3DBase.h:63
ResidualRefitting::storage_trackExtrap storageTrackExtrapRecNoSt3_
ResidualRefitting::storage_muon storageTrkNoTOBLayer5
GlobalPoint globalPosition() const
static const int TOB
unsigned int tidWheel(const DetId &id) const
unsigned int pxbModule(const DetId &id) const
ResidualRefitting::storage_trackExtrap storageTrackNoTIBLayer2
static const int N_MAX_STORED_HIT
ResidualRefitting::storage_trackExtrap storageTrackNoTIBLayer4
ResidualRefitting::storage_muon storageTrkNoTIBLayer2
int sector_[N_MAX_STORED_HIT]
ResidualRefitting::storage_muon storageGmrNoTOBLayer2
virtual void analyze(const edm::Event &, const edm::EventSetup &)
void NewTrackMeasurements(edm::Handle< reco::TrackCollection > trackCollOrig, edm::Handle< reco::TrackCollection > trackColl, ResidualRefitting::storage_trackExtrap &trackExtrap)
ResidualRefitting::storage_muon storageGmrNoSt1_
int layer_[N_MAX_STORED_HIT]
int chamber_[N_MAX_STORED_HIT]
ResidualRefitting::storage_trackExtrap storageTrackNoTOBLayer6
float lpY_[N_MAX_STORED_HIT]
ResidualRefitting::storage_trackExtrap storageTrackExtrapRecNoSt1_
void trkExtrap(const DetId &detid, int iTrkLink, int iTrk, int iRec, const FreeTrajectoryState &freeTrajState, const LocalPoint &recPoint, storage_trackExtrap &storeTemp)
ResidualRefitting::storage_muon storageGmrNoTOBLayer6
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:40
int muonLink_[N_MAX_STORED_HIT]
ResidualRefitting::storage_muon storageSamNew_
static const int TEC
ResidualRefitting::storage_trackExtrap storageTrackNoTOBLayer4
float gpEta_[N_MAX_STORED_HIT]
ResidualRefitting::storage_muon storageTrkNoTID
ResidualRefitting::storage_trackExtrap storageTrackExtrapTracker_
ResidualRefitting::storage_trackExtrap storageTrackExtrapRec_
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
static const int TID
int endcap() const
Definition: CSCDetId.h:93
ResidualRefitting::storage_muon storageGmrNoTOBLayer4
ResidualRefitting::storage_muon storageGmrNoSt4_
edm::InputTag muonsNoStation2_
static CylinderPointer build(const PositionType &pos, const RotationType &rot, Scalar radius, Bounds *bounds=0)
Definition: Cylinder.h:51
ResidualRefitting::storage_trackExtrap storageTrackExtrapRecNoSt4_
ResidualRefitting::storage_trackExtrap storageTrackNoTOBLayer2
void branchMuon(ResidualRefitting::storage_muon &storageTmp, std::string branchName)
static const int CSC
Definition: MuonSubdetId.h:13
int MatchTrackWithRecHits(reco::TrackCollection::const_iterator trackIt, edm::Handle< reco::TrackCollection > ref)
unsigned int tidSide(const DetId &id) const
float lpX_[N_MAX_STORED_HIT]
ResidualRefitting::storage_muon storageSamNoSt4_
int wheel_[N_MAX_STORED_HIT]
void muonInfo(ResidualRefitting::storage_muon &storeMuon, reco::TrackRef muon, int val)
std::shared_ptr< MuonTransientTrackingRecHit > MuonRecHitPointer
ResidualRefitting::storage_trackExtrap storageTrackExtrapRecNoSt2_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
T sqrt(T t)
Definition: SSEVec.h:18
ResidualRefitting::storage_muon storageTrkNoPXBLayer2
T z() const
Definition: PV3DBase.h:64
edm::InputTag muonsNoStation1_
ResidualRefitting::storage_muon storageGmrNoSt2_
float gpY_[N_MAX_STORED_HIT]
ResidualRefitting::storage_muon storageGmrNoSt3_
MuonServiceProxy * theService
ResidualRefitting::storage_muon storageGmrNoPXBLayer2
void dumpTrackExtrap(const ResidualRefitting::storage_trackExtrap &track)
ResidualRefitting(const edm::ParameterSet &)
FreeTrajectoryState freeTrajStateMuon(reco::TrackRef muon)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
ResidualRefitting::storage_muon storageGmrOld_
ResidualRefitting::storage_muon storageTrkNoPXF
ResidualRefitting::storage_muon storageGmrNoTEC
ResidualRefitting::storage_trackExtrap trackExtrap120_
unsigned int tibModule(const DetId &id) const
unsigned int pxfModule(const DetId &id) const
unsigned int pxbLayer(const DetId &id) const
unsigned int tecModule(const DetId &id) const
edm::InputTag muonsNoStation3_
Definition: DetId.h:18
ResidualRefitting::storage_muon storageGmrNoTIBLayer3
ResidualRefitting::storage_muon storageGmrNew_
float gpX_[N_MAX_STORED_HIT]
std::string outputFileName_
ResidualRefitting::storage_muon storageGmrNoTIBLayer2
int station_[N_MAX_STORED_HIT]
edm::InputTag muonsRemake_
void cylExtrapTrkSam(int recNum, reco::TrackRef track, ResidualRefitting::storage_trackExtrap &storage, double rho)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
float gpPhi_[N_MAX_STORED_HIT]
const T & get() const
Definition: EventSetup.h:56
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
static const int PXF
T const * product() const
Definition: ESHandle.h:86
ResidualRefitting::storage_muon storageTrkNoTIBLayer3
edm::InputTag muons_
ResidualRefitting::storage_trackExtrap storageTrackNoTID
ResidualRefitting::storage_muon storageTrkNoTOBLayer2
unsigned int tobModule(const DetId &id) const
bool IsSameHit(trackingRecHit_iterator hit1, trackingRecHit_iterator hit2)
ResidualRefitting::storage_trackExtrap storageTrackNoPXBLayer3
ResidualRefitting::storage_trackExtrap storageTrackNoTOBLayer5
edm::ESHandle< GlobalTrackingGeometry > trackingGeometry() const
get the tracking geometry
T eta() const
Definition: PV3DBase.h:76
ResidualRefitting::storage_muon storageSamNoSt2_
void dumpTrackHits(const ResidualRefitting::storage_trackHit &hit)
ResidualRefitting::storage_trackExtrap storageTrackNoTOBLayer3
edm::EventID id() const
Definition: EventBase.h:59
ResidualRefitting::storage_muon storageTrkNoTOBLayer1
tuple muons
Definition: patZpeak.py:38
float chiSqOvrNdf_[N_MAX_STORED]
ResidualRefitting::storage_muon storageGmrNoPXBLayer3
ResidualRefitting::storage_muon storageTrkNoTEC
static const int RPC
Definition: MuonSubdetId.h:14
ResidualRefitting::storage_muon storageSamNoSt3_
int sector() const
Definition: DTChamberId.h:61
ResidualRefitting::storage_muon storageTrkNoPXBLayer1
float gpZ_[N_MAX_STORED_HIT]
ResidualRefitting::storage_muon storageTrkNoTIBLayer1
ResidualRefitting::storage_muon storageGmrNoTOBLayer3
ResidualRefitting::storage_trackExtrap storageTrackNoTIBLayer1
unsigned int pxfSide(const DetId &id) const
int superLayer_[N_MAX_STORED_HIT]
ResidualRefitting::storage_event eventInfo_
ResidualRefitting::storage_hit storageRecMuon_
int station() const
Definition: CSCDetId.h:86
tuple cout
Definition: gather_cfg.py:145
static const int DT
Definition: MuonSubdetId.h:12
ResidualRefitting::storage_muon storageTrkNoTOBLayer3
edm::ESHandle< Propagator > thePropagator
void StoreTrackerRecHits(DetId detid, const TrackerTopology *tTopo, int iTrack, int iRec)
ResidualRefitting::storage_muon storageTrkNew_
ResidualRefitting::storage_trackExtrap storageTrackNoPXF
int station() const
Return the station number.
Definition: DTChamberId.h:51
ResidualRefitting::storage_muon storageSamNoSt1_
Detector det() const
get the detector field from this detid
Definition: DetId.h:35
T x() const
Definition: PV3DBase.h:62
ResidualRefitting::storage_muon storageGmrNoTOBLayer5
ResidualRefitting::storage_trackExtrap storageTrackNoTIBLayer3
virtual void beginJob()
Definition: vlib.h:208
static MuonRecHitPointer specificBuild(const GeomDet *geom, const TrackingRecHit *rh)
edm::InputTag muonsNoStation4_
int system_[N_MAX_STORED_HIT]
unsigned int pxfPanel(const DetId &id) const
unsigned int pxfBlade(const DetId &id) const
ResidualRefitting::storage_trackExtrap storageTrackNoTOBLayer1
void branchTrackExtrap(ResidualRefitting::storage_trackExtrap &storageTmp, std::string branchName)
ResidualRefitting::storage_muon storageGmrNoPXF
ResidualRefitting::storage_trackExtrap storageTrackNoPXBLayer2
unsigned int tobLayer(const DetId &id) const
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
ResidualRefitting::storage_muon storageTrkNoPXBLayer3
ResidualRefitting::storage_muon storageTrkNoTIBLayer4
ResidualRefitting::storage_trackExtrap samExtrap120_
int station() const
Definition: RPCDetId.h:96