15 embeddedMuonBestTrack_(
false),
16 embeddedTunePMuonBestTrack_(
false),
17 embeddedTrack_(
false),
18 embeddedStandAloneMuon_(
false),
19 embeddedCombinedMuon_(
false),
20 embeddedTCMETMuonCorrs_(
false),
21 embeddedCaloMETMuonCorrs_(
false),
22 embeddedPickyMuon_(
false),
23 embeddedTpfmsMuon_(
false),
24 embeddedDytMuon_(
false),
25 embeddedPFCandidate_(
false),
27 cachedNormChi2_(
false),
29 cachedNumberOfValidHits_(
false),
30 numberOfValidHits_(0),
39 initImpactParameters();
46 embeddedMuonBestTrack_(
false),
47 embeddedTunePMuonBestTrack_(
false),
48 embeddedTrack_(
false),
49 embeddedStandAloneMuon_(
false),
50 embeddedCombinedMuon_(
false),
51 embeddedTCMETMuonCorrs_(
false),
52 embeddedCaloMETMuonCorrs_(
false),
53 embeddedPickyMuon_(
false),
54 embeddedTpfmsMuon_(
false),
55 embeddedDytMuon_(
false),
56 embeddedPFCandidate_(
false),
58 cachedNormChi2_(
false),
60 cachedNumberOfValidHits_(
false),
61 numberOfValidHits_(0),
70 initImpactParameters();
77 embeddedMuonBestTrack_(
false),
78 embeddedTunePMuonBestTrack_(
false),
79 embeddedTrack_(
false),
80 embeddedStandAloneMuon_(
false),
81 embeddedCombinedMuon_(
false),
82 embeddedTCMETMuonCorrs_(
false),
83 embeddedCaloMETMuonCorrs_(
false),
84 embeddedPickyMuon_(
false),
85 embeddedTpfmsMuon_(
false),
86 embeddedDytMuon_(
false),
87 embeddedPFCandidate_(
false),
89 cachedNormChi2_(
false),
91 cachedNumberOfValidHits_(
false),
92 numberOfValidHits_(0),
101 initImpactParameters();
108 embeddedMuonBestTrack_(
false),
109 embeddedTunePMuonBestTrack_(
false),
110 embeddedTrack_(
false),
111 embeddedStandAloneMuon_(
false),
112 embeddedCombinedMuon_(
false),
113 embeddedTCMETMuonCorrs_(
false),
114 embeddedCaloMETMuonCorrs_(
false),
115 embeddedPickyMuon_(
false),
116 embeddedTpfmsMuon_(
false),
117 embeddedDytMuon_(
false),
118 embeddedPFCandidate_(
false),
120 cachedNormChi2_(
false),
122 cachedNumberOfValidHits_(
false),
123 numberOfValidHits_(0),
132 initImpactParameters();
143 out <<
"\tpat::Muon: ";
144 out << std::setiosflags(std::ios::right);
146 out << std::setprecision(3);
147 out <<
" E/pT/eta/phi " <<
obj.energy() <<
"/" <<
obj.pt() <<
"/" <<
obj.eta() <<
"/" <<
obj.phi();
152 void Muon::initImpactParameters() {
159 void Muon::initSimInfo() {
163 simHeaviestMotherFlavour_ = 0;
173 simMatchQuality_ = 0.0;
178 if (embeddedTrack_) {
187 if (embeddedStandAloneMuon_) {
196 if (embeddedCombinedMuon_) {
205 if (embeddedPickyMuon_) {
214 if (embeddedTpfmsMuon_) {
223 if (embeddedDytMuon_) {
232 if (!muonBestTrack_.empty()) {
241 if (!tunePMuonBestTrack_.empty()) {
243 }
else if (muonBestTrackType() == tunePMuonBestTrackType()) {
244 return muonBestTrack();
252 if (embeddedPFCandidate_) {
255 return pfCandidateRef_;
261 if (pfCandidateRef_.isNonnull() &&
i == 0)
263 if (refToOrig_.isNonnull() && pfCandidateRef_.isNonnull() &&
i == 1)
265 if (refToOrig_.isNonnull() && !pfCandidateRef_.isNonnull() &&
i == 0)
272 muonBestTrack_.clear();
273 embeddedMuonBestTrack_ =
false;
274 bool alreadyEmbedded =
false;
276 switch (muonBestTrackType()) {
278 alreadyEmbedded =
true;
282 alreadyEmbedded =
true;
285 if (embeddedStandAloneMuon_)
286 alreadyEmbedded =
true;
289 if (embeddedCombinedMuon_)
290 alreadyEmbedded =
true;
293 if (embeddedTpfmsMuon_)
294 alreadyEmbedded =
true;
297 if (embeddedPickyMuon_)
298 alreadyEmbedded =
true;
301 if (embeddedDytMuon_)
302 alreadyEmbedded =
true;
306 if (
force || !alreadyEmbedded) {
308 embeddedMuonBestTrack_ =
true;
314 tunePMuonBestTrack_.clear();
315 bool alreadyEmbedded =
false;
316 embeddedTunePMuonBestTrack_ =
false;
318 switch (tunePMuonBestTrackType()) {
320 alreadyEmbedded =
true;
324 alreadyEmbedded =
true;
327 if (embeddedStandAloneMuon_)
328 alreadyEmbedded =
true;
331 if (embeddedCombinedMuon_)
332 alreadyEmbedded =
true;
335 if (embeddedTpfmsMuon_)
336 alreadyEmbedded =
true;
339 if (embeddedPickyMuon_)
340 alreadyEmbedded =
true;
343 if (embeddedDytMuon_)
344 alreadyEmbedded =
true;
347 if (muonBestTrackType() == tunePMuonBestTrackType()) {
348 if (embeddedMuonBestTrack_)
349 alreadyEmbedded =
true;
352 if (
force || !alreadyEmbedded) {
354 embeddedTunePMuonBestTrack_ =
true;
363 embeddedTrack_ =
true;
369 standAloneMuon_.clear();
372 embeddedStandAloneMuon_ =
true;
378 combinedMuon_.clear();
381 embeddedCombinedMuon_ =
true;
389 for (
auto const&
assoc : assocs) {
390 if (!
assoc->contains(trackExtra.
id())) {
395 trackExtra = trackExtraOut;
398 track.setExtra(trackExtra);
429 caloMETMuonCorrs_.clear();
430 caloMETMuonCorrs_.push_back(
t);
431 embeddedCaloMETMuonCorrs_ =
true;
436 tcMETMuonCorrs_.clear();
437 tcMETMuonCorrs_.push_back(
t);
438 embeddedTCMETMuonCorrs_ =
true;
446 pickyMuon_.push_back(*tk);
447 embeddedPickyMuon_ =
true;
456 tpfmsMuon_.push_back(*tk);
457 embeddedTpfmsMuon_ =
true;
466 dytMuon_.push_back(*tk);
467 embeddedDytMuon_ =
true;
473 inverseBeta_ =
t.inverseBeta();
474 inverseBetaErr_ =
t.inverseBetaErr();
480 if (pfCandidateRef_.isAvailable() && pfCandidateRef_.isNonnull()) {
482 embeddedPFCandidate_ =
true;
495 double Muon::normChi2()
const {
496 if (cachedNormChi2_) {
500 return t->chi2() /
t->ndof();
509 if (cachedNumberOfValidHits_) {
510 return numberOfValidHits_;
513 return t->numberOfValidHits();
519 double Muon::dB(IpType type_)
const {
521 if (cachedIP_ & (1 <<
int(type_))) {
530 double Muon::edB(IpType type_)
const {
532 if (cachedIP_ & (1 <<
int(type_))) {