CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Attributes
reco::tau::RecoTauDiscriminantFromDiscriminator Class Reference
Inheritance diagram for reco::tau::RecoTauDiscriminantFromDiscriminator:
reco::tau::RecoTauDiscriminantPlugin reco::tau::RecoTauEventHolderPlugin reco::tau::RecoTauNamedPlugin

Public Member Functions

void beginEvent () override
 
std::vector< double > operator() (const reco::PFTauRef &tau) const override
 
 RecoTauDiscriminantFromDiscriminator (const edm::ParameterSet &pset)
 
- Public Member Functions inherited from reco::tau::RecoTauDiscriminantPlugin
 RecoTauDiscriminantPlugin (const edm::ParameterSet &pset)
 
 ~RecoTauDiscriminantPlugin () override
 
- Public Member Functions inherited from reco::tau::RecoTauEventHolderPlugin
const edm::Eventevt () const
 
edm::Eventevt ()
 
const edm::EventSetupevtSetup () const
 
 RecoTauEventHolderPlugin (const edm::ParameterSet &pset)
 
void setup (edm::Event &, const edm::EventSetup &)
 
 ~RecoTauEventHolderPlugin () override
 
- Public Member Functions inherited from reco::tau::RecoTauNamedPlugin
const std::string & name () const
 
 RecoTauNamedPlugin (const edm::ParameterSet &pset)
 
virtual ~RecoTauNamedPlugin ()
 

Private Types

typedef std::pair< edm::InputTag, edm::Handle< reco::PFTauDiscriminator > > DiscInfo
 

Private Attributes

std::vector< DiscInfodiscriminators_
 
double max_
 
double min_
 
bool takeAbs_
 

Detailed Description

Definition at line 18 of file RecoTauDiscriminantFromDiscriminator.cc.

Member Typedef Documentation

Definition at line 28 of file RecoTauDiscriminantFromDiscriminator.cc.

Constructor & Destructor Documentation

reco::tau::RecoTauDiscriminantFromDiscriminator::RecoTauDiscriminantFromDiscriminator ( const edm::ParameterSet pset)
explicit

Definition at line 32 of file RecoTauDiscriminantFromDiscriminator.cc.

References pfDeepCMVADiscriminatorsJetTags_cfi::discriminators, discriminators_, edm::ParameterSet::getParameter(), max_, min_, GlobalPosition_Frontier_DevDB_cff::tag, and takeAbs_.

Member Function Documentation

void reco::tau::RecoTauDiscriminantFromDiscriminator::beginEvent ( )
overridevirtual

Reimplemented from reco::tau::RecoTauDiscriminantPlugin.

Definition at line 47 of file RecoTauDiscriminantFromDiscriminator.cc.

References discriminators_, reco::tau::RecoTauEventHolderPlugin::evt(), and edm::Event::getByLabel().

47  {
48  for(auto& discInfo : discriminators_) {
49  evt()->getByLabel(discInfo.first, discInfo.second);
50  }
51 }
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:480
std::vector< double > reco::tau::RecoTauDiscriminantFromDiscriminator::operator() ( const reco::PFTauRef tau) const
overridevirtual

Implements reco::tau::RecoTauDiscriminantPlugin.

Definition at line 53 of file RecoTauDiscriminantFromDiscriminator.cc.

References DEFINE_EDM_PLUGIN, TtSemiLepEvtBuilder_cfi::disc, discriminators_, relativeConstraints::error, mps_fire::i, edm::Ref< C, T, F >::id(), edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::keyProduct(), max_, min_, mps_fire::result, and edm::second().

54  {
55  edm::ProductID tauProdId = tau.id();
56  double result = -999;
57  bool foundGoodDiscriminator = false;
58  for (size_t i = 0; i < discriminators_.size(); ++i) {
59  // Check if the discriminator actually exists
60  if (!discriminators_[i].second.isValid())
61  continue;
62  const reco::PFTauDiscriminator& disc = *(discriminators_[i].second);
63  if (tauProdId == disc.keyProduct().id()) {
64  foundGoodDiscriminator = true;
65  result = (disc)[tau];
66  break;
67  }
68  }
69  // In case no discriminator is found.
70  if (!foundGoodDiscriminator) {
71  std::stringstream error;
72  error << "Couldn't find a PFTauDiscriminator usable with given tau."
73  << std::endl << " Input tau has product id: " << tau.id() << std::endl;
74  for (size_t i = 0; i < discriminators_.size(); ++i ) {
75  error << "disc: " << discriminators_[i].first;
76  error << " isValid: " << discriminators_[i].second.isValid();
77  if (discriminators_[i].second.isValid()) {
78  error << " product: " << discriminators_[i].second->keyProduct().id();
79  }
80  error << std::endl;
81  }
82  edm::LogError("BadDiscriminatorConfiguration") << error.str();
83  }
84  if (result < min_)
85  result = min_;
86  if (result > max_)
87  result = max_;
88  return std::vector<double>(1, result);
89 }
ProductID id() const
Accessor for product ID.
Definition: Ref.h:257
U second(std::pair< T, U > const &p)
KeyRefProd const & keyProduct() const

Member Data Documentation

std::vector<DiscInfo> reco::tau::RecoTauDiscriminantFromDiscriminator::discriminators_
private
double reco::tau::RecoTauDiscriminantFromDiscriminator::max_
private
double reco::tau::RecoTauDiscriminantFromDiscriminator::min_
private
bool reco::tau::RecoTauDiscriminantFromDiscriminator::takeAbs_
private