49 const unsigned& NumNeutralParticles,
57 const unsigned& NumNeutralParticles,
204 float met = pfmet.
pt();
209 std::vector<reco::PFJet>
jets;
210 std::vector<reco::PFJet> htjets;
211 if (jetHandle->size() <
njets_)
213 for (
auto const&
j : *jetHandle) {
216 double abseta =
abs(
j.eta());
217 double NHF =
j.neutralHadronEnergyFraction();
218 double NEMF =
j.neutralEmEnergyFraction();
219 double CHF =
j.chargedHadronEnergyFraction();
220 double CEMF =
j.chargedEmEnergyFraction();
221 unsigned NumNeutralParticles =
j.neutralMultiplicity();
222 unsigned CHM =
j.chargedMultiplicity();
223 bool passId = (
jetId_ ==
"loose" &&
looseJetId(abseta,
NHF, NEMF,
CHF, CEMF, NumNeutralParticles, CHM)) ||
238 std::vector<reco::GsfElectron>
electrons;
241 for (
auto const&
e : *eleHandle) {
250 if (muoHandle->size() <
nmuons_)
252 std::vector<reco::Muon>
muons;
253 for (
auto const&
m : *muoHandle) {
264 std::vector<reco::Photon>
photons;
265 for (
auto const&
m : *phoHandle) {
272 std::vector<TLorentzVector> passedMesons;
277 TLorentzVector
t1,
t2;
278 float hadronMassHyp[2] = {0.1396, 0.4937};
279 float loMassLim[2] = {0.5, 0.9};
280 float hiMassLim[2] = {1.0, 1.11};
282 for (
size_t i = 0;
i < trkHandle->size(); ++
i) {
286 for (
size_t j =
i + 1;
j < trkHandle->size(); ++
j) {
293 for (
unsigned hyp = 0; hyp < 2; ++hyp) {
294 t1.SetPtEtaPhiM(trk1.
pt(), trk1.
eta(), trk1.
phi(), hadronMassHyp[hyp]);
295 t2.SetPtEtaPhiM(trk2.
pt(), trk2.
eta(), trk2.
phi(), hadronMassHyp[hyp]);
296 TLorentzVector mesCand =
t1 +
t2;
299 if (mesCand.M() < loMassLim[hyp] || mesCand.M() > hiMassLim[hyp])
301 if (mesCand.Pt() < 35. || fabs(mesCand.Rapidity()) > 2.1)
306 for (
size_t k = 0;
k < trkHandle->size(); ++
k) {
307 if (
k ==
i ||
k ==
j)
310 if (trkN.
charge() == 0 || trkN.
pt() < 0.5 || (trkN.
dz() > 0.1) ||
311 deltaR(trkN.
eta(), trkN.
phi(), mesCand.Eta(), mesCand.Phi()) > 0.5)
315 if (
absIso / mesCand.Pt() > 0.2)
317 passedMesons.push_back(mesCand);
326 int ls =
iEvent.id().luminosityBlock();
343 const unsigned& NumNeutralParticles,
344 const unsigned& CHM) {
346 unsigned NumConst = CHM + NumNeutralParticles;
348 return ((NumConst > 1 &&
NHF < 0.99 && NEMF < 0.99) &&
349 ((abseta <= 2.4 && CHF > 0 && CHM > 0 && CEMF < 0.99) || abseta > 2.4));
350 }
else if (abseta <= 3) {
351 return (NumNeutralParticles > 2 && NEMF > 0.01 &&
NHF < 0.98);
353 return NumNeutralParticles > 10 && NEMF < 0.90;
361 const unsigned& NumNeutralParticles,
362 const unsigned& CHM) {
364 unsigned NumConst = CHM + NumNeutralParticles;
365 return (NumConst > 1 &&
NHF < 0.90 && NEMF < 0.90) &&
366 ((abseta <= 2.4 &&
CHF > 0 && CHM > 0 && CEMF < 0.99) || abseta > 2.4);
367 }
else if (abseta <= 3) {
368 return (NHF < 0.98 && NEMF > 0.01 && NumNeutralParticles > 2);
370 return (NEMF < 0.90 && NumNeutralParticles > 10);
377 desc.add<
bool>(
"requireValidHLTPaths",
true);
393 desc.add<
int>(
"njets", 0);
394 desc.add<
int>(
"nelectrons", 0);
395 desc.add<
int>(
"nmuons", 0);
396 desc.add<
int>(
"nphotons", 0);
397 desc.add<
int>(
"nmesons", 0);
404 desc.add<
bool>(
"doMETHistos",
true);
407 desc.add<
bool>(
"doJetHistos",
true);
409 desc.add<
bool>(
"doHTHistos",
true);
411 desc.add<
bool>(
"doHMesonGammaHistos",
true);
416 descriptions.
add(
"objMonitoring",
desc);
void fillHistograms(const double &met, const double &phi, const int &ls, const bool passCond)
edm::EDGetTokenT< reco::TrackCollection > trkToken_
dqm::reco::DQMStore DQMStore
void fillHistograms(const std::vector< reco::PFJet > &jets, const reco::PFMET &pfmet, const int ls, const bool passCond)
void initialise(const edm::ParameterSet &iConfig)
void bookHistograms(DQMStore::IBooker &)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool looseJetId(const double &abseta, const double &NHF, const double &NEMF, const double &CHF, const double &CEMF, const unsigned &NumNeutralParticles, const unsigned &CHM)
double pt() const final
transverse momentum
StringCutObjectSelector< reco::GsfElectron, true > eleSelection_
virtual void setCurrentFolder(std::string const &fullpath)
StringCutObjectSelector< reco::MET, true > metSelection_
#define DEFINE_FWK_MODULE(type)
static void fillJetDescription(edm::ParameterSetDescription &histoPSet)
void fillHistograms(const reco::PhotonCollection &photons, const std::vector< TLorentzVector > &mesons, const int ls, const bool passCond)
void bookHistograms(DQMStore::IBooker &)
static void fillMetDescription(edm::ParameterSetDescription &histoPSet)
std::vector< Track > TrackCollection
collection of Tracks
edm::EDGetTokenT< reco::GsfElectronCollection > eleToken_
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
void initialise(const edm::ParameterSet &iConfig)
const bool requireValidHLTPaths_
bool tightJetId(const double &abseta, const double &NHF, const double &NEMF, const double &CHF, const double &CEMF, const unsigned &NumNeutralParticles, const unsigned &CHM)
denGenericTriggerEventPSet
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
static void fillHmgDescription(edm::ParameterSetDescription &histoPSet)
std::vector< Muon > MuonCollection
collection of Muon objects
const std::string folderName_
StringCutObjectSelector< reco::PFJet, true > jetSelection_
StringCutObjectSelector< reco::Muon, true > muoSelection_
void initialise(const edm::ParameterSet &iConfig)
double pt() const
track transverse momentum
int charge() const
track electric charge
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
edm::EDGetTokenT< reco::PFMETCollection > metToken_
void initialise(const edm::ParameterSet &iConfig)
void bookHistograms(DQMStore::IBooker &)
Abs< T >::type abs(const T &t)
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
double phi() const
azimuthal angle of momentum vector
static void fillHtDescription(edm::ParameterSetDescription &histoPSet)
edm::EDGetTokenT< reco::PhotonCollection > phoToken_
void bookHistograms(DQMStore::IBooker &)
double eta() const
pseudorapidity of momentum vector
auto const & tracks
cannot be loose
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
std::vector< Photon > PhotonCollection
collectin of Photon objects
void add(std::string const &label, ParameterSetDescription const &psetDescription)
dqm::reco::MonitorElement MonitorElement
StringCutObjectSelector< reco::PFJet, true > htjetSelection_
std::vector< PFJet > PFJetCollection
collection of PFJet objects
edm::EDGetTokenT< reco::PFJetCollection > jetToken_
StringCutObjectSelector< reco::Photon, true > phoSelection_
void fillHistograms(const std::vector< reco::PFJet > &htjets, const double &met, const int &ls, const bool passCond)
edm::EDGetTokenT< reco::MuonCollection > muoToken_
double phi() const final
momentum azimuthal angle
ObjMonitor(const edm::ParameterSet &)
static void fillPSetDescription(edm::ParameterSetDescription &desc)
StringCutObjectSelector< reco::Track, true > trkSelection_
numGenericTriggerEventPSet
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override