CMS 3D CMS Logo

Functions
CandidateSimMuonMatcher.cc File Reference
#include "L1Trigger/L1TMuonOverlapPhase1/interface/Tools/CandidateSimMuonMatcher.h"
#include "L1Trigger/L1TMuon/interface/MicroGMTConfiguration.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "DataFormats/GeometrySurface/interface/BoundCylinder.h"
#include "DataFormats/GeometrySurface/interface/SimpleCylinderBounds.h"
#include "DataFormats/GeometrySurface/interface/BoundDisk.h"
#include "DataFormats/GeometrySurface/interface/SimpleDiskBounds.h"
#include "DataFormats/MuonDetId/interface/RPCDetId.h"
#include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h"
#include "TFile.h"
#include "TH1D.h"

Go to the source code of this file.

Functions

double foldPhi (double phi)
 
double hwGmtPhiToGlobalPhi (int phi)
 
float normal_pdf (float x, float m, float s)
 
bool simTrackIsMuonInOmtf (const SimTrack &simTrack)
 
bool simTrackIsMuonInOmtfBx0 (const SimTrack &simTrack)
 
bool trackingParticleIsMuonInOmtfBx0 (const TrackingParticle &trackingParticle)
 
bool trackingParticleIsMuonInOmtfEvent0 (const TrackingParticle &trackingParticle)
 

Function Documentation

◆ foldPhi()

double foldPhi ( double  phi)

Definition at line 33 of file CandidateSimMuonMatcher.cc.

References M_PI, and PVValHelper::phi.

Referenced by CandidateSimMuonMatcher::match().

33  {
34  if (phi > M_PI)
35  return (phi - 2 * M_PI);
36  else if (phi < -M_PI)
37  return (phi + 2 * M_PI);
38 
39  return phi;
40 }
#define M_PI

◆ hwGmtPhiToGlobalPhi()

double hwGmtPhiToGlobalPhi ( int  phi)

Definition at line 28 of file CandidateSimMuonMatcher.cc.

References M_PI, and PVValHelper::phi.

Referenced by CandidateSimMuonMatcher::ghostBust(), and CandidateSimMuonMatcher::match().

28  {
29  double phiGmtUnit = 2. * M_PI / 576.;
30  return phi * phiGmtUnit;
31 }
#define M_PI

◆ normal_pdf()

float normal_pdf ( float  x,
float  m,
float  s 
)

Definition at line 342 of file CandidateSimMuonMatcher.cc.

References a, JetChargeProducer_cfi::exp, visualization-live-secondInstance_cfg::m, alignCSCRings::s, and x.

Referenced by CandidateSimMuonMatcher::match().

342  {
343  static const float inv_sqrt_2pi = 0.3989422804014327;
344  float a = (x - m) / s;
345 
346  return inv_sqrt_2pi / s * std::exp(-0.5 * a * a);
347 }
double a
Definition: hdecay.h:121
float x

◆ simTrackIsMuonInOmtf()

bool simTrackIsMuonInOmtf ( const SimTrack simTrack)

Definition at line 87 of file CandidateSimMuonMatcher.cc.

References funct::abs(), LogTrace, and cscDigiValidation_cfi::simTrack.

Referenced by simTrackIsMuonInOmtfBx0().

87  {
88  if (abs(simTrack.type()) == 13 || abs(simTrack.type()) == 1000015) { //|| tpPtr->pt() > 20 //todo 1000015 is stau
89  //only muons
90  } else
91  return false;
92 
93  //in the overlap, the propagation of muons with pt less then ~3.2 fails - the actual threshold depends slightly on eta,
94  if (simTrack.momentum().pt() < 2.5)
95  return false;
96 
97  LogTrace("l1tOmtfEventPrint") << "simTrackIsMuonInOmtf, simTrack type " << std::setw(3) << simTrack.type() << " pt "
98  << std::setw(9) << simTrack.momentum().pt() << " eta " << std::setw(9)
99  << simTrack.momentum().eta() << " phi " << std::setw(9) << simTrack.momentum().phi()
100  << std::endl;
101 
102  //higher margin for matching must be used than actual OMTF region (i.e. 0.82 - 1.24),
103  //otherwise many candidates are marked as ghosts
104  //if( (fabs(simTrack.momentum().eta()) >= 0.82 ) && (fabs(simTrack.momentum().eta()) <= 1.24) ) {
105  if ((fabs(simTrack.momentum().eta()) >= 0.72) && (fabs(simTrack.momentum().eta()) <= 1.3)) {
106  } else
107  return false;
108 
109  return true;
110 }
#define LogTrace(id)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22

◆ simTrackIsMuonInOmtfBx0()

bool simTrackIsMuonInOmtfBx0 ( const SimTrack simTrack)

Definition at line 112 of file CandidateSimMuonMatcher.cc.

References cscDigiValidation_cfi::simTrack, and simTrackIsMuonInOmtf().

Referenced by CandidateSimMuonMatcher::observeEventEnd().

112  {
113  if (simTrack.eventId().bunchCrossing() != 0)
114  return false;
115 
117 }
bool simTrackIsMuonInOmtf(const SimTrack &simTrack)

◆ trackingParticleIsMuonInOmtfBx0()

bool trackingParticleIsMuonInOmtfBx0 ( const TrackingParticle trackingParticle)

Definition at line 119 of file CandidateSimMuonMatcher.cc.

References funct::abs(), EncodedEventId::bunchCrossing(), EncodedEventId::event(), TrackingParticle::eventId(), TrackingParticle::g4Tracks(), edm::Ref< C, T, F >::isNonnull(), LogTrace, TrackingParticle::momentum(), TrackingParticle::parentVertex(), TrackingParticle::pdgId(), and TrackingParticle::pt().

Referenced by CandidateSimMuonMatcher::observeEventEnd(), and trackingParticleIsMuonInOmtfEvent0().

119  {
120  /*if(trackingParticle.eventId().event() != 0)
121  LogTrace("l1tOmtfEventPrint") <<"trackingParticleIsMuonInOmtfBx0, pdgId "<<std::setw(3)<<trackingParticle.pdgId()<<" pt "<<std::setw(9)<<trackingParticle.pt()
122  <<" eta "<<std::setw(9)<<trackingParticle.momentum().eta()<<" phi "<<std::setw(9)<<trackingParticle.momentum().phi()<<" event "<<trackingParticle.eventId().event()
123  <<" bx "<<trackingParticle.eventId().bunchCrossing()<<" eventNot0"<<std::endl;*/
124 
125  if (trackingParticle.eventId().bunchCrossing() != 0)
126  return false;
127 
128  if (abs(trackingParticle.pdgId()) == 13 || abs(trackingParticle.pdgId()) == 1000015) {
129  // 1000015 is stau, todo use other selection if needed
130  //only muons
131  } else
132  return false;
133 
134  //in the overlap, the propagation of muons with pt less then ~3.2 fails, the actual threshold depends slightly on eta,
135  if (trackingParticle.pt() < 2.5)
136  return false;
137 
138  if (trackingParticle.parentVertex().isNonnull())
139  LogTrace("l1tOmtfEventPrint") << "trackingParticleIsMuonInOmtfBx0, pdgId " << std::setw(3)
140  << trackingParticle.pdgId() << " pt " << std::setw(9) << trackingParticle.pt()
141  << " eta " << std::setw(9) << trackingParticle.momentum().eta() << " phi "
142  << std::setw(9) << trackingParticle.momentum().phi() << " event "
143  << trackingParticle.eventId().event() << " trackId "
144  << trackingParticle.g4Tracks().at(0).trackId() << " parentVertex Rho "
145  << trackingParticle.parentVertex()->position().Rho() << " eta "
146  << trackingParticle.parentVertex()->position().eta() << " phi "
147  << trackingParticle.parentVertex()->position().phi() << std::endl;
148  else
149  LogTrace("l1tOmtfEventPrint") << "trackingParticleIsMuonInOmtfBx0, pdgId " << std::setw(3)
150  << trackingParticle.pdgId() << " pt " << std::setw(9) << trackingParticle.pt()
151  << " eta " << std::setw(9) << trackingParticle.momentum().eta() << " phi "
152  << std::setw(9) << trackingParticle.momentum().phi() << " trackId "
153  << trackingParticle.g4Tracks().at(0).trackId();
154 
155  //higher margin for matching must be used than actual OMTF region (i.e. 0.82 - 1.24),
156  //otherwise many candidates are marked as ghosts
157  //if( (fabs(simTrack.momentum().eta()) >= 0.82 ) && (fabs(trackingParticle.momentum().eta()) <= 1.24) ) {
158  if ((fabs(trackingParticle.momentum().eta()) >= 0.72) && (fabs(trackingParticle.momentum().eta()) <= 1.3)) {
159  } else
160  return false;
161 
162  return true;
163 }
int pdgId() const
PDG ID.
EncodedEventId eventId() const
Signal source, crossing number.
Vector momentum() const
spatial momentum vector
int event() const
get the contents of the subdetector field (should be protected?)
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
const std::vector< SimTrack > & g4Tracks() const
#define LogTrace(id)
int bunchCrossing() const
get the detector field from this detid
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const TrackingVertexRef & parentVertex() const
double pt() const
Transverse momentum. Note this is taken from the first SimTrack only.

◆ trackingParticleIsMuonInOmtfEvent0()

bool trackingParticleIsMuonInOmtfEvent0 ( const TrackingParticle trackingParticle)

Definition at line 165 of file CandidateSimMuonMatcher.cc.

References EncodedEventId::event(), TrackingParticle::eventId(), and trackingParticleIsMuonInOmtfBx0().

165  {
166  if (trackingParticle.eventId().event() != 0)
167  return false;
168 
169  return trackingParticleIsMuonInOmtfBx0(trackingParticle);
170 }
EncodedEventId eventId() const
Signal source, crossing number.
int event() const
get the contents of the subdetector field (should be protected?)
bool trackingParticleIsMuonInOmtfBx0(const TrackingParticle &trackingParticle)