Skip to content

Commit

Permalink
2nd set of review comments
Browse files Browse the repository at this point in the history
mbluj committed May 19, 2020
1 parent 08cc970 commit d1e19f2
Showing 3 changed files with 28 additions and 52 deletions.
13 changes: 4 additions & 9 deletions RecoTauTag/RecoTau/interface/TauDiscriminationProducerBase.h
Original file line number Diff line number Diff line change
@@ -93,6 +93,10 @@ class TauDiscriminationProducerBase : public edm::stream::EDProducer<> {

static void fillProducerDescriptions(edm::ParameterSetDescription& desc);

/// helper method to retrieve tau type name, e.g. to build correct cfi getter
//string (i.e. PFTau/PATTauProducer)
static std::string getTauTypeString();

protected:
//value given to taus that fail prediscriminants
double prediscriminantFailValue_;
@@ -125,13 +129,4 @@ typedef TauDiscriminationProducerBase<pat::Tau,
PATTauDiscriminationContainerProducerBase;
typedef TauDiscriminationProducerBase<pat::Tau, pat::PATTauDiscriminator> PATTauDiscriminationProducerBase;

/// helper function retrieve the correct cfi getter string (ie PFTauProducer)
//for this tau type
template <class TauType>
std::string getProducerString() {
// this generic one shoudl never be called.
// these are specialized in TauDiscriminationProducerBase.cc
throw cms::Exception("TauDiscriminationProducerBase")
<< "Unsupported TauType used. You must use either PFTau or PATTau.";
}
#endif
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
/** \class TauDiscriminationAgainstElectronDeadECALBase
/** \class TauDiscriminationAgainstElectronDeadECAL
*
* Base class for producing PFTau and PATTau discriminators
*
* Flag tau candidates reconstructed near dead ECAL channels,
* Template class for producing PFTau and PATTau discriminators which
* flag tau candidates reconstructed near dead ECAL channels,
* in order to reduce e -> tau fakes not rejected by anti-e MVA discriminator
*
* The motivation for this flag is this presentation:
@@ -21,51 +20,34 @@
#include "RecoTauTag/RecoTau/interface/TauDiscriminationProducerBase.h"
#include "RecoTauTag/RecoTau/interface/AntiElectronDeadECAL.h"

// helper function retrieve the correct tau type name
template <class TauType>
std::string getTauTypeNameString(bool capitalise) {
// this generic one shoudl never be called.
throw cms::Exception("TauDiscriminationAgainstElectronDeadECALBase")
<< "Unsupported TauType used. You must use either reco::PFTau or pat::Tau.";
}
// template specialiazation to get the correct (PF/PAT)Tau type names
template <>
std::string getTauTypeNameString<reco::PFTau>(bool capitalise) {
return capitalise ? "PFRecoTau" : "pfRecoTau";
}
template <>
std::string getTauTypeNameString<pat::Tau>(bool capitalise) {
return capitalise ? "PATTau" : "patTau";
}

template <class TauType, class TauDiscriminator>
class TauDiscriminationAgainstElectronDeadECALBase : public TauDiscriminationProducerBase<TauType, TauDiscriminator> {
class TauDiscriminationAgainstElectronDeadECAL : public TauDiscriminationProducerBase<TauType, TauDiscriminator> {
public:
typedef std::vector<TauType> TauCollection;
typedef edm::Ref<TauCollection> TauRef;
explicit TauDiscriminationAgainstElectronDeadECALBase(const edm::ParameterSet& cfg)
explicit TauDiscriminationAgainstElectronDeadECAL(const edm::ParameterSet& cfg)
: TauDiscriminationProducerBase<TauType, TauDiscriminator>::TauDiscriminationProducerBase(cfg),
moduleLabel_(cfg.getParameter<std::string>("@module_label")),
verbosity_(cfg.getParameter<int>("verbosity")),
antiElectronDeadECAL_(cfg) {}
~TauDiscriminationAgainstElectronDeadECALBase() override {}
~TauDiscriminationAgainstElectronDeadECAL() override {}

void beginEvent(const edm::Event& evt, const edm::EventSetup& es) override { antiElectronDeadECAL_.beginEvent(es); }

double discriminate(const TauRef& tau) const override {
if (verbosity_) {
edm::LogPrint(getTauTypeNameString<TauType>(true) + "AgainstEleDeadECAL")
<< "<" + getTauTypeNameString<TauType>(true) + "AgainstElectronDeadECAL::discriminate>:";
edm::LogPrint(getTauTypeNameString<TauType>(true) + "AgainstEleDeadECAL") << " moduleLabel = " << moduleLabel_;
edm::LogPrint(getTauTypeNameString<TauType>(true) + "AgainstEleDeadECAL")
edm::LogPrint(TauDiscriminationProducerBase<TauType, TauDiscriminator>::getTauTypeString() + "AgainstEleDeadECAL")
<< "<" + TauDiscriminationProducerBase<TauType, TauDiscriminator>::getTauTypeString() + "AgainstElectronDeadECAL::discriminate>:";
edm::LogPrint(TauDiscriminationProducerBase<TauType, TauDiscriminator>::getTauTypeString() + "AgainstEleDeadECAL") << " moduleLabel = " << moduleLabel_;
edm::LogPrint(TauDiscriminationProducerBase<TauType, TauDiscriminator>::getTauTypeString() + "AgainstEleDeadECAL")
<< " tau: Pt = " << tau->pt() << ", eta = " << tau->eta() << ", phi = " << tau->phi();
}
double discriminator = 1.;
if (antiElectronDeadECAL_(tau.get())) {
discriminator = 0.;
}
if (verbosity_) {
edm::LogPrint(getTauTypeNameString<TauType>(true) + "AgainstEleDeadECAL")
edm::LogPrint(TauDiscriminationProducerBase<TauType, TauDiscriminator>::getTauTypeString() + "AgainstEleDeadECAL")
<< "--> discriminator = " << discriminator;
}
return discriminator;
@@ -81,7 +63,7 @@ class TauDiscriminationAgainstElectronDeadECALBase : public TauDiscriminationPro
};

template <class TauType, class TauDiscriminator>
void TauDiscriminationAgainstElectronDeadECALBase<TauType, TauDiscriminator>::fillDescriptions(
void TauDiscriminationAgainstElectronDeadECAL<TauType, TauDiscriminator>::fillDescriptions(
edm::ConfigurationDescriptions& descriptions) {
// {pfReco,pat}TauDiscriminationAgainstElectronDeadECAL
edm::ParameterSetDescription desc;
@@ -94,12 +76,12 @@ void TauDiscriminationAgainstElectronDeadECALBase<TauType, TauDiscriminator>::fi
TauDiscriminationProducerBase<TauType, TauDiscriminator>::fillProducerDescriptions(
desc); // inherited from the base-class

descriptions.add(getTauTypeNameString<TauType>(false) + "DiscriminationAgainstElectronDeadECAL", desc); //base
descriptions.addWithDefaultLabel(desc);
}

typedef TauDiscriminationAgainstElectronDeadECALBase<reco::PFTau, reco::PFTauDiscriminator>
typedef TauDiscriminationAgainstElectronDeadECAL<reco::PFTau, reco::PFTauDiscriminator>
PFRecoTauDiscriminationAgainstElectronDeadECAL;
typedef TauDiscriminationAgainstElectronDeadECALBase<pat::Tau, pat::PATTauDiscriminator>
typedef TauDiscriminationAgainstElectronDeadECAL<pat::Tau, pat::PATTauDiscriminator>
PATTauDiscriminationAgainstElectronDeadECAL;

DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstElectronDeadECAL);
19 changes: 9 additions & 10 deletions RecoTauTag/RecoTau/src/TauDiscriminationProducerBase.cc
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ TauDiscriminationProducerBase<TauType, TauDiscriminator, TauDiscriminatorDataTyp
TauDiscriminationProducerBase(const edm::ParameterSet& iConfig)
: moduleLabel_(iConfig.getParameter<std::string>("@module_label")) {
// tau collection to discriminate
TauProducer_ = iConfig.getParameter<edm::InputTag>(getProducerString<TauType>());
TauProducer_ = iConfig.getParameter<edm::InputTag>(getTauTypeString()+"Producer");
Tau_token = consumes<TauCollection>(TauProducer_);

// prediscriminant operator
@@ -172,7 +172,7 @@ template <class TauType, class TauDiscriminator, class TauDiscriminatorDataType,
void TauDiscriminationProducerBase<TauType, TauDiscriminator, TauDiscriminatorDataType, ConsumeType>::
fillProducerDescriptions(edm::ParameterSetDescription& desc) {
// helper function, it fills the description of the Producers parameter
desc.add<edm::InputTag>(getProducerString<TauType>(), edm::InputTag("fixme"));
desc.add<edm::InputTag>(getTauTypeString()+"Producer", edm::InputTag("fixme"));
{
edm::ParameterSetDescription pset_prediscriminants;
pset_prediscriminants.add<std::string>("BooleanOperator", "AND");
@@ -191,14 +191,13 @@ void TauDiscriminationProducerBase<TauType, TauDiscriminator, TauDiscriminatorDa
}
}

// template specialiazation to get the correct (PF/PAT)TauProducer names
template <>
std::string getProducerString<PFTau>() {
return "PFTauProducer";
}
template <>
std::string getProducerString<pat::Tau>() {
return "PATTauProducer";
template <class TauType, class TauDiscriminator, class TauDiscriminatorDataType, class ConsumeType>
std::string TauDiscriminationProducerBase<TauType, TauDiscriminator, TauDiscriminatorDataType, ConsumeType>::
getTauTypeString() {
if(std::is_same<TauType, reco::PFTau>::value) return "PFTau";
if(std::is_same<TauType, pat::Tau>::value) return "PATTau";
throw cms::Exception("TauDiscriminationProducerBase")
<< "Unsupported TauType used. You must use either PFTau or PATTau.";
}

// compile our desired types and make available to linker

0 comments on commit d1e19f2

Please sign in to comment.