CMS 3D CMS Logo

GlobalMuonToMuonProducer.cc
Go to the documentation of this file.
1 
8 
13 
14 
15 // tmp
21 
22 
25 
26  theLinksCollectionLabel = pSet.getParameter<edm::InputTag>("InputObjects");
27 
28  setAlias(pSet.getParameter<std::string>("@module_label"));
29  produces<reco::MuonCollection>().setBranchAlias(theAlias + "s");
30  trackLinkToken_ = consumes<reco::MuonTrackLinksCollection>(theLinksCollectionLabel);
31 
32 }
33 
36 
37 }
38 
40  edm::ESHandle<GlobalTrackingGeometry> trackingGeometry) const{
41 
42  const std::string metname = "Muon|RecoMuon|MuonIdentification|GlobalMuonToMuonProducer";
43 
44  LogTrace(metname) << "Valid RecHits: "<<track.found() << " invalid RecHits: " << track.lost();
45 
46  int i = 0;
48  if((*recHit)->isValid()){
49  const GeomDet* geomDet = trackingGeometry->idToDet((*recHit)->geographicalId());
50  double r = geomDet->surface().position().perp();
51  double z = geomDet->toGlobal((*recHit)->localPosition()).z();
52  LogTrace(metname) << i++ <<" r: "<< r <<" z: "<<z <<" "<<geomDet->toGlobal((*recHit)->localPosition())
53  <<std::endl;
54  }
55 }
56 
57 
58 
61 
62  const std::string metname = "Muon|RecoMuon|MuonIdentification|GlobalMuonToMuonProducer";
63 
64  // the muon collection, it will be loaded in the event
65  auto muonCollection = std::make_unique<reco::MuonCollection>();
66 
67 
69  event.getByToken(trackLinkToken_,linksCollection);
70 
71  if(linksCollection->empty()) {
72  event.put(std::move(muonCollection));
73  return;
74  }
75 
76 
77  // Global Tracking Geometry
78  edm::ESHandle<GlobalTrackingGeometry> trackingGeometry;
79  eventSetup.get<GlobalTrackingGeometryRecord>().get(trackingGeometry);
80 
81  for(reco::MuonTrackLinksCollection::const_iterator links = linksCollection->begin();
82  links != linksCollection->end(); ++links){
83 
84  // some temporary print-out
85  LogTrace(metname) << "trackerTrack";
86  printTrackRecHits(*(links->trackerTrack()),trackingGeometry);
87  LogTrace(metname) << "standAloneTrack";
88  printTrackRecHits(*(links->standAloneTrack()),trackingGeometry);
89  LogTrace(metname) << "globalTrack";
90  printTrackRecHits(*(links->globalTrack()),trackingGeometry);
91 
92  // Fill the muon
94  muon.setStandAlone(links->standAloneTrack());
95  muon.setTrack(links->trackerTrack());
96  muon.setCombined(links->globalTrack());
97 
98  // FIXME: can this break in case combined info cannot be added to some tracks?
99  muon.setCharge(links->globalTrack()->charge());
100 
101  //FIXME: E = sqrt(p^2 + m^2), where m == 0.105658369(9)GeV
102  double energy = sqrt(links->globalTrack()->p() * links->globalTrack()->p() + 0.011163691);
103  math::XYZTLorentzVector p4(links->globalTrack()->px(),
104  links->globalTrack()->py(),
105  links->globalTrack()->pz(),
106  energy);
107 
108  muon.setP4(p4);
109  muon.setVertex(links->globalTrack()->vertex());
110 
111  muonCollection->push_back(muon);
112 
113  }
114 
115  event.put(std::move(muonCollection));
116 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::MuonTrackLinksCollection > trackLinkToken_
GlobalMuonToMuonProducer(const edm::ParameterSet &)
Constructor.
unsigned short lost() const
Number of lost (=invalid) hits on track.
Definition: Track.h:199
T perp() const
Definition: PV3DBase.h:72
~GlobalMuonToMuonProducer() override
Destructor.
const std::string metname
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:54
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
void setVertex(const Point &vertex) override
set vertex
void setCharge(Charge q) final
set electric charge
Definition: LeafCandidate.h:93
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
virtual void setStandAlone(const TrackRef &t)
void setAlias(std::string alias)
virtual void setCombined(const TrackRef &t)
T sqrt(T t)
Definition: SSEVec.h:18
double p4[4]
Definition: TauolaWrapper.h:92
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:104
#define LogTrace(id)
void printTrackRecHits(const reco::Track &track, edm::ESHandle< GlobalTrackingGeometry > trackingGeometry) const
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
reconstruct muons
const T & get() const
Definition: EventSetup.h:58
virtual void setTrack(const TrackRef &t)
unsigned short found() const
Number of valid hits on track.
Definition: Track.h:194
const GeomDet * idToDet(DetId) const override
const PositionType & position() const
void setP4(const LorentzVector &p4) final
set 4-momentum
def move(src, dest)
Definition: eostools.py:510
Definition: event.py:1
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:109