11 #include "Math/VectorUtil.h" 14 : edmCfg(edmCfg), omtfConfig(omtfConfig), simMuon(nullptr) {}
22 const std::shared_ptr<OMTFinput>&
input,
25 const std::vector<l1t::RegionalMuonCand>& candMuons) {
29 for (
auto& gbCandidate : gbCandidates) {
30 if (gbCandidate->getGoldenPatern() !=
nullptr &&
31 gbCandidate->getGpResultConstr().getFiredLayerCnt() >
omtfCand->getGpResultConstr().getFiredLayerCnt()) {
84 for (std::vector<SimTrack>::const_iterator
it = simTks->begin();
it < simTks->end();
it++) {
86 if (!(aTrack.
type() == 13 || aTrack.
type() == -13))
97 std::vector<const reco::GenParticle*>
muons;
107 float etaCutFrom = 0.8;
108 float etaCutTo = 1.24;
117 muons.push_back(&genPart);
119 LogTrace(
"l1tOmtfEventPrint") << __FUNCTION__ <<
":" << __LINE__ <<
" genParticle: pdgId " << genPart.
pdgId()
120 <<
" px " << genPart.
px() <<
" py " << genPart.
py() <<
" pz " << genPart.
pz()
121 <<
" pt " << genPart.
pt() <<
" vx " << genPart.
vx() <<
" vy " << genPart.
vy()
122 <<
" vz " << genPart.
vz() <<
" eta " << genPart.
momentum().eta() << endl;
124 LogTrace(
"l1tOmtfEventPrint") << __FUNCTION__ <<
":" << __LINE__ <<
" genParticle: pdgId " << genPart.
pdgId()
125 <<
" px " << genPart.
px() / genPart.
p() <<
" py " << genPart.
py() / genPart.
p()
126 <<
" pz " << genPart.
pz() / genPart.
p() <<
" pt " << genPart.
pt() << endl;
T getParameter(std::string const &) const
Vector momentum() const final
spatial momentum vector
double pz() const final
z coordinate of momentum vector
double pt() const final
transverse momentum
double vz() const override
z coordinate of vertex position
AlgoMuons::value_type omtfCand
~EmulationObserverBase() override
EmulationObserverBase(const edm::ParameterSet &edmCfg, const OMTFConfiguration *omtfConfig)
bool exists(std::string const ¶meterName) const
checks if a parameter exists
double vy() const override
y coordinate of vertex position
void observeProcesorEmulation(unsigned int iProcessor, l1t::tftype mtfType, const std::shared_ptr< OMTFinput > &input, const AlgoMuons &algoCandidates, const AlgoMuons &gbCandidates, const std::vector< l1t::RegionalMuonCand > &candMuons) override
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
const math::XYZTLorentzVectorD & momentum() const
static std::string const input
int pdgId() const final
PDG identifier.
int type() const
particle type (HEP PDT convension)
double px() const final
x coordinate of momentum vector
l1t::RegionalMuonCand regionalMuonCand
double p() const final
magnitude of momentum vector
const SimTrack * findSimMuon(const edm::Event &event, const SimTrack *previous=nullptr)
Abs< T >::type abs(const T &t)
void observeEventBegin(const edm::Event &iEvent) override
double py() const final
y coordinate of momentum vector
double vx() const override
x coordinate of vertex position
unsigned int candProcIndx
std::vector< AlgoMuonPtr > AlgoMuons
unsigned int getProcIndx(unsigned int iProcessor, l1t::tftype mtfType) const
input phi should be in the hardware scale (nPhiBins units for 2pi), can be in range -nPhiBins ...
const OMTFConfiguration * omtfConfig
const std::vector< const reco::GenParticle * > findGenMuon(const edm::Event &event)