25 #ifndef RecoTauTag_HLTProducers_L1TJetsMatching_h 26 #define RecoTauTag_HLTProducers_L1TJetsMatching_h 41 #include "Math/GenVector/VectorUtil.h" 74 std::pair<std::vector<T>,std::vector<T>>
categorise(
const std::vector<T>& pfMatchedJets,
double pt1,
double pt2,
double Mjj)
76 std::pair<std::vector<T>,std::vector<T>>
output;
80 if (pfMatchedJets.size()>1){
81 for (
unsigned int i = 0;
i < pfMatchedJets.size()-1;
i++){
83 const T & myJet1 = (pfMatchedJets)[
i];
85 for (
unsigned int j =
i+1; j < pfMatchedJets.size(); j++)
87 const T & myJet2 = (pfMatchedJets)[j];
89 const double mjj_test = (myJet1.p4()+myJet2.p4()).M();
100 const T & myJet1 = (pfMatchedJets)[i1];
101 const T & myJet2 = (pfMatchedJets)[i2];
103 if ((mjj > Mjj) && (myJet1.pt() >=
pt1) && (myJet2.pt() >
pt2) )
106 output.first.push_back(myJet1);
107 output.first.push_back(myJet2);
111 if ((mjj > Mjj) && (myJet1.pt() <
pt1) && (myJet1.pt() >
pt2) && (myJet2.pt() >
pt2))
114 const T & myJetTest = (pfMatchedJets)[0];
115 if (myJetTest.pt()>
pt1){
116 output.second.push_back(myJet1);
117 output.second.push_back(myJet2);
118 output.second.push_back(myJetTest);
128 template<
typename T>
132 pt1Min_ ( iConfig.getParameter<double>(
"pt1Min")),
133 pt2Min_ ( iConfig.getParameter<double>(
"pt2Min")),
134 mjjMin_ ( iConfig.getParameter<double>(
"mjjMin")),
135 matchingR_ ( iConfig.getParameter<double>(
"matchingR")),
138 produces<std::vector<T>>(
"TwoJets");
139 produces<std::vector<T>>(
"ThreeJets");
142 template<
typename T>
145 template<
typename T>
149 unique_ptr<std::vector<T>> pfMatchedJets(
new std::vector<T>);
150 std::pair<std::vector<T>,std::vector<T>>
output;
168 for(
unsigned int iJet = 0; iJet < pfJets->size(); iJet++){
169 const T & myJet = (*pfJets)[iJet];
170 for(
unsigned int iL1Jet = 0; iL1Jet < jetCandRefVec.size(); iL1Jet++){
174 pfMatchedJets->push_back(myJet);
181 unique_ptr<std::vector<T>> output1(
new std::vector<T>(output.first));
182 unique_ptr<std::vector<T>> output2(
new std::vector<T>(output.second));
188 template<
typename T>
194 desc.
add<
double> (
"pt1Min",95.0)->
setComment(
"Minimal pT1 of PFJets to match");
195 desc.
add<
double> (
"pt2Min",35.0)->
setComment(
"Minimal pT2 of PFJets to match");
196 desc.
add<
double> (
"mjjMin",650.0)->
setComment(
"Minimal mjj of matched PFjets");
197 desc.
add<
double> (
"matchingR",0.5)->
setComment(
"dR value used for matching");
198 descriptions.
setComment(
"This module produces collection of PFJetss matched to L1 Taus / Jets passing a HLT filter (Only p4 and vertex of returned PFJetss are set).");
void setComment(std::string const &value)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
L1TJetsMatching(const edm::ParameterSet &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< JetRef > JetVectorRef
std::string defaultModuleLabel()
const edm::EDGetTokenT< std::vector< T > > jetSrc_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
~L1TJetsMatching() override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::pair< std::vector< T >, std::vector< T > > categorise(const std::vector< T > &pfMatchedJets, double pt1, double pt2, double Mjj)
const edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > jetTrigger_
void setComment(std::string const &value)
XYZPointD XYZPoint
point in space with cartesian internal representation
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
void add(std::string const &label, ParameterSetDescription const &psetDescription)
T1 deltaR2(T1 eta1, T2 phi1, T3 eta2, T4 phi2)