51 std::vector<TFile*>& inputFilesToDelete) {
53 throw cms::Exception(
"PATTauDiscriminationByIsolationMVARun2::loadMVA")
54 <<
" Failed to find File = " << inputFileName <<
" !!\n";
60 throw cms::Exception(
"PATTauDiscriminationByIsolationMVARun2::loadMVA")
61 <<
" Failed to load MVA = " << mvaName.data() <<
" from file = " << inputFileName.
fullPath().data()
64 inputFilesToDelete.push_back(inputFile);
83 moduleLabel_(cfg.getParameter<
std::
string>(
"@module_label")),
88 loadMVAfromDB_ = cfg.
getParameter<
bool>(
"loadMVAfromDB");
89 if (!loadMVAfromDB_) {
93 if (mvaOpt_string ==
"oldDMwoLT")
95 else if (mvaOpt_string ==
"oldDMwLT")
97 else if (mvaOpt_string ==
"newDMwoLT")
99 else if (mvaOpt_string ==
"newDMwLT")
101 else if (mvaOpt_string ==
"DBoldDMwLT")
103 else if (mvaOpt_string ==
"DBnewDMwLT")
105 else if (mvaOpt_string ==
"PWoldDMwLT")
107 else if (mvaOpt_string ==
"PWnewDMwLT")
109 else if (mvaOpt_string ==
"DBoldDMwLTwGJ")
111 else if (mvaOpt_string ==
"DBnewDMwLTwGJ")
115 <<
" Invalid Configuration Parameter 'mvaOpt' = " << mvaOpt_string <<
" !!\n";
118 mvaInput_ =
new float[6];
120 mvaInput_ =
new float[12];
123 mvaInput_ =
new float[23];
135 produces<pat::PATTauDiscriminator>(
"category");
140 double discriminate(
const TauRef&)
const override;
148 for (std::vector<TFile*>::iterator it = inputFilesToDelete_.begin(); it != inputFilesToDelete_.end(); ++it) {
180 if (loadMVAfromDB_) {
183 mvaReader_ = loadMVAfromFile(inputFileName_, mvaName_, inputFilesToDelete_);
191 double PATTauDiscriminationByMVAIsolationRun2::discriminate(
const TauRef&
tau)
const {
194 category_output_->setValue(tauIndex_, category);
197 if (tau->leadChargedHadrCand().
isNull())
206 photonPtSumOutsideSignalCone_,
207 footprintCorrection_)) {
208 double mvaValue = mvaReader_->GetClassifier(mvaInput_);
210 edm::LogPrint(
"PATTauDiscByMVAIsolRun2") <<
"<PATTauDiscriminationByMVAIsolationRun2::discriminate>:";
211 edm::LogPrint(
"PATTauDiscByMVAIsolRun2") <<
" tau: Pt = " << tau->pt() <<
", eta = " << tau->eta();
213 <<
" isolation: charged = " << tau->tauID(chargedIsoPtSums_)
214 <<
", neutral = " << tau->tauID(neutralIsoPtSums_) <<
", PUcorr = " << tau->tauID(puCorrPtSums_);
215 edm::LogPrint(
"PATTauDiscByMVAIsolRun2") <<
" decay mode = " << tau->decayMode();
217 <<
" impact parameter: distance = " << tau->dxy() <<
", significance = " << tau->dxy_Sig();
218 edm::LogPrint(
"PATTauDiscByMVAIsolRun2") <<
" has decay vertex = " << tau->hasSecondaryVertex() <<
":" 219 <<
", significance = " << tau->flightLengthSig();
220 edm::LogPrint(
"PATTauDiscByMVAIsolRun2") <<
"--> mvaValue = " << mvaValue;
227 void PATTauDiscriminationByMVAIsolationRun2::endEvent(
edm::Event& evt) {
237 desc.
add<
bool>(
"loadMVAfromDB");
246 desc.
add<
int>(
"verbosity", 0);
248 fillProducerDescriptions(desc);
250 descriptions.
add(
"patTauDiscriminationByMVAIsolationRun2", desc);
std::string footprintCorrection_
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
edm::RefProd< TauCollection > TauRefProd
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::unique_ptr< pat::PATTauDiscriminator > category_output_
edm::Handle< TauCollection > taus_
const GBRForest * mvaReader_
bool fillIsoMVARun2Inputs(float *mvaInput, const pat::Tau &tau, int mvaOpt, const std::string &nameCharged, const std::string &nameNeutral, const std::string &namePu, const std::string &nameOutside, const std::string &nameFootprint)
std::string photonPtSumOutsideSignalCone_
std::string chargedIsoPtSums_
#define DEFINE_FWK_MODULE(type)
PATTauDiscriminationByMVAIsolationRun2(const edm::ParameterSet &cfg)
~PATTauDiscriminationByMVAIsolationRun2() override
LocationCode location() const
Where was the file found?
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isNull() const
Checks for null.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::string neutralIsoPtSums_
std::vector< TFile * > inputFilesToDelete_
std::string puCorrPtSums_
std::string fullPath() const
T const * product() const
edm::FileInPath inputFileName_