59 _minJetEt(iConfig.getParameter<double>(
"minJetEt")),
60 _minMuonEt(iConfig.getParameter<double>(
"minMuonEt")),
61 _minElectronEt(iConfig.getParameter<double>(
"minElectronEt")),
62 _minTauEt(iConfig.getParameter<double>(
"minTauEt")),
63 _minPhotonEt(iConfig.getParameter<double>(
"minPhotonEt")),
65 _maxJetEta(iConfig.getParameter<double>(
"maxJetEta")),
66 _maxMuonEta(iConfig.getParameter<double>(
"maxMuonEta")),
67 _maxElectronEta(iConfig.getParameter<double>(
"maxElectronEta")),
68 _maxTauEta(iConfig.getParameter<double>(
"maxTauEta")),
69 _maxPhotonEta(iConfig.getParameter<double>(
"maxPhotonEta")),
71 _seedMethod(iConfig.getParameter<
int>(
"seedMethod")),
72 _combinationMethod(iConfig.getParameter<
int>(
"combinationMethod"))
75 produces<std::vector<pat::Hemisphere>>();
92 std::vector<float> vPx, vPy, vPz, vE;
93 std::vector<float> vA1, vA2;
94 std::vector<int> vgroups;
95 std::vector<reco::CandidatePtr> componentPtrs;
118 for (
int i = 0;
i < (
int)(*pJets).size();
i++) {
122 componentPtrs.push_back(pJets->
ptrAt(
i));
125 for (
int i = 0;
i < (
int)(*pMuons).size();
i++) {
129 componentPtrs.push_back(pMuons->
ptrAt(
i));
132 for (
int i = 0;
i < (
int)(*pElectrons).size();
i++) {
136 componentPtrs.push_back(pElectrons->
ptrAt(
i));
139 for (
int i = 0;
i < (
int)(*pPhotons).size();
i++) {
143 componentPtrs.push_back(pPhotons->
ptrAt(
i));
147 for (
int i = 0;
i < (
int)(*pTaus).size();
i++) {
151 componentPtrs.push_back(pTaus->
ptrAt(
i));
155 auto hemispheres = std::make_unique<std::vector<Hemisphere>>();
174 for (
unsigned int i = 0;
i < vgroups.size(); ++
i) {
175 if (vgroups[
i] == 1) {
176 (*hemispheres)[0].addDaughter(componentPtrs[
i]);
178 (*hemispheres)[1].addDaughter(componentPtrs[
i]);
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Ptr< value_type > ptrAt(size_type i) const
const edm::EDGetTokenT< reco::CandidateView > _patElectronsToken
const float _maxElectronEta
const int _combinationMethod
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
const edm::EDGetTokenT< reco::CandidateView > _patTausToken
std::vector< float > getAxis1()
const float _maxPhotonEta
#define DEFINE_FWK_MODULE(type)
const float _minElectronEt
const edm::EDGetTokenT< reco::CandidateView > _patJetsToken
Input: All PAT objects that are to cross-clean or needed for that.
std::vector< int > getGrouping()
~PATHemisphereProducer() override
PATHemisphereProducer(const edm::ParameterSet &)
const edm::EDGetTokenT< reco::CandidateView > _patPhotonsToken
math::XYZTLorentzVector LorentzVector
Lorentz vector.
const edm::EDGetTokenT< reco::CandidateView > _patMuonsToken
std::vector< float > getAxis2()
edm::View< Candidate > CandidateView
view of a collection containing candidates