diff --git a/Calibration/HcalAlCaRecoProducers/BuildFile.xml b/Calibration/HcalAlCaRecoProducers/BuildFile.xml
index 12bc65939d924..24dedb6428bc6 100644
--- a/Calibration/HcalAlCaRecoProducers/BuildFile.xml
+++ b/Calibration/HcalAlCaRecoProducers/BuildFile.xml
@@ -33,4 +33,6 @@
+
+
diff --git a/Calibration/HcalAlCaRecoProducers/interface/AlCaDiJetsProducer.h b/Calibration/HcalAlCaRecoProducers/interface/AlCaDiJetsProducer.h
deleted file mode 100644
index 8dadf3a06f9f8..0000000000000
--- a/Calibration/HcalAlCaRecoProducers/interface/AlCaDiJetsProducer.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#ifndef AlCaDiJetsProducer_h
-#define AlCaDiJetsProducer_h
-
-
-// -*- C++ -*-
-
-
-// system include files
-#include
-#include
-// user include files
-#include "FWCore/Framework/interface/Frameworkfwd.h"
-#include "FWCore/Framework/interface/EDProducer.h"
-#include "FWCore/Framework/interface/Event.h"
-#include "FWCore/Framework/interface/MakerMacros.h"
-#include "FWCore/ParameterSet/interface/ParameterSet.h"
-#include "FWCore/Framework/interface/ESHandle.h"
-#include "FWCore/Framework/interface/EventSetup.h"
-
-#include "DataFormats/Common/interface/Ref.h"
-#include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
-#include "DataFormats/DetId/interface/DetId.h"
-
-#include "DataFormats/JetReco/interface/CaloJetCollection.h"
-#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
-#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
-
-#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
-
-//
-// class declaration
-//
-namespace edm {
- class ParameterSet;
- class Event;
- class EventSetup;
-}
-
-namespace cms
-{
-
-class AlCaDiJetsProducer : public edm::EDProducer {
- public:
- explicit AlCaDiJetsProducer(const edm::ParameterSet&);
- ~AlCaDiJetsProducer();
-
- virtual void beginJob() ;
-
- virtual void produce(edm::Event &, const edm::EventSetup&);
- private:
- // ----------member data ---------------------------
- std::vector ecalLabels_;
-
- edm::EDGetTokenT tok_jets_;
- edm::EDGetTokenT tok_hbhe_;
- edm::EDGetTokenT tok_ho_;
- edm::EDGetTokenT tok_hf_;
-
- std::vector > toks_ecal_;
-
- bool allowMissingInputs_;
-
-};
-}// end namespace cms
-#endif
diff --git a/Calibration/HcalAlCaRecoProducers/interface/AlCaGammaJetProducer.h b/Calibration/HcalAlCaRecoProducers/interface/AlCaGammaJetProducer.h
deleted file mode 100644
index 6de54d4717475..0000000000000
--- a/Calibration/HcalAlCaRecoProducers/interface/AlCaGammaJetProducer.h
+++ /dev/null
@@ -1,75 +0,0 @@
-#ifndef AlCaGammaJetProducer_AlCaHcalProducers_h
-#define AlCaGammaJetProducer_AlCaHcalProducers_h
-
-
-// -*- C++ -*-
-
-
-// system include files
-#include
-#include
-// user include files
-#include "FWCore/Framework/interface/Frameworkfwd.h"
-#include "FWCore/Framework/interface/EDProducer.h"
-#include "FWCore/Framework/interface/Event.h"
-#include "FWCore/Framework/interface/MakerMacros.h"
-#include "FWCore/ParameterSet/interface/ParameterSet.h"
-#include "FWCore/Framework/interface/ESHandle.h"
-#include "FWCore/Framework/interface/EventSetup.h"
-
-#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
-#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
-#include "DataFormats/JetReco/interface/CaloJetCollection.h"
-#include "TrackingTools/TransientTrack/interface/TransientTrack.h"
-#include "DataFormats/EgammaReco/interface/SuperCluster.h"
-#include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
-
-#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
-
-//
-// class declaration
-//
-namespace edm {
- class ParameterSet;
- class Event;
- class EventSetup;
-}
-
-//namespace cms
-//{
-
-class AlCaGammaJetProducer : public edm::EDProducer {
- public:
- explicit AlCaGammaJetProducer(const edm::ParameterSet&);
- ~AlCaGammaJetProducer();
- virtual void beginJob() ;
-
- virtual void produce(edm::Event &, const edm::EventSetup&);
- private:
- // ----------member data ---------------------------
- std::vector ecalLabels_;
- std::vector mInputCalo;
-
- std::vector > toks_ecal_;
- std::vector > toks_calo_;
-
- std::string correctedIslandBarrelSuperClusterCollection_;
- std::string correctedIslandBarrelSuperClusterProducer_;
- std::string correctedIslandEndcapSuperClusterCollection_;
- std::string correctedIslandEndcapSuperClusterProducer_;
-
- edm::EDGetTokenT tok_hbhe_;
- edm::EDGetTokenT tok_ho_;
- edm::EDGetTokenT tok_hf_;
- edm::EDGetTokenT tok_inputTrack_;
- edm::EDGetTokenT tok_EBSC_; // token for corrected island barrel super cluster collection
- edm::EDGetTokenT tok_EESC_; // token for corrected island end-cap super cluster
-
- bool allowMissingInputs_;
-
- // Calo geometry
- const CaloGeometry* geo;
-
-};
-//}// end namespace cms
-#endif
diff --git a/Calibration/HcalAlCaRecoProducers/interface/AlCaIsoTracksProducer.h b/Calibration/HcalAlCaRecoProducers/interface/AlCaIsoTracksProducer.h
deleted file mode 100644
index 32b9eb6258e00..0000000000000
--- a/Calibration/HcalAlCaRecoProducers/interface/AlCaIsoTracksProducer.h
+++ /dev/null
@@ -1,109 +0,0 @@
-// -*- C++ -*-
-
-
-// system include files
-#include
-#include
-// user include files
-#include "FWCore/Framework/interface/Frameworkfwd.h"
-#include "FWCore/Framework/interface/EDProducer.h"
-
-#include "FWCore/Framework/interface/Event.h"
-#include "FWCore/Framework/interface/MakerMacros.h"
-
-#include "FWCore/ParameterSet/interface/ParameterSet.h"
-#include "FWCore/Framework/interface/Frameworkfwd.h"
-#include "FWCore/Framework/interface/Event.h"
-#include "FWCore/Framework/interface/MakerMacros.h"
-#include "FWCore/Framework/interface/ESHandle.h"
-#include "FWCore/Framework/interface/EventSetup.h"
-#include "FWCore/ParameterSet/interface/ParameterSet.h"
-
-#include "DataFormats/Common/interface/Ref.h"
-#include "DataFormats/DetId/interface/DetId.h"
-//#include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
-
-#include "Geometry/Records/interface/IdealGeometryRecord.h"
-#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
-#include "DataFormats/GeometryVector/interface/GlobalPoint.h"
-
-#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
-#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
-#include "RecoTracker/TrackProducer/interface/TrackProducerBase.h"
-#include "TrackingTools/TransientTrack/interface/TransientTrack.h"
-
-#include "TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h"
-#include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h"
-#include "TrackingTools/TrackAssociator/interface/TrackAssociatorParameters.h"
-#include "TrackingTools/TrackAssociator/interface/TrackDetMatchInfo.h"
-
-#include "Geometry/Records/interface/IdealGeometryRecord.h"
-#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
-
-#include "DataFormats/HLTReco/interface/TriggerEvent.h"
-
-#include "TH1F.h"
-class TFile;
-
-//
-// class declaration
-//
-
-class AlCaIsoTracksProducer : public edm::EDProducer {
-public:
- explicit AlCaIsoTracksProducer(const edm::ParameterSet&);
- ~AlCaIsoTracksProducer();
-
- virtual void produce(edm::Event &, const edm::EventSetup&);
- void endJob(void);
-
-private:
-
- TrackDetectorAssociator trackAssociator_;
- TrackAssociatorParameters parameters_;
-
-
- const CaloGeometry* geo;
- std::vector ecalLabels_;
-
- int nHitsMinCore_;
- int nHitsMinIso_;
- double m_dvCut;
- double m_ddirCut;
- bool useConeCorr_;
- double m_pCut;
- double m_ptCut;
- double m_ecalCut;
-
- double taECALCone_;
- double taHCALCone_;
-
- bool skipNeutrals_;
- bool checkHLTMatch_;
- std::vector hltFiltTag_;
- double hltMatchingCone_;
-
- double isolE_;
- double etaMax_;
- double cluRad_;
- double ringOutRad_;
- double ringInnRad_;
-
- bool useECALCluMatrix_;
- int matrixSize_;
- int matrixInnerSize_;
- int matrixOuterSize_;
-
- std::string l1FilterTag_;
- double l1jetVetoCone_;
-
- edm::EDGetTokenT tok_ho_;
- edm::EDGetTokenT tok_hbhe_;
- edm::EDGetTokenT tok_track_;
- edm::EDGetTokenT tok_hlt_;
-
- std::vector > toks_ecal_;
- edm::EDGetTokenT tok_ps_;
-
-};
-
diff --git a/Calibration/HcalAlCaRecoProducers/plugins/AlCaIsoTracksFilter.cc b/Calibration/HcalAlCaRecoProducers/plugins/AlCaIsoTracksFilter.cc
new file mode 100644
index 0000000000000..f2a14b59daefb
--- /dev/null
+++ b/Calibration/HcalAlCaRecoProducers/plugins/AlCaIsoTracksFilter.cc
@@ -0,0 +1,376 @@
+// system include files
+#include
+#include
+#include
+#include
+#include
+
+// user include files
+#include "FWCore/Framework/interface/Frameworkfwd.h"
+#include "FWCore/Framework/interface/EDFilter.h"
+#include "FWCore/Framework/interface/Event.h"
+#include "FWCore/Framework/interface/Run.h"
+#include "FWCore/Framework/interface/ESHandle.h"
+#include "FWCore/Framework/interface/LuminosityBlock.h"
+#include "FWCore/ParameterSet/interface/ParameterSet.h"
+#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
+#include "FWCore/Common/interface/TriggerNames.h"
+
+#include "DataFormats/Common/interface/Handle.h"
+//Tracks
+#include "DataFormats/TrackReco/interface/Track.h"
+#include "DataFormats/TrackReco/interface/TrackFwd.h"
+#include "DataFormats/TrackReco/interface/HitPattern.h"
+#include "DataFormats/TrackReco/interface/TrackBase.h"
+// Vertices
+#include "DataFormats/VertexReco/interface/VertexFwd.h"
+#include "DataFormats/VertexReco/interface/Vertex.h"
+#include "DataFormats/BeamSpot/interface/BeamSpot.h"
+// RecHits
+#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
+#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
+//Triggers
+#include "DataFormats/Common/interface/TriggerResults.h"
+#include "DataFormats/HLTReco/interface/TriggerEvent.h"
+
+#include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
+
+#include "Calibration/IsolatedParticles/interface/CaloPropagateTrack.h"
+#include "Calibration/IsolatedParticles/interface/ChargeIsolation.h"
+#include "Calibration/IsolatedParticles/interface/eCone.h"
+#include "Calibration/IsolatedParticles/interface/TrackSelection.h"
+
+#include "MagneticField/Engine/interface/MagneticField.h"
+#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
+#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
+#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
+#include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h"
+#include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
+#include "Geometry/CaloTopology/interface/HcalTopology.h"
+#include "Geometry/CaloTopology/interface/CaloTopology.h"
+#include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
+#include "Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h"
+#include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
+#include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgoRcd.h"
+
+//
+// class declaration
+//
+
+class AlCaIsoTracksFilter : public edm::EDFilter {
+public:
+ explicit AlCaIsoTracksFilter(const edm::ParameterSet&);
+ ~AlCaIsoTracksFilter();
+
+ static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
+
+private:
+ virtual bool filter(edm::Event&, const edm::EventSetup&) override;
+ virtual void endJob() override;
+ virtual void beginRun(edm::Run const&, edm::EventSetup const&);
+ virtual void endRun(edm::Run const&, edm::EventSetup const&);
+
+ // ----------member data ---------------------------
+ HLTConfigProvider hltConfig_;
+ std::vector trigNames, HLTNames;
+ std::vector trigKount, trigPass;
+ spr::trackSelectionParameters selectionParameters;
+ std::string theTrackQuality, processName;
+ std::string l1Filter, l2Filter, l3Filter;
+ double a_mipR, a_coneR, a_charIsoR;
+ double pTrackMin_, eEcalMax_, eIsolation_;
+ int nRun, nAll, nGood;
+ edm::InputTag triggerEvent_, theTriggerResultsLabel, labelHBHE_;
+ edm::InputTag labelGenTrack_, labelRecVtx_, labelEB_, labelEE_;
+ edm::EDGetTokenT tok_trigEvt;
+ edm::EDGetTokenT tok_trigRes;
+
+ edm::EDGetTokenT tok_genTrack_;
+ edm::EDGetTokenT tok_recVtx_;
+ edm::EDGetTokenT tok_bs_;
+ edm::EDGetTokenT tok_EB_;
+ edm::EDGetTokenT tok_EE_;
+ edm::EDGetTokenT tok_hbhe_;
+};
+
+//
+// constants, enums and typedefs
+//
+
+//
+// static data member definitions
+//
+
+//
+// constructors and destructor
+//
+AlCaIsoTracksFilter::AlCaIsoTracksFilter(const edm::ParameterSet& iConfig) :
+ nRun(0), nAll(0), nGood(0) {
+ //now do what ever initialization is needed
+ trigNames = iConfig.getParameter >("Triggers");
+ theTrackQuality = iConfig.getParameter("TrackQuality");
+ processName = iConfig.getParameter("ProcessName");
+ l1Filter = iConfig.getParameter("L1Filter");
+ l2Filter = iConfig.getParameter("L2Filter");
+ l3Filter = iConfig.getParameter("L3Filter");
+ reco::TrackBase::TrackQuality trackQuality_=reco::TrackBase::qualityByName(theTrackQuality);
+ selectionParameters.minPt = iConfig.getParameter("MinTrackPt");
+ selectionParameters.minQuality = trackQuality_;
+ selectionParameters.maxDxyPV = iConfig.getParameter("MaxDxyPV");
+ selectionParameters.maxDzPV = iConfig.getParameter("MaxDzPV");
+ selectionParameters.maxChi2 = iConfig.getParameter("MaxChi2");
+ selectionParameters.maxDpOverP = iConfig.getParameter("MaxDpOverP");
+ selectionParameters.minOuterHit = iConfig.getParameter("MinOuterHit");
+ selectionParameters.minLayerCrossed = iConfig.getParameter("MinLayerCrossed");
+ selectionParameters.maxInMiss = iConfig.getParameter("MaxInMiss");
+ selectionParameters.maxOutMiss = iConfig.getParameter("MaxOutMiss");
+ a_coneR = iConfig.getParameter("ConeRadius");
+ a_charIsoR = a_coneR + 28.9;
+ a_mipR = iConfig.getParameter("ConeRadiusMIP");
+ pTrackMin_ = iConfig.getParameter("MinimumTrackP");
+ eEcalMax_ = iConfig.getParameter("MaximumEcalEnergy");
+ eIsolation_ = iConfig.getParameter("IsolationEnergy");
+ triggerEvent_ = iConfig.getParameter("TriggerEventLabel");
+ theTriggerResultsLabel = iConfig.getParameter("TriggerResultLabel");
+ labelGenTrack_ = iConfig.getParameter("TrackLabel");
+ labelRecVtx_ = iConfig.getParameter("VertexLabel");
+ labelEB_ = iConfig.getParameter("EBRecHitLabel");
+ labelEE_ = iConfig.getParameter("EERecHitLabel");
+ labelHBHE_ = iConfig.getParameter("HBHERecHitLabel");
+
+ // define tokens for access
+ tok_trigEvt = consumes(triggerEvent_);
+ tok_trigRes = consumes(theTriggerResultsLabel);
+ tok_genTrack_ = consumes(labelGenTrack_);
+ tok_recVtx_ = consumes(labelRecVtx_);
+ tok_bs_ = consumes(iConfig.getParameter("BeamSpotLabel"));
+
+ tok_EB_ = consumes(labelEB_);
+ tok_EE_ = consumes(labelEE_);
+ tok_hbhe_ = consumes(labelHBHE_);
+
+ std::vector dummy(trigNames.size(),0);
+ trigKount = trigPass = dummy;
+ edm::LogInfo("HcalIsoTrack") <<"Parameters read from config file \n"
+ <<"\t minPt " << selectionParameters.minPt
+ <<"\t theTrackQuality " << theTrackQuality
+ <<"\t minQuality " << selectionParameters.minQuality
+ <<"\t maxDxyPV " << selectionParameters.maxDxyPV
+ <<"\t maxDzPV " << selectionParameters.maxDzPV
+ <<"\t maxChi2 " << selectionParameters.maxChi2
+ <<"\t maxDpOverP " << selectionParameters.maxDpOverP
+ <<"\t minOuterHit " << selectionParameters.minOuterHit
+ <<"\t minLayerCrossed " << selectionParameters.minLayerCrossed
+ <<"\t maxInMiss " << selectionParameters.maxInMiss
+ <<"\t maxOutMiss " << selectionParameters.maxOutMiss
+ <<"\t a_coneR " << a_coneR
+ <<"\t a_charIsoR " << a_charIsoR
+ <<"\t a_mipR " << a_mipR;
+ edm::LogInfo("HcalIsoTrack") << "Process " << processName << " L1Filter:"
+ << l1Filter << " L2Filter:" << l2Filter
+ << " L3Filter:" << l3Filter;
+ for (unsigned int k=0; k triggerEventHandle;
+ iEvent.getByToken(tok_trigEvt, triggerEventHandle);
+ if (!triggerEventHandle.isValid()) {
+ edm::LogWarning("HcalIsoTrack") << "Error! Can't get the product "
+ << triggerEvent_.label() ;
+ } else {
+ triggerEvent = *(triggerEventHandle.product());
+
+ /////////////////////////////TriggerResults
+ edm::Handle triggerResults;
+ iEvent.getByToken(tok_trigRes, triggerResults);
+ if (triggerResults.isValid()) {
+ bool ok(false);
+ std::vector modules;
+ const edm::TriggerNames & triggerNames = iEvent.triggerNames(*triggerResults);
+ const std::vector & triggerNames_ = triggerNames.triggerNames();
+ for (unsigned int iHLT=0; iHLTsize(); iHLT++) {
+ int hlt = triggerResults->accept(iHLT);
+ for (unsigned int i=0; i 0) {
+ ok = true;
+ trigPass[i]++;
+ }
+ LogDebug("HcalIsoTrack") <<"This is the trigger we are looking for "
+ << triggerNames_[iHLT] << " Flag " << hlt
+ << ":" << ok;
+ }
+ }
+ }
+ if (ok) {
+ //Step2: Get geometry/B-field information
+ //Get magnetic field
+ edm::ESHandle bFieldH;
+ iSetup.get().get(bFieldH);
+ const MagneticField *bField = bFieldH.product();
+ // get handles to calogeometry and calotopology
+ edm::ESHandle pG;
+ iSetup.get().get(pG);
+ const CaloGeometry* geo = pG.product();
+
+ //Also relevant information to extrapolate tracks to Hcal surface
+ bool okC(true);
+ //Get track collection
+ edm::Handle trkCollection;
+ iEvent.getByToken(tok_genTrack_, trkCollection);
+ if (!trkCollection.isValid()) {
+ edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelGenTrack_;
+ okC = false;
+ }
+ reco::TrackCollection::const_iterator trkItr;
+
+ //Define the best vertex and the beamspot
+ edm::Handle recVtxs;
+ iEvent.getByToken(tok_recVtx_, recVtxs);
+ edm::Handle beamSpotH;
+ iEvent.getByToken(tok_bs_, beamSpotH);
+ math::XYZPoint leadPV(0,0,0);
+ if (recVtxs->size()>0 && !((*recVtxs)[0].isFake())) {
+ leadPV = math::XYZPoint((*recVtxs)[0].x(),(*recVtxs)[0].y(),
+ (*recVtxs)[0].z());
+ } else if (beamSpotH.isValid()) {
+ leadPV = beamSpotH->position();
+ }
+ LogDebug("HcalIsoTrack") << "Primary Vertex " << leadPV;
+
+ // RecHits
+ edm::Handle barrelRecHitsHandle;
+ iEvent.getByToken(tok_EB_, barrelRecHitsHandle);
+ if (!barrelRecHitsHandle.isValid()) {
+ edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelEB_;
+ okC = false;
+ }
+ edm::Handle endcapRecHitsHandle;
+ iEvent.getByToken(tok_EE_, endcapRecHitsHandle);
+ if (!endcapRecHitsHandle.isValid()) {
+ edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelEE_;
+ okC = false;
+ }
+ edm::Handle hbhe;
+ iEvent.getByToken(tok_hbhe_, hbhe);
+ if (!hbhe.isValid()) {
+ edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelHBHE_;
+ okC = false;
+ }
+
+ if (okC) {
+ //Step3 propagate the tracks to calorimeter surface and find
+ // candidates for isolated tracks
+ //Propagate tracks to calorimeter surface)
+ std::vector trkCaloDirections;
+ spr::propagateCALO(trkCollection, geo, bField, theTrackQuality,
+ trkCaloDirections, false);
+
+ std::vector::const_iterator trkDetItr;
+ unsigned int nTracks(0), nselTracks(0);
+ for (trkDetItr = trkCaloDirections.begin(),nTracks=0;
+ trkDetItr != trkCaloDirections.end(); trkDetItr++,nTracks++) {
+ const reco::Track* pTrack = &(*(trkDetItr->trkItr));
+ math::XYZTLorentzVector v4(pTrack->px(), pTrack->py(),
+ pTrack->pz(), pTrack->p());
+ LogDebug("HcalIsoTrack") << "This track : " << nTracks
+ << " (pt|eta|phi|p) :" << pTrack->pt()
+ << "|" << pTrack->eta() << "|"
+ << pTrack->phi() << "|" << pTrack->p();
+
+ //Selection of good track
+ bool qltyFlag = spr::goodTrack(pTrack,leadPV,selectionParameters,false);
+ LogDebug("HcalIsoTrack") << "qltyFlag|okECAL|okHCAL : " << qltyFlag
+ << "|" << trkDetItr->okECAL << "|"
+ << trkDetItr->okHCAL;
+ if (qltyFlag && trkDetItr->okECAL && trkDetItr->okHCAL) {
+ double t_p = pTrack->p();
+ nselTracks++;
+ int nRH_eMipDR(0), nNearTRKs(0);
+ double eMipDR = spr::eCone_ecal(geo, barrelRecHitsHandle,
+ endcapRecHitsHandle,
+ trkDetItr->pointHCAL,
+ trkDetItr->pointECAL, a_mipR,
+ trkDetItr->directionECAL,
+ nRH_eMipDR);
+ double hmaxNearP = spr::chargeIsolationCone(nTracks,
+ trkCaloDirections,
+ a_charIsoR,
+ nNearTRKs, false);
+ LogDebug("HcalIsoTrack") << "This track : " << nTracks
+ << " (pt|eta|phi|p) :" << pTrack->pt()
+ << "|" << pTrack->eta() << "|"
+ << pTrack->phi() << "|" << t_p
+ << "e_MIP " << eMipDR
+ << " Chg Isolation " << hmaxNearP;
+ if (t_p>pTrackMin_ && eMipDR
+
+
diff --git a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalDijets_Output_cff.py b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalDijets_Output_cff.py
index d905dcb23c4d6..a94c14a48a730 100644
--- a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalDijets_Output_cff.py
+++ b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalDijets_Output_cff.py
@@ -9,8 +9,13 @@
SelectEvents = cms.vstring('pathALCARECOHcalCalDijets')
),
outputCommands = cms.untracked.vstring(
- 'keep *_DiJProd_*_*',
- 'keep triggerTriggerEvent_*_*_*')
+ 'keep *_DiJetsProd_*_*',
+ 'keep triggerTriggerEvent_*_*_*',
+ 'keep *_particleFlow_*_*',
+ 'keep recoPFBlocks_particleFlowBlock_*_*',
+ 'keep recoPFClusters_*_*_*',
+ 'keep *_fixedGridRhoFastjetAll_*_*',
+ 'keep recoTracks_generalTracks_*_*')
)
import copy
diff --git a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalDijets_cff.py b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalDijets_cff.py
index c697f8c657fc7..894820e18db77 100644
--- a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalDijets_cff.py
+++ b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalDijets_cff.py
@@ -15,5 +15,5 @@
)
-seqALCARECOHcalCalDijets = cms.Sequence(dijetsHLT*DiJProd)
+seqALCARECOHcalCalDijets = cms.Sequence(dijetsHLT*DiJetsProd)
diff --git a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalGammaJet_Output_cff.py b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalGammaJet_Output_cff.py
index 692e89658d9a7..dd36f0da36e10 100644
--- a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalGammaJet_Output_cff.py
+++ b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalGammaJet_Output_cff.py
@@ -8,7 +8,13 @@
SelectEvents = cms.vstring('pathALCARECOHcalCalGammaJet')
),
outputCommands = cms.untracked.vstring(
- 'keep *_GammaJetProd_*_*')
+ 'keep recoPhotonCores_*_*_*',
+ 'keep recoSuperClusters_*_*_*',
+ 'keep recoTracks_generalTracks_*_*',
+ 'keep *_particleFlow_*_*',
+ 'keep recoPFBlocks_particleFlowBlock_*_*',
+ 'keep recoPFClusters_*_*_*',
+ 'keep *_GammaJetProd_*_*')
)
import copy
diff --git a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalMinBias_cff.py b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalMinBias_cff.py
index 3e154ceab44c7..2acf0d24aa4a5 100644
--- a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalMinBias_cff.py
+++ b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalMinBias_cff.py
@@ -27,6 +27,7 @@
)
seqALCARECOHcalCalMinBias = cms.Sequence(hcalminbiasHLT*hcalDigiAlCaMB*gtDigisAlCaMB*hbherecoNoise*hfrecoNoise*hfrecoMBspecial*horecoNoise)
+seqALCARECOHcalCalMinBiasNoHLT = cms.Sequence(hcalDigiAlCaMB*gtDigisAlCaMB*hbherecoNoise*hfrecoNoise*hfrecoMBspecial*horecoNoise)
gtDigisAlCaMB.DaqGtInputTag = 'source'
diff --git a/Calibration/HcalAlCaRecoProducers/python/alcaIsoTracksFilter_cfi.py b/Calibration/HcalAlCaRecoProducers/python/alcaIsoTracksFilter_cfi.py
new file mode 100644
index 0000000000000..0b538dc3e9429
--- /dev/null
+++ b/Calibration/HcalAlCaRecoProducers/python/alcaIsoTracksFilter_cfi.py
@@ -0,0 +1,32 @@
+import FWCore.ParameterSet.Config as cms
+
+AlcaIsoTracksFilter = cms.EDFilter("AlCaIsoTracksFilter",
+ TrackLabel = cms.InputTag("generalTracks"),
+ VertexLabel = cms.InputTag("offlinePrimaryVertices"),
+ BeamSpotLabel = cms.InputTag("offlineBeamSpot"),
+ EBRecHitLabel = cms.InputTag("ecalRecHit","EcalRecHitsEB"),
+ EERecHitLabel = cms.InputTag("ecalRecHit","EcalRecHitsEE"),
+ HBHERecHitLabel = cms.InputTag("hbhereco"),
+ TriggerEventLabel = cms.InputTag("hltTriggerSummaryAOD","","HLT"),
+ TriggerResultLabel= cms.InputTag("TriggerResults","","HLT"),
+ Triggers = cms.vstring("HLT_PFJet40","HLT_PFJet80","HLT_PFJet140","HLT_PFJet200","HLT_PFJet260","HLT_PFJet320","HLT_PFJet320","HLT_PFJet400"),
+ TrackQuality = cms.string("highPurity"),
+ ProcessName = cms.string("HLT"),
+ L1Filter = cms.string("hltL1s"),
+ L2Filter = cms.string("L2Filter"),
+ L3Filter = cms.string("PFJet"),
+ MinTrackPt = cms.double(10.0),
+ MaxDxyPV = cms.double(10.0),
+ MaxDzPV = cms.double(100.0),
+ MaxChi2 = cms.double(5.0),
+ MaxDpOverP = cms.double(0.1),
+ MinOuterHit = cms.int32(4),
+ MinLayerCrossed = cms.int32(8),
+ MaxInMiss = cms.int32(2),
+ MaxOutMiss = cms.int32(2),
+ ConeRadius = cms.double(34.98),
+ ConeRadiusMIP = cms.double(14.0),
+ MinimumTrackP = cms.double(20.0),
+ MaximumEcalEnergy = cms.double(2.0),
+ IsolationEnergy = cms.double(2.0),
+)
diff --git a/Calibration/HcalAlCaRecoProducers/python/alcadijets_cfi.py b/Calibration/HcalAlCaRecoProducers/python/alcadijets_cfi.py
index 8aea7e9475161..e9b4ac2402887 100644
--- a/Calibration/HcalAlCaRecoProducers/python/alcadijets_cfi.py
+++ b/Calibration/HcalAlCaRecoProducers/python/alcadijets_cfi.py
@@ -1,13 +1,15 @@
import FWCore.ParameterSet.Config as cms
-# producer for alcadijets (HCAL di-jets)
+# producer for alcadijet (HCAL dijet)
+DiJetsProd = cms.EDProducer("AlCaDiJetsProducer",
+ PFjetInput = cms.InputTag("ak4PFJetsCHS"),
+ HBHEInput = cms.InputTag("hbhereco"),
+ HFInput = cms.InputTag("hfreco"),
+ HOInput = cms.InputTag("horeco"),
+ #TriggerResults = cms.InputTag("TriggerResults::HLT"),
+ particleFlowInput = cms.InputTag("particleFlow"),
+ VertexInput = cms.InputTag("offlinePrimaryVertices"),
+ MinPtJet = cms.double(20.0)
+ )
-DiJProd = cms.EDProducer("AlCaDiJetsProducer",
- jetsInput = cms.InputTag("iterativeCone5CaloJets"),
- ecalInputs = cms.VInputTag(cms.InputTag("ecalRecHit","EcalRecHitsEB"), cms.InputTag("ecalRecHit","EcalRecHitsEE")),
- hbheInput = cms.InputTag("hbhereco"),
- hoInput = cms.InputTag("horeco"),
- hfInput = cms.InputTag("hfreco")
-)
-
diff --git a/Calibration/HcalAlCaRecoProducers/python/alcagammajet_cfi.py b/Calibration/HcalAlCaRecoProducers/python/alcagammajet_cfi.py
index f8244d4b81c5b..188e6653619b1 100644
--- a/Calibration/HcalAlCaRecoProducers/python/alcagammajet_cfi.py
+++ b/Calibration/HcalAlCaRecoProducers/python/alcagammajet_cfi.py
@@ -2,17 +2,23 @@
# producer for alcadijets (HCAL gamma-jet)
GammaJetProd = cms.EDProducer("AlCaGammaJetProducer",
- hbheInput = cms.InputTag("hbhereco"),
- correctedIslandBarrelSuperClusterCollection = cms.string(''),
- correctedIslandEndcapSuperClusterCollection = cms.string(''),
- hfInput = cms.InputTag("hfreco"),
- hoInput = cms.InputTag("horeco"),
- correctedIslandEndcapSuperClusterProducer = cms.string('correctedIslandEndcapSuperClusters'),
- correctedIslandBarrelSuperClusterProducer = cms.string('correctedIslandBarrelSuperClusters'),
- ecalInputs = cms.VInputTag(cms.InputTag("ecalRecHit","EcalRecHitsEB"), cms.InputTag("ecalRecHit","EcalRecHitsEE")),
- # VInputTag srcCalo = {iterativeCone5CaloJets, midPointCone5CaloJets, midPointCone7CaloJets,ktCaloJets}
- srcCalo = cms.VInputTag(cms.InputTag("iterativeCone7CaloJets")),
- inputTrackLabel = cms.untracked.string('generalTracks')
-)
+ PhoInput = cms.InputTag("gedPhotons"),
+ PFjetInput = cms.InputTag("ak4PFJetsCHS"),
+ HBHEInput = cms.InputTag("hbhereco"),
+ HFInput = cms.InputTag("hfreco"),
+ HOInput = cms.InputTag("horeco"),
+ METInput = cms.InputTag("pfMet"),
+ TriggerResults = cms.InputTag("TriggerResults::HLT"),
+ gsfeleInput = cms.InputTag("gedGsfElectrons"),
+ particleFlowInput = cms.InputTag("particleFlow"),
+ VertexInput = cms.InputTag("offlinePrimaryVertices"),
+ ConversionsInput = cms.InputTag("allConversions"),
+ rhoInput = cms.InputTag("fixedGridRhoFastjetAll"),
+ BeamSpotInput = cms.InputTag("offlineBeamSpot"),
+ PhoLoose = cms.InputTag("PhotonIDProdGED", "PhotonCutBasedIDLoose"),
+ PhoTight = cms.InputTag("PhotonIDProdGED", "PhotonCutBasedIDTight"),
+ MinPtJet = cms.double(10.0),
+ MinPtPhoton = cms.double(10.0)
+ )
diff --git a/Calibration/HcalAlCaRecoProducers/python/alcahbhemuon_cfi.py b/Calibration/HcalAlCaRecoProducers/python/alcahbhemuon_cfi.py
new file mode 100644
index 0000000000000..a1a6f702cd173
--- /dev/null
+++ b/Calibration/HcalAlCaRecoProducers/python/alcahbhemuon_cfi.py
@@ -0,0 +1,14 @@
+import FWCore.ParameterSet.Config as cms
+
+# producer for alcahbhemuon (HCAL with muons)
+HBHEMuonProd = cms.EDProducer("AlCaHBHEMuonProducer",
+ TriggerResultLabel= cms.InputTag("TriggerResults","","HLT"),
+ BeamSpotLabel = cms.InputTag("offlineBeamSpot"),
+ VertexLabel = cms.InputTag("offlinePrimaryVertices"),
+ EBRecHitLabel = cms.InputTag("ecalRecHit","EcalRecHitsEB"),
+ EERecHitLabel = cms.InputTag("ecalRecHit","EcalRecHitsEE"),
+ HBHERecHitLabel = cms.InputTag("hbhereco"),
+ MuonLabel = cms.InputTag("muons"),
+ MinimumMuonP = cms.double(10.0),
+ )
+
diff --git a/Calibration/HcalAlCaRecoProducers/python/alcaisotrk_cfi.py b/Calibration/HcalAlCaRecoProducers/python/alcaisotrk_cfi.py
index 1fe4e0df2ab37..c6d628fb7ea90 100644
--- a/Calibration/HcalAlCaRecoProducers/python/alcaisotrk_cfi.py
+++ b/Calibration/HcalAlCaRecoProducers/python/alcaisotrk_cfi.py
@@ -1,35 +1,35 @@
import FWCore.ParameterSet.Config as cms
# producer for alcaisotrk (HCAL isolated tracks)
-from TrackingTools.TrackAssociator.default_cfi import *
-from TrackingTools.TrackAssociator.DetIdAssociatorESProducer_cff import *
IsoProd = cms.EDProducer("AlCaIsoTracksProducer",
- TrackAssociatorParameterBlock,
- HBHEInput = cms.InputTag("hbhereco"),
- InputTracksLabel = cms.InputTag("generalTracks"),
- vtxCut = cms.double(10.0),
- MinTrackPt = cms.double(0.0),
- ECALRingOuterRadius = cms.double(35.0),
- ECALRingInnerRadius = cms.double(15.0),
- ECALClusterRadius = cms.double(9.0),
- HOInput = cms.InputTag("horeco"),
- MaxNearbyTrackEnergy = cms.double(2.0),
- RIsolAtHCALSurface = cms.double(64.0),
- MinNumberOfHitsCoreTrack=cms.int32(8),
- MinNumberOfHitsInConeTracks=cms.int32(3),
- UseLowPtConeCorrection = cms.bool(False),
- ECALInputs = cms.VInputTag(cms.InputTag("ecalRecHit","EcalRecHitsEB"), cms.InputTag("ecalRecHit","EcalRecHitsEE")),
- MaxTrackEta = cms.double(2.0),
- SkipNeutralIsoCheck = cms.untracked.bool(True),
- MinTrackP = cms.double(10.0),
- CheckHLTMatch=cms.bool(False),
- hltTriggerEventLabel = cms.InputTag("hltTriggerSummaryAOD"),
- hltL3FilterLabels = cms.vstring("hltIsolPixelTrackL3FilterHB","hltIsolPixelTrackL3FilterHE"),
- hltMatchingCone=cms.double(0.2),
- ClusterECALasMatrix = cms.bool (False),
- ECALMatrixFullSize = cms.int32(7),
- l1FilterLabel = cms.string("hltL1sJet52"),
- l1JetVetoCone = cms.double (1.2)
+ TrackLabel = cms.InputTag("generalTracks"),
+ VertexLabel = cms.InputTag("offlinePrimaryVertices"),
+ BeamSpotLabel = cms.InputTag("offlineBeamSpot"),
+ EBRecHitLabel = cms.InputTag("ecalRecHit","EcalRecHitsEB"),
+ EERecHitLabel = cms.InputTag("ecalRecHit","EcalRecHitsEE"),
+ HBHERecHitLabel = cms.InputTag("hbhereco"),
+ L1GTSeedLabel = cms.InputTag("hltL1sIsoTrack"),
+ TriggerEventLabel = cms.InputTag("hltTriggerSummaryAOD","","HLT"),
+ TriggerResultLabel= cms.InputTag("TriggerResults","","HLT"),
+ Triggers = cms.vstring("HLT_IsoTrackHB","HLT_IsoTrackHE"),
+ TrackQuality = cms.string("highPurity"),
+ ProcessName = cms.string("HLT"),
+ L1Filter = cms.string(""),
+ L2Filter = cms.string("L2Filter"),
+ L3Filter = cms.string("Filter"),
+ MinTrackPt = cms.double(10.0),
+ MaxDxyPV = cms.double(10.0),
+ MaxDzPV = cms.double(100.0),
+ MaxChi2 = cms.double(5.0),
+ MaxDpOverP = cms.double(0.1),
+ MinOuterHit = cms.int32(4),
+ MinLayerCrossed = cms.int32(8),
+ MaxInMiss = cms.int32(2),
+ MaxOutMiss = cms.int32(2),
+ ConeRadius = cms.double(34.98),
+ ConeRadiusMIP = cms.double(14.0),
+ MinimumTrackP = cms.double(20.0),
+ MaximumEcalEnergy = cms.double(2.0),
+ IsolationEnergy = cms.double(2.0),
)
-
diff --git a/Calibration/HcalAlCaRecoProducers/python/alcastreamHcalHBHEMuonOutput_cff.py b/Calibration/HcalAlCaRecoProducers/python/alcastreamHcalHBHEMuonOutput_cff.py
new file mode 100644
index 0000000000000..23f02f4a91777
--- /dev/null
+++ b/Calibration/HcalAlCaRecoProducers/python/alcastreamHcalHBHEMuonOutput_cff.py
@@ -0,0 +1,9 @@
+import FWCore.ParameterSet.Config as cms
+
+# output block for alcastream HCAL HBHEMuon
+# output module
+# module alcastreamHcalHBHEMuonOutput = PoolOutputModule
+alcastreamHcalHBHEMuonOutput = cms.PSet(
+ outputCommands = cms.untracked.vstring('drop *',
+ 'keep *_HBHEMuonProd_*_*')
+ )
diff --git a/Calibration/HcalAlCaRecoProducers/python/alcastreamHcalHBHEMuon_cff.py b/Calibration/HcalAlCaRecoProducers/python/alcastreamHcalHBHEMuon_cff.py
new file mode 100644
index 0000000000000..af3a378a380ab
--- /dev/null
+++ b/Calibration/HcalAlCaRecoProducers/python/alcastreamHcalHBHEMuon_cff.py
@@ -0,0 +1,7 @@
+import FWCore.ParameterSet.Config as cms
+
+#------------------------------------------------
+#AlCaReco filtering for HCAL hbhemuon:
+#------------------------------------------------
+from Calibration.HcalAlCaRecoProducers.alcahbhemuon_cfi import *
+seqAlcastreamHcalHBHEMuon = cms.Sequence(HBHEMuonProd)
diff --git a/Calibration/HcalAlCaRecoProducers/python/gammajetHLT_cfi.py b/Calibration/HcalAlCaRecoProducers/python/gammajetHLT_cfi.py
index 4c9cd2783c9cf..82f1755889327 100644
--- a/Calibration/HcalAlCaRecoProducers/python/gammajetHLT_cfi.py
+++ b/Calibration/HcalAlCaRecoProducers/python/gammajetHLT_cfi.py
@@ -5,9 +5,11 @@
import FWCore.ParameterSet.Config as cms
import HLTrigger.HLTfilters.hltHighLevel_cfi
+# Adjusted based on
+# https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideAlCaRecoTriggerBits
+
gammajetHLT = HLTrigger.HLTfilters.hltHighLevel_cfi.hltHighLevel.clone(
- HLTPaths = ['HLT_IsoPhoton30_L1I','HLT_IsoPhoton15_L1R'],
+ HLTPaths = ['HLT_L1SingleEG*','HLT_Photon*'],
+# eventSetupPathsKey='HcalCalGammaJet',
throw = False
)
-
-
diff --git a/Calibration/HcalAlCaRecoProducers/src/AlCaDiJetsProducer.cc b/Calibration/HcalAlCaRecoProducers/src/AlCaDiJetsProducer.cc
index 68f8314c34740..75bb596df6547 100644
--- a/Calibration/HcalAlCaRecoProducers/src/AlCaDiJetsProducer.cc
+++ b/Calibration/HcalAlCaRecoProducers/src/AlCaDiJetsProducer.cc
@@ -1,200 +1,215 @@
-#include "Calibration/HcalAlCaRecoProducers/interface/AlCaDiJetsProducer.h"
+// system include files
+#include
+#include
+// user include files
+#include "FWCore/Framework/interface/Frameworkfwd.h"
+#include "FWCore/Framework/interface/EDProducer.h"
+#include "FWCore/Framework/interface/Event.h"
+#include "FWCore/Framework/interface/MakerMacros.h"
+#include "FWCore/ParameterSet/interface/ParameterSet.h"
+#include "FWCore/Framework/interface/ESHandle.h"
+#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
-#include "Geometry/Records/interface/CaloGeometryRecord.h"
+
+#include "DataFormats/DetId/interface/DetId.h"
+#include "DataFormats/EgammaCandidates/interface/Photon.h"
+#include "DataFormats/EgammaCandidates/interface/PhotonFwd.h"
+#include "DataFormats/JetReco/interface/PFJetCollection.h"
+#include "DataFormats/HcalRecHit/interface/HBHERecHit.h"
+#include "DataFormats/HcalRecHit/interface/HFRecHit.h"
+#include "DataFormats/HcalRecHit/interface/HORecHit.h"
+#include "DataFormats/Common/interface/ValueMap.h"
+#include "DataFormats/Common/interface/TriggerResults.h"
+#include "DataFormats/HLTReco/interface/TriggerEvent.h"
+#include "DataFormats/HLTReco/interface/TriggerObject.h"
+#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
+#include "DataFormats/METReco/interface/PFMET.h"
+#include "DataFormats/METReco/interface/PFMETCollection.h"
+#include "DataFormats/VertexReco/interface/Vertex.h"
+#include "DataFormats/VertexReco/interface/VertexFwd.h"
#include "DataFormats/GeometryVector/interface/GlobalPoint.h"
-#include "FWCore/Utilities/interface/Exception.h"
-
-using namespace edm;
-using namespace std;
-using namespace reco;
-
-namespace cms
-{
-
-AlCaDiJetsProducer::AlCaDiJetsProducer(const edm::ParameterSet& iConfig)
-{
- tok_jets_ = consumes(iConfig.getParameter("jetsInput"));
- ecalLabels_=iConfig.getParameter >("ecalInputs");
- tok_hbhe_ = consumes(iConfig.getParameter("hbheInput"));
- tok_ho_ = consumes(iConfig.getParameter("hoInput"));
- tok_hf_ = consumes(iConfig.getParameter("hfInput"));
- allowMissingInputs_ = true;
-
- // fill ecal tokens from input labels
- const unsigned nLabels = ecalLabels_.size();
- for ( unsigned i=0; i != nLabels; i++ )
- toks_ecal_.push_back(consumes(ecalLabels_[i]));
-
-//register your products
- produces("DiJetsBackToBackCollection");
- produces("DiJetsEcalRecHitCollection");
- produces("DiJetsHBHERecHitCollection");
- produces("DiJetsHORecHitCollection");
- produces("DiJetsHFRecHitCollection");
-}
-void AlCaDiJetsProducer::beginJob()
-{
+#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
+#include "Geometry/Records/interface/CaloGeometryRecord.h"
+#include
+
+//
+// class declaration
+//
+
+class AlCaDiJetsProducer : public edm::EDProducer {
+ public:
+ explicit AlCaDiJetsProducer(const edm::ParameterSet&);
+ ~AlCaDiJetsProducer();
+ virtual void beginJob() ;
+ virtual void produce(edm::Event &, const edm::EventSetup&);
+ virtual void endJob();
+ private:
+ bool select (reco::PFJetCollection);
+
+ // ----------member data ---------------------------
+
+ edm::InputTag labelPFJet_, labelHBHE_, labelHF_, labelHO_, labelPFCandidate_, labelVertex_;//labelTrigger_,
+ double minPtJet_;
+ int nAll_, nSelect_;
+
+ edm::EDGetTokenT tok_PFJet_;
+ edm::EDGetTokenT>> tok_HBHE_;
+ edm::EDGetTokenT>> tok_HF_;
+ edm::EDGetTokenT>> tok_HO_;
+ //edm::EDGetTokenT tok_TrigRes_;
+ edm::EDGetTokenT tok_PFCand_;
+ edm::EDGetTokenT tok_Vertex_;
+};
+
+AlCaDiJetsProducer::AlCaDiJetsProducer(const edm::ParameterSet& iConfig) : nAll_(0), nSelect_(0) {
+ // Take input
+ labelPFJet_ = iConfig.getParameter("PFjetInput");
+ labelHBHE_ = iConfig.getParameter("HBHEInput");
+ labelHF_ = iConfig.getParameter("HFInput");
+ labelHO_ = iConfig.getParameter("HOInput");
+ //labelTrigger_ = iConfig.getParameter("TriggerResults");
+ labelPFCandidate_= iConfig.getParameter("particleFlowInput");
+ labelVertex_ = iConfig.getParameter("VertexInput");
+ minPtJet_ = iConfig.getParameter("MinPtJet");
+
+ tok_PFJet_ = consumes(labelPFJet_);
+ tok_HBHE_ = consumes>>(labelHBHE_);
+ tok_HF_ = consumes>>(labelHF_);
+ tok_HO_ = consumes>>(labelHO_);
+ //tok_TrigRes_= consumes(labelTrigger_);
+ tok_PFCand_ = consumes(labelPFCandidate_);
+ tok_Vertex_ = consumes(labelVertex_);
+
+ // register your products
+ produces(labelPFJet_.encode());
+ produces>>(labelHBHE_.encode());
+ produces>>(labelHF_.encode());
+ produces>>(labelHO_.encode());
+ //produces(labelTrigger_.encode());
+ produces(labelPFCandidate_.encode());
+ produces(labelVertex_.encode());
}
-AlCaDiJetsProducer::~AlCaDiJetsProducer()
-{
-
+AlCaDiJetsProducer::~AlCaDiJetsProducer() { }
-}
+void AlCaDiJetsProducer::beginJob() { }
+void AlCaDiJetsProducer::endJob() {
+ edm::LogInfo("AlcaDiJets") << "Accepts " << nSelect_ << " events from a total of " << nAll_ << " events";
+}
+bool AlCaDiJetsProducer::select (reco::PFJetCollection jt) {
+ if (jt.size()<2) return false;
+ if (((jt.at(0)).pt()) result (new CaloJetCollection); //Corrected jets
- std::auto_ptr miniDiJetsEcalRecHitCollection(new EcalRecHitCollection);
- std::auto_ptr miniDiJetsHBHERecHitCollection(new HBHERecHitCollection);
- std::auto_ptr miniDiJetsHORecHitCollection(new HORecHitCollection);
- std::auto_ptr miniDiJetsHFRecHitCollection(new HFRecHitCollection);
-
- edm::ESHandle pG;
- iSetup.get().get(pG);
- const CaloGeometry* geo = pG.product();
-
- // Jets Collections
-
- vector jetv;
-
- CaloJet fJet1, fJet2, fJet3;
- edm::Handle jets;
- iEvent.getByToken(tok_jets_, jets);
- int iflag_select = 0;
- if(jets->size()>1){
- fJet1 = (*jets)[0];
- fJet2 = (*jets)[1];
- double dphi = fabs(fJet1.phi() - fJet2.phi());
- if(dphi > pi){dphi = 2*pi - dphi;}
- double degreedphi = dphi*180./pi;
- if(fabs(degreedphi-180)<30.){iflag_select = 1;}
- }
- if(iflag_select == 1){
- result->push_back(fJet1);
- result->push_back(fJet2);
- jetv.push_back(fJet1);
- jetv.push_back(fJet2);
- if(jets->size()>2){
- fJet3 = (*jets)[2];
- result->push_back(fJet3);
- jetv.push_back(fJet3);
- }
- } else {
- iEvent.put( result, "DiJetsBackToBackCollection");
- iEvent.put( miniDiJetsEcalRecHitCollection,"DiJetsEcalRecHitCollection");
- iEvent.put( miniDiJetsHBHERecHitCollection, "DiJetsHBHERecHitCollection");
- iEvent.put( miniDiJetsHORecHitCollection, "DiJetsHORecHitCollection");
- iEvent.put( miniDiJetsHFRecHitCollection, "DiJetsHFRecHitCollection");
- return;
- }
-
- // Ecal Collections
-
- std::vector >::const_iterator i;
- for (i=toks_ecal_.begin(); i!=toks_ecal_.end(); i++) {
- edm::Handle ec;
- iEvent.getByToken(*i,ec);
- for(EcalRecHitCollection::const_iterator ecItr = (*ec).begin();
- ecItr != (*ec).end(); ++ecItr)
- {
-// EcalBarrel = 1, EcalEndcap = 2
- GlobalPoint pos = geo->getPosition(ecItr->detid());
- double phihit = pos.phi();
- double etahit = pos.eta();
- int iflag_select = 0;
- for(unsigned int i=0; i pi) dphi = 2*pi - dphi;
- double dr = sqrt(deta*deta+dphi*dphi);
- if(dr < 1.4){iflag_select = 1;}
- }
- if(iflag_select==1){miniDiJetsEcalRecHitCollection->push_back(*ecItr);}
- }
-
- }
-
- // HB & HE Collections
-
- edm::Handle hbhe;
- iEvent.getByToken(tok_hbhe_,hbhe);
- for(HBHERecHitCollection::const_iterator hbheItr=hbhe->begin();
- hbheItr!=hbhe->end(); hbheItr++)
- {
- GlobalPoint pos = geo->getPosition(hbheItr->detid());
- double phihit = pos.phi();
- double etahit = pos.eta();
- int iflag_select = 0;
- for(unsigned int i=0; i pi) dphi = 2*pi - dphi;
- double dr = sqrt(deta*deta+dphi*dphi);
- if(dr < 1.4){iflag_select = 1;}
- }
- if(iflag_select==1){miniDiJetsHBHERecHitCollection->push_back(*hbheItr);}
- }
-
+void AlCaDiJetsProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
+ nAll_++;
+
+ // Access the collections from iEvent
+ edm::Handle pfjet;
+ iEvent.getByToken(tok_PFJet_,pfjet);
+ if (!pfjet.isValid()) {
+ edm::LogWarning("AlCaDiJets") << "AlCaDiJetsProducer: Error! can't get product " << labelPFJet_;
+ return ;
+ }
+ const reco::PFJetCollection pfjets = *(pfjet.product());
+
+ edm::Handle pfc;
+ iEvent.getByToken(tok_PFCand_,pfc);
+ if (!pfc.isValid()) {
+ edm::LogWarning("AlCaDiJets") << "AlCaDiJetsProducer: Error! can't get product " << labelPFCandidate_;
+ return ;
+ }
+ const reco::PFCandidateCollection pfcand = *(pfc.product());
+
+ edm::Handle vt;
+ iEvent.getByToken(tok_Vertex_,vt);
+ if (!vt.isValid()) {
+ edm::LogWarning("AlCaDiJets") << "AlCaDiJetsProducer: Error! can't get product " << labelVertex_;
+ return ;
+ }
+ const reco::VertexCollection vtx = *(vt.product());
+
+ edm::Handle > > hbhe;
+ iEvent.getByToken(tok_HBHE_,hbhe);
+ if (!hbhe.isValid()) {
+ edm::LogWarning("AlCaDiJets") << "AlCaDiJetsProducer: Error! can't get product " << labelHBHE_;
+ return ;
+ }
+ const edm::SortedCollection > Hithbhe = *(hbhe.product());
+
+ edm::Handle > > ho;
+ iEvent.getByToken(tok_HO_,ho);
+ if(!ho.isValid()) {
+ edm::LogWarning("AlCaDiJets") << "AlCaDiJetsProducer: Error! can't get product " << labelHO_;
+ return ;
+ }
+ const edm::SortedCollection > Hitho = *(ho.product());
+
+ edm::Handle > > hf;
+ iEvent.getByToken(tok_HF_,hf);
+ if(!hf.isValid()) {
+ edm::LogWarning("AlCaDiJets") << "AlCaDiJetsProducer: Error! can't get product " << labelHF_;
+ return ;
+ }
+ const edm::SortedCollection > Hithf = *(hf.product());
+
+ // See if this event is useful
+ bool accept = select(pfjets);
+ if (accept) {
+ nSelect_++;
+
+ //Copy from standard place
+ std::auto_ptr miniPFjetCollection(new reco::PFJetCollection);
+ for(reco::PFJetCollection::const_iterator pfjetItr=pfjets.begin();
+ pfjetItr!=pfjets.end(); pfjetItr++) {
+ miniPFjetCollection->push_back(*pfjetItr);
+ }
+
+ std::auto_ptr miniPFCandCollection(new reco::PFCandidateCollection);
+ for(reco::PFCandidateCollection::const_iterator pfcItr=pfcand.begin();
+ pfcItr!=pfcand.end(); pfcItr++) {
+ miniPFCandCollection->push_back(*pfcItr);
+ }
+
+ std::auto_ptr miniVtxCollection(new reco::VertexCollection);
+ for(reco::VertexCollection::const_iterator vtxItr=vtx.begin();
+ vtxItr!=vtx.end(); vtxItr++) {
+ miniVtxCollection->push_back(*vtxItr);
+ }
+
+ std::auto_ptr>> miniHBHECollection(new edm::SortedCollection>);
+ for(edm::SortedCollection >::const_iterator hbheItr=Hithbhe.begin();
+ hbheItr!=Hithbhe.end(); hbheItr++) {
+ miniHBHECollection->push_back(*hbheItr);
+ }
+
+ std::auto_ptr>> miniHOCollection(new edm::SortedCollection>);
+ for(edm::SortedCollection >::const_iterator hoItr=Hitho.begin();
+ hoItr!=Hitho.end(); hoItr++) {
+ miniHOCollection->push_back(*hoItr);
+ }
+
+ std::auto_ptr>> miniHFCollection(new edm::SortedCollection>);
+ for(edm::SortedCollection >::const_iterator hfItr=Hithf.begin();
+ hfItr!=Hithf.end(); hfItr++) {
+ miniHFCollection->push_back(*hfItr);
+ }
+
+ //Put them in the event
+ iEvent.put( miniPFjetCollection, labelPFJet_.encode());
+ iEvent.put( miniHBHECollection, labelHBHE_.encode());
+ iEvent.put( miniHFCollection, labelHF_.encode());
+ iEvent.put( miniHOCollection, labelHO_.encode());
+ //iEvent.put( miniTriggerCollection, labelTrigger_.encode());
+ iEvent.put( miniPFCandCollection, labelPFCandidate_.encode());
+ iEvent.put( miniVtxCollection, labelVertex_.encode());
+ }
+ return;
-// HO Collections
-
-
- edm::Handle ho;
- iEvent.getByToken(tok_ho_,ho);
- for(HORecHitCollection::const_iterator hoItr=ho->begin();
- hoItr!=ho->end(); hoItr++)
- {
- GlobalPoint pos = geo->getPosition(hoItr->detid());
- double phihit = pos.phi();
- double etahit = pos.eta();
- int iflag_select = 0;
- for(unsigned int i=0; i pi) dphi = 2*pi - dphi;
- double dr = sqrt(deta*deta+dphi*dphi);
- if(dr < 1.4){iflag_select = 1;}
- }
- if(iflag_select==1){miniDiJetsHORecHitCollection->push_back(*hoItr);}
- }
-
- // HF Collection
-
-
- edm::Handle hf;
- iEvent.getByToken(tok_hf_,hf);
- for(HFRecHitCollection::const_iterator hfItr=hf->begin();
- hfItr!=hf->end(); hfItr++)
- {
- GlobalPoint pos = geo->getPosition(hfItr->detid());
- double phihit = pos.phi();
- double etahit = pos.eta();
- int iflag_select = 0;
- for(unsigned int i=0; i pi) dphi = 2*pi - dphi;
- double dr = sqrt(deta*deta+dphi*dphi);
- if(dr < 1.4){iflag_select = 1;}
- }
- if(iflag_select==1){miniDiJetsHFRecHitCollection->push_back(*hfItr);}
- }
-
-
- //Put selected information in the event
-
- iEvent.put( result, "DiJetsBackToBackCollection");
- iEvent.put( miniDiJetsEcalRecHitCollection,"DiJetsEcalRecHitCollection");
- iEvent.put( miniDiJetsHBHERecHitCollection, "DiJetsHBHERecHitCollection");
- iEvent.put( miniDiJetsHORecHitCollection, "DiJetsHORecHitCollection");
- iEvent.put( miniDiJetsHFRecHitCollection, "DiJetsHFRecHitCollection");
-}
}
+
+DEFINE_FWK_MODULE(AlCaDiJetsProducer);
diff --git a/Calibration/HcalAlCaRecoProducers/src/AlCaGammaJetProducer.cc b/Calibration/HcalAlCaRecoProducers/src/AlCaGammaJetProducer.cc
index a98cac898788b..42e938ee7a1aa 100644
--- a/Calibration/HcalAlCaRecoProducers/src/AlCaGammaJetProducer.cc
+++ b/Calibration/HcalAlCaRecoProducers/src/AlCaGammaJetProducer.cc
@@ -1,458 +1,381 @@
-#include "Calibration/HcalAlCaRecoProducers/interface/AlCaGammaJetProducer.h"
+// system include files
+#include
+#include
+// user include files
+#include "FWCore/Framework/interface/Frameworkfwd.h"
+#include "FWCore/Framework/interface/EDProducer.h"
+#include "FWCore/Framework/interface/Event.h"
+#include "FWCore/Framework/interface/MakerMacros.h"
+#include "FWCore/ParameterSet/interface/ParameterSet.h"
+#include "FWCore/Framework/interface/ESHandle.h"
+#include "FWCore/Framework/interface/EventSetup.h"
+#include "FWCore/MessageLogger/interface/MessageLogger.h"
+
#include "DataFormats/DetId/interface/DetId.h"
-#include "Geometry/Records/interface/CaloGeometryRecord.h"
+#include "DataFormats/EgammaCandidates/interface/Photon.h"
+#include "DataFormats/EgammaCandidates/interface/PhotonFwd.h"
+#include "DataFormats/JetReco/interface/PFJetCollection.h"
+#include "DataFormats/HcalRecHit/interface/HBHERecHit.h"
+#include "DataFormats/HcalRecHit/interface/HFRecHit.h"
+#include "DataFormats/HcalRecHit/interface/HORecHit.h"
+#include "DataFormats/Common/interface/ValueMap.h"
+#include "DataFormats/Common/interface/TriggerResults.h"
+#include "DataFormats/HLTReco/interface/TriggerEvent.h"
+#include "DataFormats/HLTReco/interface/TriggerObject.h"
+#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
+#include "DataFormats/METReco/interface/PFMET.h"
+#include "DataFormats/METReco/interface/PFMETCollection.h"
+#include "DataFormats/VertexReco/interface/Vertex.h"
+#include "DataFormats/VertexReco/interface/VertexFwd.h"
#include "DataFormats/GeometryVector/interface/GlobalPoint.h"
-using namespace edm;
-using namespace std;
-using namespace reco;
+#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
+#include "Geometry/Records/interface/CaloGeometryRecord.h"
+#include
-//namespace cms
-//{
+//
+// class declaration
+//
-AlCaGammaJetProducer::AlCaGammaJetProducer(const edm::ParameterSet& iConfig)
-{
- // Take input
-
- tok_hbhe_= consumes(iConfig.getParameter("hbheInput"));
- tok_ho_ = consumes(iConfig.getParameter("hoInput"));
- tok_hf_ = consumes(iConfig.getParameter("hfInput"));
-
- mInputCalo = iConfig.getParameter >("srcCalo");
- ecalLabels_=iConfig.getParameter >("ecalInputs");
-
- unsigned nLabels = mInputCalo.size();
- for ( unsigned i=0; i != nLabels; i++ )
- toks_calo_.push_back( consumes( mInputCalo[i] ) );
-
- nLabels = ecalLabels_.size();
- for ( unsigned i=0; i != nLabels; i++ )
- toks_ecal_.push_back( consumes( ecalLabels_[i] ) );
-
-
- tok_inputTrack_ = consumes(iConfig.getUntrackedParameter("inputTrackLabel","generalTracks"));
- correctedIslandBarrelSuperClusterCollection_ = iConfig.getParameter("correctedIslandBarrelSuperClusterCollection");
- correctedIslandBarrelSuperClusterProducer_ = iConfig.getParameter("correctedIslandBarrelSuperClusterProducer");
- tok_EBSC_ = consumes(
- edm::InputTag(correctedIslandBarrelSuperClusterProducer_,
- correctedIslandBarrelSuperClusterCollection_));
-
- correctedIslandEndcapSuperClusterCollection_ = iConfig.getParameter("correctedIslandEndcapSuperClusterCollection");
- correctedIslandEndcapSuperClusterProducer_ = iConfig.getParameter("correctedIslandEndcapSuperClusterProducer");
- tok_EESC_ = consumes(
- edm::InputTag(correctedIslandEndcapSuperClusterProducer_,
- correctedIslandEndcapSuperClusterCollection_));
-
- allowMissingInputs_=iConfig.getUntrackedParameter("AllowMissingInputs",true);
-
-
- //register your products
- produces("GammaJetTracksCollection");
- produces("GammaJetEcalRecHitCollection");
- produces("GammaJetHBHERecHitCollection");
- produces("GammaJetHORecHitCollection");
- produces("GammaJetHFRecHitCollection");
- produces("GammaJetJetBackToBackCollection");
- produces("GammaJetGammaBackToBackCollection");
+class AlCaGammaJetProducer : public edm::EDProducer {
-
-
+public:
+ explicit AlCaGammaJetProducer(const edm::ParameterSet&);
+ ~AlCaGammaJetProducer();
+ virtual void beginJob() ;
+ virtual void produce(edm::Event &, const edm::EventSetup&);
+ virtual void endJob();
+
+private:
+ bool select (reco::PhotonCollection, reco::PFJetCollection);
+
+ // ----------member data ---------------------------
+
+ edm::InputTag labelPhoton_, labelPFJet_, labelHBHE_, labelHF_, labelHO_, labelTrigger_, labelPFCandidate_, labelVertex_, labelPFMET_, labelGsfEle_, labelRho_, labelConv_, labelBeamSpot_, labelLoosePhot_, labelTightPhot_;
+ double minPtJet_, minPtPhoton_;
+ int nAll_, nSelect_;
+
+ edm::EDGetTokenT tok_Photon_;
+ edm::EDGetTokenT tok_PFJet_;
+ edm::EDGetTokenT>> tok_HBHE_;
+ edm::EDGetTokenT>> tok_HF_;
+ edm::EDGetTokenT>> tok_HO_;
+ edm::EDGetTokenT tok_TrigRes_;
+ edm::EDGetTokenT tok_PFCand_;
+ edm::EDGetTokenT tok_Vertex_;
+ edm::EDGetTokenT tok_PFMET_;
+ edm::EDGetTokenT tok_GsfElec_;
+ edm::EDGetTokenT tok_Rho_;
+ edm::EDGetTokenT tok_Conv_;
+ edm::EDGetTokenT tok_BS_;
+ edm::EDGetTokenT > tok_loosePhoton_;
+ edm::EDGetTokenT > tok_tightPhoton_;
+};
+
+AlCaGammaJetProducer::AlCaGammaJetProducer(const edm::ParameterSet& iConfig) : nAll_(0), nSelect_(0) {
+ // Take input
+ labelPhoton_ = iConfig.getParameter("PhoInput");
+ labelPFJet_ = iConfig.getParameter("PFjetInput");
+ labelHBHE_ = iConfig.getParameter("HBHEInput");
+ labelHF_ = iConfig.getParameter("HFInput");
+ labelHO_ = iConfig.getParameter("HOInput");
+ labelTrigger_ = iConfig.getParameter("TriggerResults");
+ labelPFCandidate_= iConfig.getParameter("particleFlowInput");
+ labelVertex_ = iConfig.getParameter("VertexInput");
+ labelPFMET_ = iConfig.getParameter("METInput");
+ labelGsfEle_ = iConfig.getParameter("gsfeleInput");
+ labelRho_ = iConfig.getParameter("rhoInput");
+ labelConv_ = iConfig.getParameter("ConversionsInput");
+ labelBeamSpot_ = iConfig.getParameter("BeamSpotInput");
+ labelLoosePhot_ = iConfig.getParameter("PhoLoose");
+ labelTightPhot_ = iConfig.getParameter("PhoTight");
+ minPtJet_ = iConfig.getParameter("MinPtJet");
+ minPtPhoton_ = iConfig.getParameter("MinPtPhoton");
+
+ tok_Photon_ = consumes(labelPhoton_);
+ tok_PFJet_ = consumes(labelPFJet_);
+ tok_HBHE_ = consumes>>(labelHBHE_);
+ tok_HF_ = consumes>>(labelHF_);
+ tok_HO_ = consumes>>(labelHO_);
+ tok_TrigRes_= consumes(labelTrigger_);
+ tok_PFCand_ = consumes