73 enable_sanity_checks_(
config.getUntrackedParameter<
bool>(
"sanity_checks")),
74 inv_mass_checks_(
config.getUntrackedParameter<
bool>(
"inv_mass_checks")),
92 token2_(collection1Cuts_.
tag() == collection2Cuts_.
tag()
95 token3_(collection1Cuts_.
tag() == collection3Cuts_.
tag()
97 : (collection2Cuts_.
tag() == collection3Cuts_.
tag()
100 token4_(collection1Cuts_.
tag() == collection4Cuts_.
tag()
102 : (collection2Cuts_.
tag() == collection4Cuts_.
tag()
104 : (collection3Cuts_.
tag() == collection4Cuts_.
tag()
124 produces<InvariantMassErrorCollection>();
153 desc.addUntracked<
bool>(
"sanity_checks",
false);
154 desc.addUntracked<
bool>(
"inv_mass_checks",
false);
196 L1GTCorrelationalCut::fillLUTDescriptions(
desc);
208 bool condition_result =
false;
210 std::set<std::size_t> triggeredIdcs1;
211 std::set<std::size_t> triggeredIdcs2;
212 std::set<std::size_t> triggeredIdcs3;
213 std::set<std::size_t> triggeredIdcs4;
217 for (std::size_t idx1 = 0; idx1 < col1->size(); ++idx1) {
221 for (std::size_t idx2 = 0; idx2 < col2->size(); ++idx2) {
225 for (std::size_t idx3 = 0; idx3 < col3->size(); ++idx3) {
229 for (std::size_t idx4 = 0; idx4 < col4->size(); ++idx4) {
255 bool pass = single1Pass & single2Pass & single3Pass;
270 condition_result |= pass;
273 triggeredIdcs1.emplace(idx1);
276 triggeredIdcs2.emplace(idx2);
278 triggeredIdcs1.emplace(idx2);
282 triggeredIdcs3.emplace(idx3);
284 triggeredIdcs1.emplace(idx3);
286 triggeredIdcs2.emplace(idx3);
291 triggeredIdcs4.emplace(idx4);
293 triggeredIdcs1.emplace(idx4);
295 triggeredIdcs2.emplace(idx4);
297 triggeredIdcs3.emplace(idx4);
310 if (condition_result) {
311 std::unique_ptr<P2GTCandidateVectorRef> triggerCol1 = std::make_unique<P2GTCandidateVectorRef>();
313 for (std::size_t
idx : triggeredIdcs1) {
319 std::unique_ptr<P2GTCandidateVectorRef> triggerCol2 = std::make_unique<P2GTCandidateVectorRef>();
321 for (std::size_t
idx : triggeredIdcs2) {
328 std::unique_ptr<P2GTCandidateVectorRef> triggerCol3 = std::make_unique<P2GTCandidateVectorRef>();
330 for (std::size_t
idx : triggeredIdcs3) {
337 std::unique_ptr<P2GTCandidateVectorRef> triggerCol4 = std::make_unique<P2GTCandidateVectorRef>();
339 for (std::size_t
idx : triggeredIdcs4) {
347 event.put(std::make_unique<InvariantMassErrorCollection>(
std::move(massErrors)),
"");
350 return condition_result;
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
const L1GTSingleCollectionCut collection2Cuts_
bool checkObject(const P2GTCandidate &obj) const
const bool enable_sanity_checks_
std::vector< P2GTCandidate > P2GTCandidateCollection
const edm::EDGetTokenT< P2GTCandidateCollection > token4_
T const * product() const
const edm::InputTag & tag() const
edm::Ref< P2GTCandidateCollection > P2GTCandidateRef
const L1GTCorrelationalCut correl23Cuts_
bool checkPrimaryVertices(const P2GTCandidate &obj, const P2GTCandidateCollection &primVertCol) const
const L1GTCorrelationalCut correl24Cuts_
const edm::EDGetTokenT< P2GTCandidateCollection > token1_
std::vector< InvariantMassError > InvariantMassErrorCollection
bool checkObjects(const P2GTCandidate &obj1, const P2GTCandidate &obj2, InvariantMassErrorCollection &massErrors) const
const L1GT3BodyCut correl123Cuts_
L1GTQuadObjectCond(const edm::ParameterSet &)
bool filter(edm::StreamID, edm::Event &, edm::EventSetup const &) const override
bool checkCollection(const P2GTCandidateCollection &col) const
const edm::EDGetTokenT< P2GTCandidateCollection > primVertToken_
#define DEFINE_FWK_MODULE(type)
const edm::EDGetTokenT< P2GTCandidateCollection > token3_
const L1GTSingleCollectionCut collection3Cuts_
const L1GTSingleCollectionCut collection1Cuts_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void fillPSetDescription(edm::ParameterSetDescription &desc)
const L1GTCorrelationalCut correl12Cuts_
const L1GT3BodyCut correl134Cuts_
const L1GT3BodyCut correl234Cuts_
static void fillDescriptions(edm::ConfigurationDescriptions &)
const L1GTCorrelationalCut correl13Cuts_
const L1GTCorrelationalCut correl14Cuts_
const edm::EDGetTokenT< P2GTCandidateCollection > token2_
bool checkObjects(const P2GTCandidate &obj1, const P2GTCandidate &obj2, const P2GTCandidate &obj3, InvariantMassErrorCollection &massErrors) const
const bool inv_mass_checks_
const L1GT3BodyCut correl124Cuts_
const L1GTSingleCollectionCut collection4Cuts_
const L1GTCorrelationalCut correl34Cuts_