20 mInputJet1Collection (iConfig.getParameter<edm::
InputTag> (
"src_Jet1")),
21 mInputJet2Collection (iConfig.getParameter<edm::
InputTag> (
"src_Jet2")),
22 JetType1 (iConfig.getUntrackedParameter<std::
string>(
"Jet1")),
23 JetType2 (iConfig.getUntrackedParameter<std::
string>(
"Jet2")),
24 mRecoJetPtThreshold (iConfig.getParameter<double> (
"recoJetPtThreshold")),
25 mRecoDelRMatch (iConfig.getParameter<double> (
"recoDelRMatch")),
26 mRecoJetEtaCut (iConfig.getParameter<double> (
"recoJetEtaCut"))
118 LogInfo(
"OutputInfo") <<
" Histograms will NOT be saved";
162 std::vector<Jet> recoJet1;
164 std::vector<Jet> recoJet2;
175 for (
unsigned ijet=0; ijet<caloJet1->size(); ++ijet) recoJet1.push_back((*caloJet1)[ijet]);
179 for (
unsigned ijet=0; ijet<caloJet1->size(); ++ijet) recoJet1.push_back((*caloJet1)[ijet]);
183 for (
unsigned ijet=0; ijet<pfJets->size(); ++ijet) recoJet1.push_back((*pfJets)[ijet]);
187 for (
unsigned ijet=0; ijet<basicJets->size(); ++ijet) recoJet1.push_back((*basicJets)[ijet]);
192 for (
unsigned ijet=0; ijet<caloJet2->size(); ++ijet) recoJet2.push_back((*caloJet2)[ijet]);
196 for (
unsigned ijet=0; ijet<caloJet2->size(); ++ijet) recoJet2.push_back((*caloJet2)[ijet]);
200 for (
unsigned ijet=0; ijet<pfJets->size(); ++ijet) recoJet2.push_back((*pfJets)[ijet]);
204 for (
unsigned ijet=0; ijet<basicJets->size(); ++ijet) recoJet2.push_back((*basicJets)[ijet]);
209 Int_t Jet1_nref = recoJet1.size();
210 Int_t Jet2_nref = recoJet2.size();
215 std::vector <MyJet> vJet1, vJet2;
216 std::vector <int> Jet1_ID(Jet1_nref), Jet2_ID(Jet2_nref);
218 if(Jet1_nref == 0 || Jet2_nref == 0)
return;
220 for(
unsigned ijet1 = 0; ijet1 < recoJet1.size(); ++ijet1){
227 JET1.
eta = recoJet1[ijet1].eta();
228 JET1.
phi = recoJet1[ijet1].phi();
229 JET1.
pt = recoJet1[ijet1].pt();
232 vJet1.push_back(JET1);
237 for(
unsigned ijet2 = 0; ijet2 < recoJet2.size(); ++ijet2){
243 JET2.
eta = recoJet1[ijet2].eta();
244 JET2.
phi = recoJet1[ijet2].phi();
245 JET2.
pt = recoJet1[ijet2].pt();
248 vJet2.push_back(JET2);
253 bool onlyJet1 = (jet1>0 && jet2==0) ?
true :
false;
254 bool onlyJet2 = (jet1==0 && jet2 >0) ?
true :
false;
255 bool bothJet1Jet2 = (jet1>0 && jet2 >0) ?
true :
false;
258 int unmatchedJet1 = 0;
259 int unmatchedJet2 = 0;
261 std::vector < MyJet >::const_iterator iJet, jJet;
265 for(iJet = vJet1.begin(); iJet != vJet1.end(); ++iJet){
275 for(iJet = vJet2.begin(); iJet != vJet2.end(); ++iJet){
282 }
else if (bothJet1Jet2){
286 for(iJet = vJet1.begin(); iJet != vJet1.end(); ++iJet){
287 for(jJet = vJet2.begin(); jJet != vJet2.end(); ++jJet){
288 mABMatchedJets.insert(std::make_pair(*iJet, *jJet));
294 for(itr = mABMatchedJets.begin(); itr != mABMatchedJets.end(); ++itr){
297 MyJet Aj = jetpair.first;
298 MyJet Bj = jetpair.second;
320 for(itr = mABMatchedJets.begin(); itr != mABMatchedJets.end(); ++itr){
324 MyJet Aj = jetpair.first;
325 MyJet Bj = jetpair.second;
327 if(Jet1_ID[Aj.
id] == 0) {
335 + (*caloJet1)[Aj.
id].hadEnergyInHB()
336 + (*caloJet1)[Aj.
id].hadEnergyInHF()
337 + (*caloJet1)[Aj.
id].hadEnergyInHE()
340 + (*caloJet1)[Aj.
id].emEnergyInEE()
341 + (*caloJet1)[Aj.
id].emEnergyInHF()
355 if(Jet2_ID[Bj.
id] == 0) {
362 + (*caloJet2)[Bj.
id].hadEnergyInHB()
363 + (*caloJet2)[Bj.
id].hadEnergyInHF()
364 + (*caloJet2)[Bj.
id].hadEnergyInHE()
367 + (*caloJet2)[Bj.
id].emEnergyInEE()
368 + (*caloJet2)[Bj.
id].emEnergyInHF()
MonitorElement * mNeutralEmEnergy_Jet2_unmatched
MonitorElement * mpT_Jet2_unmatched
MonitorElement * mNeutralEmEnergy_Jet1_unmatched
edm::EDGetTokenT< reco::PFJetCollection > pfJetsToken_
MonitorElement * mpT_Jet1_matched
MonitorElement * mpT_ratio_Jet1Jet2
std::multiset< ABJetPair, CompareMatchedJets > ABMatchedJets
MonitorElement * mEmEnergy_Jet1_unmatched
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * mHadEnergy_Jet1_unmatched
MonitorElement * mChargedEmEnergy_Jet1_unmatched
MonitorElement * mChargedMuEnergy_Jet1_unmatched
MonitorElement * mpT_Jet2_matched
edm::InputTag mInputJet1Collection
MonitorElement * mNeutralHadronEnergy_Jet1_unmatched
void analyze(const edm::Event &, const edm::EventSetup &) override
virtual ~JetAnalyzer_HeavyIons_matching()
MonitorElement * mChargedHadronEnergy_Jet1_unmatched
edm::InputTag mInputJet2Collection
double mRecoJetPtThreshold
MonitorElement * book1D(Args &&...args)
MonitorElement * mChargedMuEnergy_Jet2_unmatched
MonitorElement * mHadEnergy_Jet2_unmatched
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
void setCurrentFolder(const std::string &fullpath)
edm::EDGetTokenT< reco::CaloJetCollection > caloJet1Token_
static float deltaRR(float eta1, float phi1, float eta2, float phi2)
MonitorElement * mChargedHadronEnergy_Jet2_unmatched
MonitorElement * mpT_Jet1_unmatched
JetAnalyzer_HeavyIons_matching(const edm::ParameterSet &)
MonitorElement * mNeutralHadronEnergy_Jet2_unmatched
std::pair< MyJet, MyJet > ABJetPair
std::multiset< ABJetPair >::iterator ABItr
edm::EDGetTokenT< reco::CaloJetCollection > caloJet2Token_
MonitorElement * mChargedEmEnergy_Jet2_unmatched
MonitorElement * mEmEnergy_Jet2_unmatched
edm::EDGetTokenT< reco::BasicJetCollection > basicJetsToken_