49 maxDR_(iConfig.getParameter<double>(
"maxDR")) {
50 produces<edm::ValueMap<float>>(
"chargedFromPV0EnergyFraction");
51 produces<edm::ValueMap<float>>(
"chargedFromPV1EnergyFraction");
52 produces<edm::ValueMap<float>>(
"chargedFromPV2EnergyFraction");
53 produces<edm::ValueMap<float>>(
"chargedFromPV3EnergyFraction");
63 const std::vector<float> &
values,
80 unsigned int nJet = srcJet->size();
84 std::vector<double> jet2pue(nJet, 0);
85 for (
const auto &
cand : *srcPF) {
90 int bestjet = -1, jetidx = 0;
91 for (
const auto &
jet : *srcJet) {
101 jet2pue[bestjet] +=
cand.energy();
104 std::vector<float> chargedFromPV0EnergyFraction(nJet, -1);
105 std::vector<float> chargedFromPV1EnergyFraction(nJet, -1);
106 std::vector<float> chargedFromPV2EnergyFraction(nJet, -1);
107 std::vector<float> chargedFromPV3EnergyFraction(nJet, -1);
109 for (
unsigned int ij = 0; ij < nJet; ++ij) {
111 chargedFromPV0EnergyFraction[ij] = std::get<0>(
vals);
112 chargedFromPV1EnergyFraction[ij] = std::get<1>(
vals);
113 chargedFromPV2EnergyFraction[ij] = std::get<2>(
vals);
114 chargedFromPV3EnergyFraction[ij] = std::get<3>(
vals);
117 fillValueMaps(
"chargedFromPV0EnergyFraction", chargedFromPV0EnergyFraction, srcJet, iEvent);
118 fillValueMaps(
"chargedFromPV1EnergyFraction", chargedFromPV1EnergyFraction, srcJet, iEvent);
119 fillValueMaps(
"chargedFromPV2EnergyFraction", chargedFromPV2EnergyFraction, srcJet, iEvent);
120 fillValueMaps(
"chargedFromPV3EnergyFraction", chargedFromPV3EnergyFraction, srcJet, iEvent);
123 template <
typename T>
125 const std::vector<float> &
values,
130 valuesFiller.
insert(
srcJet, values.begin(), values.end());
135 template <
typename T>
137 double chefrompv0)
const {
139 double chefrompv1 = 0.0;
140 double chefrompv2 = 0.0;
141 double chefrompv3 = 0.0;
147 if (dtr->charge() == 0)
149 if (dtr->fromPV() == 1)
150 chefrompv1 += dtr->
energy();
151 else if (dtr->fromPV() == 2)
152 chefrompv2 += dtr->energy();
153 else if (dtr->fromPV() == 3)
154 chefrompv3 += dtr->energy();
159 double chffpv0 = chefrompv0 / rawP4.energy();
160 double chffpv1 = chefrompv1 / rawP4.energy();
161 double chffpv2 = chefrompv2 / rawP4.energy();
162 double chffpv3 = chefrompv3 / rawP4.energy();
164 return std::tuple<float, float, float, float>(chffpv0, chffpv1, chffpv2, chffpv3);
167 template <
typename T>
171 desc.
add<
edm::InputTag>(
"srcPF")->setComment(
"PF candidate input collection");
172 desc.
add<
double>(
"maxDR")->setComment(
"Maximum DR to consider for jet-->pf cand association");
174 descriptions.
add(modname, desc);
const LorentzVector correctedP4(const std::string &level, const std::string &flavor="none", const std::string &set="") const
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
void fillValueMaps(std::string valueName, const std::vector< float > &values, edm::Handle< edm::View< pat::Jet >> &srcJet, edm::Event &iEvent) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
BetaStarVarProducer< pat::PackedCandidate > BetaStarPackedCandidateVarProducer
void insert(const H &h, I begin, I end)
~BetaStarVarProducer() override
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< edm::View< pat::Jet > > srcJet_
#define DEFINE_FWK_MODULE(type)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
edm::EDGetTokenT< edm::View< T > > srcPF_
double energy() const override
energy
const reco::Candidate * daughter(size_t i) const override
ParameterDescriptionBase * add(U const &iLabel, T const &value)
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
std::tuple< float, float, float, float > calculateCHSEnergies(edm::Ptr< pat::Jet > const &jet, double chefrompv0) const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
size_t numberOfDaughters() const override
BetaStarVarProducer(const edm::ParameterSet &iConfig)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)