28 eleBWPToken_(consumes<edm::
ValueMap<float>>(iConfig.getParameter<edm::
InputTag>(
"eleBiasedWP"))),
29 eleUnBWPToken_(consumes<edm::
ValueMap<float>>(iConfig.getParameter<edm::
InputTag>(
"eleUnbiasedWP"))),
37 trigobjectsToken_(consumes<trigger::TriggerEvent>(iConfig.getParameter<edm::
InputTag>(
"triggerobjects"))),
39 HLTFilter_(iConfig.getParameter<
vector<
string>>(
"HLTFilter")),
40 HLTPath_(iConfig.getParameter<
vector<
string>>(
"HLTPath")) {
96 using namespace trigger;
101 if (trigResults.failedToGet())
103 for (
unsigned int ip = 0; ip < HLTPath.size(); ip++) {
104 int N_Triggers = trigResults->size();
106 for (
int i_Trig = 0; i_Trig < N_Triggers; ++i_Trig) {
107 if (!trigResults->accept(i_Trig))
110 if (TrigPath.find(HLTPath[ip]) != std::string::npos)
119 std::vector<string>
Seed) {
122 using namespace reco;
123 using namespace trigger;
129 std::vector<std::array<float, 5>> max_per_trigger;
131 for (
unsigned int ipath = 0; ipath < Seed.size(); ipath++) {
132 std::vector<std::array<float, 5>> tot_tr_obj_pt_eta_phi;
133 if (!triggerObjectsSummary.isValid())
135 size_t filterIndex = (*triggerObjectsSummary).filterIndex(
InputTag(Seed[ipath],
"",
"HLT"));
137 if (filterIndex < (*triggerObjectsSummary).sizeFilters()) {
139 for (
size_t j = 0;
j < keys.size();
j++) {
141 std::array<float, 5> tr_obj_pt_eta_phi;
142 if (fabs(foundObject.
id()) != 13)
144 tr_obj_pt_eta_phi[0] = foundObject.
pt();
145 tr_obj_pt_eta_phi[1] = foundObject.
eta();
146 tr_obj_pt_eta_phi[2] = foundObject.
phi();
147 tr_obj_pt_eta_phi[3] = foundObject.
id() / fabs(foundObject.
id());
148 tot_tr_obj_pt_eta_phi.push_back(tr_obj_pt_eta_phi);
152 if (!tot_tr_obj_pt_eta_phi.empty()) {
153 std::sort(tot_tr_obj_pt_eta_phi.begin(),
154 tot_tr_obj_pt_eta_phi.end(),
155 [](
const std::array<float, 5>&
a,
const std::array<float, 5>&
b) {
return a[0] >
b[0]; });
156 max_per_trigger.push_back(tot_tr_obj_pt_eta_phi.at(0));
161 std::sort(max_per_trigger.begin(),
162 max_per_trigger.end(),
163 [](
const std::array<float, 5>&
a,
const std::array<float, 5>&
b) {
return a[0] >
b[0]; });
164 return max_per_trigger.at(0);
171 using namespace reco;
172 using namespace trigger;
245 bool isFake = vtx.isFake();
255 beam_x = theBeamSpot->x0();
256 beam_y = theBeamSpot->y0();
257 beam_z = theBeamSpot->z0();
272 if (deltaRmu < MuTrgMatchCone && SelectedMu_DR > deltaRmu) {
278 bool tight =
false, soft =
false;
279 if (vertices.isValid()) {
283 const Track* mutrack =
mu.bestTrack();
290 auto muTrack = std::make_shared<reco::Track>(*mutrack);
305 unsigned int count_el = -1;
318 const Track* eltrack = el.bestTrack();
323 auto ElTrack = std::make_shared<reco::Track>(*eltrack);
326 el_pt.push_back(eltrack->pt());
327 el_eta.push_back(eltrack->eta());
328 el_phi.push_back(eltrack->phi());
338 if (!trk.quality(Track::highPurity))
344 if (trk.charge() == 0)
358 auto cleanTrack = std::make_shared<reco::Track>(trk);
369 TLorentzVector vel1, vel2;
370 std::vector<std::shared_ptr<reco::Track>> cleanedObjects;
374 cleanedObjects.push_back(vec);
379 cleanedObjects.push_back(vec);
382 if (cleanedObjects.empty())
385 for (
auto&
obj : cleanedObjects) {
387 unsigned int iobj = &
obj - &cleanedObjects[0];
389 float massLep = 0.0005;
400 vel1.SetPtEtaPhiM(
obj->pt(),
obj->eta(),
obj->phi(), massLep);
404 unsigned int itrk2 = &trk2 - &cleanedTracks[0];
406 if (
obj->charge() * trk2->charge() == 1)
410 vel2.SetPtEtaPhiM(trk2->pt(), trk2->eta(), trk2->phi(), massLep);
427 float InvMassLepLep = (vel1 + vel2).M();
431 std::vector<reco::TransientTrack> tempTracks;
432 tempTracks.reserve(2);
433 tempTracks.push_back(*tranobj);
434 tempTracks.push_back(*trantrk2);
435 LLvertex = theKalmanFitter.
vertex(tempTracks);
436 if (!LLvertex.isValid())
444 GlobalPoint Dispbeamspot(-1 * ((theBeamSpot->x0() - LLvertex.position().x()) +
445 (LLvertex.position().z() - theBeamSpot->z0()) * theBeamSpot->dxdz()),
446 -1 * ((theBeamSpot->y0() - LLvertex.position().y()) +
447 (LLvertex.position().z() - theBeamSpot->z0()) * theBeamSpot->dydz()),
451 float tempCos = vperp.Dot(pperp) / (vperp.R() * pperp.R());
470 float massLep = 0.0005;
473 vel1.SetPtEtaPhiM(objtrk->pt(), objtrk->eta(), objtrk->phi(), massLep);
474 vel2.SetPtEtaPhiM(pairtrk->pt(), pairtrk->eta(), pairtrk->phi(), massLep);
477 if (trk->charge() == objtrk->charge() &&
487 vK.SetPtEtaPhiM(trk->pt(), trk->eta(), trk->phi(), 0.493);
489 float InvMass = (vel1 + vel2 + vK).M();
492 if ((vel1 + vel2 + vK).Pt() <
PtB_Cut)
495 std::vector<reco::TransientTrack> tempTracks;
496 tempTracks.reserve(3);
497 tempTracks.push_back(*tranobj);
498 tempTracks.push_back(*tranpair);
499 tempTracks.push_back(*trantrk);
500 LLvertex = theKalmanFitter.
vertex(tempTracks);
501 if (!LLvertex.isValid())
506 GlobalPoint Dispbeamspot(-1 * ((theBeamSpot->x0() - LLvertex.position().x()) +
507 (LLvertex.position().z() - theBeamSpot->z0()) * theBeamSpot->dxdz()),
508 -1 * ((theBeamSpot->y0() - LLvertex.position().y()) +
509 (LLvertex.position().z() - theBeamSpot->z0()) * theBeamSpot->dydz()),
511 math::XYZVector pperp((vel1 + vel2 + vK).Px(), (vel1 + vel2 + vK).Py(), 0);
513 float tempCos = vperp.Dot(pperp) / (vperp.R() * pperp.R());
std::vector< float > muon_eta
std::vector< std::shared_ptr< reco::Track > > cleanedTracks
std::vector< unsigned int > object_id
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
bool filter(edm::Event &, const edm::EventSetup &) override
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
auto const & tracks
cannot be loose
double TrkObjExclusionCone
edm::EDGetTokenT< edm::TriggerResults > trgresultsToken_
std::vector< std::shared_ptr< reco::Track > > cleanedPairTracks
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
std::vector< unsigned int > Epair_ObjectId
std::vector< string > HLTFilter_
std::vector< unsigned int > Epair_ObjectIndex
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
CachingVertex< 5 > vertex(const std::vector< reco::TransientTrack > &tracks) const override
std::vector< std::shared_ptr< reco::Track > > MuTracks
std::vector< unsigned int > Epair_TrkIndex
Single trigger physics object (e.g., an isolated muon)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool getData(T &iHolder) const
reco::TrackBase::Point vertex_point
std::vector< float > SelectedTrgObj_PtEtaPhiCharge
double eta() const
pseudorapidity of momentum vector
void addDefault(ParameterSetDescription const &psetDescription)
edm::EDGetToken electronsToken_
std::vector< float > el_pt
edm::EDGetTokenT< edm::ValueMap< float > > eleBWPToken_
std::vector< unsigned int > object_container
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > bFieldToken_
double pt() const
track transverse momentum
float ChiSquaredProbability(double chiSquared, double nrDOF)
std::vector< float > el_eta
bool isTightMuonCustom(const reco::Muon &recoMu, const reco::Vertex recoVtx)
std::vector< unsigned int > Trk_container
bool isMediumMuonCustom(const reco::Muon &recoMu)
std::vector< float > muon_medium
bool isSoftMuon(const reco::Muon &, const reco::Vertex &, bool run2016_hip_mitigation=false)
double ElTrgExclusionCone
edm::EDGetTokenT< trigger::TriggerEvent > trigobjectsToken_
bool isNull() const
Checks for null.
std::vector< std::shared_ptr< reco::Track > > cleanedObjTracks
std::vector< std::shared_ptr< reco::Track > > ElTracks
std::vector< float > muon_pt
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
double MuTrgExclusionCone
XYZVectorD XYZVector
spatial vector with cartesian internal representation
std::string const & triggerName(unsigned int index) const
edm::EDGetTokenT< reco::ConversionCollection > conversionsToken_
std::vector< size_type > Keys
T rerr(const GlobalPoint &aPoint) const
std::vector< float > el_phi
T getParameter(std::string const &) const
edm::EDGetToken muonsToken_
~LeptonSkimming() override
std::vector< float > muon_tight
bool hltFired(const edm::Event &iEvent, const edm::EventSetup &iSetup, std::vector< string > HLTPath)
bool ObjPtLargerThanTrack
std::vector< float > muon_soft
edm::EDGetTokenT< edm::ValueMap< float > > eleUnBWPToken_
std::vector< string > HLTPath_
std::vector< float > muon_phi
void beginStream(edm::StreamID) override
std::array< float, 5 > hltObject(const edm::Event &iEvent, const edm::EventSetup &iSetup, std::vector< string > Seed)
LeptonSkimming(const edm::ParameterSet &)
void endStream() override