44 #include <Math/VectorUtil.h> 72 template<
class T,
class V>
164 :
isMC_ (iConfig.getParameter<
bool>(
"isMC"))
165 ,
deltaR_ (iConfig.getParameter<double>(
"deltaR"))
166 ,
ptThreshold_ (iConfig.getParameter<double>(
"ptThreshold"))
284 int bx =
pu.getBunchCrossing();
312 for(
size_t iEle = 0; iEle <
src->size(); ++iEle) {
316 const auto ele =
src->ptrAt(iEle);
318 eleQ_ = ele->charge();
319 ele3Q_ = ele->chargeInfo().isGsfCtfScPixConsistent;
325 for (
int iVar = 0; iVar <
nVars_; ++iVar) {
364 template<
class T,
class V>
375 for(
size_t i=0;
i<genParticles->size();
i++){
376 const auto particle = genParticles->ptrAt(
i);
378 if(
abs(particle->pdgId()) != 11 || particle->status() != 1 )
388 if( genIdx == -1 || dR >=
deltaR_ ) {
392 const auto closestElectron = genParticles->ptrAt(genIdx);
394 if( closestElectron->fromHardProcessFinalState() )
397 if( closestElectron->isDirectHardProcessTauDecayProductFinalState() )
418 desc.
add<
bool>(
"isMC",
true);
419 desc.
add<
double>(
"deltaR", 0.1);
420 desc.
add<
double>(
"ptThreshold", 5.0);
421 desc.
addUntracked<std::vector<std::string>>(
"eleMVAs", {});
422 desc.
addUntracked<std::vector<std::string>>(
"eleMVALabels", {});
423 desc.
addUntracked<std::vector<std::string>>(
"eleMVAValMaps", {});
424 desc.
addUntracked<std::vector<std::string>>(
"eleMVAValMapLabels", {});
425 desc.
addUntracked<std::vector<std::string>>(
"eleMVACats", {});
426 desc.
addUntracked<std::vector<std::string>>(
"eleMVACatLabels", {});
static const std::string kSharedResource
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
EventNumber_t event() const
const double ptThreshold_
const std::string & getName(int index) const
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
const MVAVariableHelper< reco::GsfElectron > variableHelper_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
const MultiTokenT< edm::View< reco::GenParticle > > genParticles_
edm::LuminosityBlockNumber_t luminosityBlock() const
T * make(const Args &...args) const
make new ROOT object
float getValue(int index, const ParticleType &particle, const std::vector< float > &auxVariables) const
std::vector< edm::EDGetTokenT< edm::ValueMap< int > > > mvaCatTokens_
std::vector< float > mvaValues_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
void addDefault(ParameterSetDescription const &psetDescription)
~ElectronMVANtuplizer() override
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::vector< int > mvaPasses_
const std::vector< std::string > valMapBranchNames_
Abs< T >::type abs(const T &t)
std::vector< int > mvaCats_
ElectronMVANtuplizer(const edm::ParameterSet &)
int matchToTruth(const T &el, const V &genParticles, int &genIdx)
edm::Handle< T > getValidHandle(const edm::Event &iEvent) const
ParameterDescriptionBase * add(U const &iLabel, T const &value)
const std::vector< std::string > eleMapBranchNames_
const std::vector< float > getAuxVariables(edm::Ptr< ParticleType > const &particlePtr, const edm::Event &iEvent) const
std::vector< float > vars_
const MultiTokenT< std::vector< PileupSummaryInfo > > pileup_
MVAVariableManager< reco::GsfElectron > mvaVarMngr_
std::vector< edm::EDGetTokenT< edm::ValueMap< float > > > valMapTokens_
void analyze(const edm::Event &, const edm::EventSetup &) override
edm::Handle< T > getHandle(const edm::Event &iEvent) const
const MultiTokenT< std::vector< reco::Vertex > > vertices_
const std::vector< std::string > mvaCatTags_
std::vector< edm::EDGetTokenT< edm::ValueMap< bool > > > eleMapTokens_
const MultiTokenT< edm::View< reco::GsfElectron > > src_
const std::vector< std::string > mvaCatBranchNames_
const std::vector< std::string > eleMapTags_
const std::vector< std::string > valMapTags_