CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Attributes
PFRecoTauDiscriminationByIsolationMVA2 Class Reference
Inheritance diagram for PFRecoTauDiscriminationByIsolationMVA2:
TauDiscriminationProducerBase< TauType, TauDiscriminator > edm::stream::EDProducer<>

Public Member Functions

void beginEvent (const edm::Event &, const edm::EventSetup &) override
 
double discriminate (const PFTauRef &) const override
 
void endEvent (edm::Event &) override
 
 PFRecoTauDiscriminationByIsolationMVA2 (const edm::ParameterSet &cfg)
 
 ~PFRecoTauDiscriminationByIsolationMVA2 () override
 
- Public Member Functions inherited from TauDiscriminationProducerBase< TauType, TauDiscriminator >
virtual double discriminate (const TauRef &tau) const =0
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 TauDiscriminationProducerBase (const edm::ParameterSet &iConfig)
 
 TauDiscriminationProducerBase ()
 
 ~TauDiscriminationProducerBase () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from TauDiscriminationProducerBase< TauType, TauDiscriminator >
static void fillProducerDescriptions (edm::ParameterSetDescription &desc)
 

Private Types

enum  { kOldDMwoLT, kOldDMwLT, kNewDMwoLT, kNewDMwLT }
 
typedef edm::AssociationVector< reco::PFTauRefProd, std::vector< reco::PFTauTransverseImpactParameterRef > > PFTauTIPAssociationByRef
 

Private Attributes

std::unique_ptr< PFTauDiscriminatorcategory_output_
 
edm::EDGetTokenT< reco::PFTauDiscriminatorChargedIsoPtSum_token
 
edm::Handle< reco::PFTauDiscriminatorchargedIsoPtSums_
 
edm::FileInPath inputFileName_
 
std::vector< TFile * > inputFilesToDelete_
 
bool loadMVAfromDB_
 
std::string moduleLabel_
 
float * mvaInput_
 
std::string mvaName_
 
int mvaOpt_
 
const GBRForestmvaReader_
 
edm::EDGetTokenT< reco::PFTauDiscriminatorNeutralIsoPtSum_token
 
edm::Handle< reco::PFTauDiscriminatorneutralIsoPtSums_
 
edm::EDGetTokenT< reco::PFTauDiscriminatorPUcorrPtSum_token
 
edm::Handle< reco::PFTauDiscriminatorpuCorrPtSums_
 
edm::Handle< PFTauTIPAssociationByReftauLifetimeInfos
 
edm::Handle< TauCollectiontaus_
 
edm::EDGetTokenT< PFTauTIPAssociationByRefTauTransverseImpactParameters_token
 
int verbosity_
 

Additional Inherited Members

- Public Types inherited from TauDiscriminationProducerBase< TauType, TauDiscriminator >
typedef std::vector< TauType > TauCollection
 
typedef edm::Ref< TauCollectionTauRef
 
typedef edm::RefProd< TauCollectionTauRefProd
 
- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Protected Attributes inherited from TauDiscriminationProducerBase< TauType, TauDiscriminator >
std::string moduleLabel_
 
double prediscriminantFailValue_
 
edm::EDGetTokenT< TauCollectionTau_token
 
size_t tauIndex_
 
edm::InputTag TauProducer_
 

Detailed Description

Definition at line 69 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

Member Typedef Documentation

Definition at line 143 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

Member Enumeration Documentation

anonymous enum
private

Constructor & Destructor Documentation

PFRecoTauDiscriminationByIsolationMVA2::PFRecoTauDiscriminationByIsolationMVA2 ( const edm::ParameterSet cfg)
inlineexplicit

Definition at line 71 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

References Exception, edm::ParameterSet::getParameter(), reco::tau::kNewDMwLT, reco::tau::kNewDMwoLT, reco::tau::kOldDMwLT, reco::tau::kOldDMwoLT, and AlCaHLTBitMon_QueryRunRegistry::string.

73  moduleLabel_(cfg.getParameter<std::string>("@module_label")),
74  mvaReader_(nullptr),
75  mvaInput_(nullptr),
77  mvaName_ = cfg.getParameter<std::string>("mvaName");
78  loadMVAfromDB_ = cfg.getParameter<bool>("loadMVAfromDB");
79  if (!loadMVAfromDB_) {
80  inputFileName_ = cfg.getParameter<edm::FileInPath>("inputFileName");
81  }
82  std::string mvaOpt_string = cfg.getParameter<std::string>("mvaOpt");
83  if (mvaOpt_string == "oldDMwoLT")
85  else if (mvaOpt_string == "oldDMwLT")
87  else if (mvaOpt_string == "newDMwoLT")
89  else if (mvaOpt_string == "newDMwLT")
91  else
92  throw cms::Exception("PFRecoTauDiscriminationByIsolationMVA2")
93  << " Invalid Configuration Parameter 'mvaOpt' = " << mvaOpt_string << " !!\n";
94 
95  if (mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT)
96  mvaInput_ = new float[6];
97  else if (mvaOpt_ == kOldDMwLT || mvaOpt_ == kNewDMwLT)
98  mvaInput_ = new float[12];
99  else
100  assert(0);
101 
103  consumes<PFTauTIPAssociationByRef>(cfg.getParameter<edm::InputTag>("srcTauTransverseImpactParameters"));
104 
105  ChargedIsoPtSum_token = consumes<reco::PFTauDiscriminator>(cfg.getParameter<edm::InputTag>("srcChargedIsoPtSum"));
106  NeutralIsoPtSum_token = consumes<reco::PFTauDiscriminator>(cfg.getParameter<edm::InputTag>("srcNeutralIsoPtSum"));
107  PUcorrPtSum_token = consumes<reco::PFTauDiscriminator>(cfg.getParameter<edm::InputTag>("srcPUcorrPtSum"));
108 
109  verbosity_ = cfg.getParameter<int>("verbosity");
110 
111  produces<PFTauDiscriminator>("category");
112  }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::PFTauDiscriminator > ChargedIsoPtSum_token
edm::EDGetTokenT< reco::PFTauDiscriminator > NeutralIsoPtSum_token
edm::EDGetTokenT< PFTauTIPAssociationByRef > TauTransverseImpactParameters_token
TauDiscriminationProducerBase< reco::PFTau, reco::PFTauDiscriminator > PFTauDiscriminationProducerBase
edm::EDGetTokenT< reco::PFTauDiscriminator > PUcorrPtSum_token
PFRecoTauDiscriminationByIsolationMVA2::~PFRecoTauDiscriminationByIsolationMVA2 ( )
inlineoverride

Definition at line 120 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

References fillDescriptions().

120  {
121  if (!loadMVAfromDB_)
122  delete mvaReader_;
123  delete[] mvaInput_;
124  for (std::vector<TFile*>::iterator it = inputFilesToDelete_.begin(); it != inputFilesToDelete_.end(); ++it) {
125  delete (*it);
126  }
127  }

Member Function Documentation

void PFRecoTauDiscriminationByIsolationMVA2::beginEvent ( const edm::Event evt,
const edm::EventSetup es 
)
overridevirtual

Reimplemented from TauDiscriminationProducerBase< TauType, TauDiscriminator >.

Definition at line 162 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

References edm::Event::getByToken(), and taus_updatedMVAIds_cff::loadMVAfromDB.

162  {
163  if (!mvaReader_) {
164  if (loadMVAfromDB_) {
166  } else {
168  }
169  }
170 
172 
176 
177  evt.getByToken(Tau_token, taus_);
179 }
edm::RefProd< TauCollection > TauRefProd
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
edm::Handle< reco::PFTauDiscriminator > chargedIsoPtSums_
edm::Handle< PFTauTIPAssociationByRef > tauLifetimeInfos
edm::EDGetTokenT< reco::PFTauDiscriminator > ChargedIsoPtSum_token
edm::EDGetTokenT< reco::PFTauDiscriminator > NeutralIsoPtSum_token
edm::EDGetTokenT< PFTauTIPAssociationByRef > TauTransverseImpactParameters_token
edm::EDGetTokenT< TauCollection > Tau_token
edm::Handle< reco::PFTauDiscriminator > neutralIsoPtSums_
edm::EDGetTokenT< reco::PFTauDiscriminator > PUcorrPtSum_token
double PFRecoTauDiscriminationByIsolationMVA2::discriminate ( const PFTauRef tau) const
override

Definition at line 181 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

References Abs(), taus_updatedMVAIds_cff::category, tauProducer_cfi::chargedIsoPtSum, reco::PFTauTransverseImpactParameter::dxy(), reco::PFTauTransverseImpactParameter::dxy_Sig(), MillePedeFileConverter_cfg::e, reco::PFTauTransverseImpactParameter::flightLength(), reco::PFTauTransverseImpactParameter::flightLengthSig(), reco::PFTauTransverseImpactParameter::hasSecondaryVertex(), edm::Ref< C, T, F >::isNull(), reco::tau::kNewDMwLT, reco::tau::kNewDMwoLT, reco::tau::kOldDMwLT, reco::tau::kOldDMwoLT, Max(), Min(), tauProducer_cfi::neutralIsoPtSum, tauProducer_cfi::puCorrPtSum, Sign(), and metsig::tau.

181  {
182  // CV: define dummy category index in order to use RecoTauDiscriminantCutMultiplexer module to appy WP cuts
183  double category = 0.;
184  category_output_->setValue(tauIndex_, category);
185 
186  // CV: computation of MVA value requires presence of leading charged hadron
187  if (tau->leadChargedHadrCand().isNull())
188  return 0.;
189 
190  int tauDecayMode = tau->decayMode();
191 
192  if (((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT) &&
193  (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) ||
194  ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT) &&
195  (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 ||
196  tauDecayMode == 10))) {
197  double chargedIsoPtSum = (*chargedIsoPtSums_)[tau];
198  double neutralIsoPtSum = (*neutralIsoPtSums_)[tau];
199  double puCorrPtSum = (*puCorrPtSums_)[tau];
200 
201  const reco::PFTauTransverseImpactParameter& tauLifetimeInfo = *(*tauLifetimeInfos)[tau];
202 
203  double decayDistX = tauLifetimeInfo.flightLength().x();
204  double decayDistY = tauLifetimeInfo.flightLength().y();
205  double decayDistZ = tauLifetimeInfo.flightLength().z();
206  double decayDistMag = TMath::Sqrt(decayDistX * decayDistX + decayDistY * decayDistY + decayDistZ * decayDistZ);
207 
208  if (mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT) {
209  mvaInput_[0] = TMath::Log(TMath::Max(1., Double_t(tau->pt())));
210  mvaInput_[1] = TMath::Abs(tau->eta());
211  mvaInput_[2] = TMath::Log(TMath::Max(1.e-2, chargedIsoPtSum));
212  mvaInput_[3] = TMath::Log(TMath::Max(1.e-2, neutralIsoPtSum - 0.125 * puCorrPtSum));
213  mvaInput_[4] = TMath::Log(TMath::Max(1.e-2, puCorrPtSum));
214  mvaInput_[5] = tauDecayMode;
215  } else if (mvaOpt_ == kOldDMwLT || mvaOpt_ == kNewDMwLT) {
216  mvaInput_[0] = TMath::Log(TMath::Max(1., Double_t(tau->pt())));
217  mvaInput_[1] = TMath::Abs(tau->eta());
218  mvaInput_[2] = TMath::Log(TMath::Max(1.e-2, chargedIsoPtSum));
219  mvaInput_[3] = TMath::Log(TMath::Max(1.e-2, neutralIsoPtSum - 0.125 * puCorrPtSum));
220  mvaInput_[4] = TMath::Log(TMath::Max(1.e-2, puCorrPtSum));
221  mvaInput_[5] = tauDecayMode;
222  mvaInput_[6] = TMath::Sign(+1., tauLifetimeInfo.dxy());
223  mvaInput_[7] = TMath::Sqrt(TMath::Abs(TMath::Min(1., tauLifetimeInfo.dxy())));
224  mvaInput_[8] = TMath::Min(10., TMath::Abs(tauLifetimeInfo.dxy_Sig()));
225  mvaInput_[9] = (tauLifetimeInfo.hasSecondaryVertex()) ? 1. : 0.;
226  mvaInput_[10] = TMath::Sqrt(decayDistMag);
227  mvaInput_[11] = TMath::Min(10., tauLifetimeInfo.flightLengthSig());
228  }
229 
230  double mvaValue = mvaReader_->GetClassifier(mvaInput_);
231  if (verbosity_) {
232  edm::LogPrint("PFTauDiscByMVAIsol2") << "<PFRecoTauDiscriminationByIsolationMVA2::discriminate>:";
233  edm::LogPrint("PFTauDiscByMVAIsol2") << " tau: Pt = " << tau->pt() << ", eta = " << tau->eta();
234  edm::LogPrint("PFTauDiscByMVAIsol2") << " isolation: charged = " << chargedIsoPtSum
235  << ", neutral = " << neutralIsoPtSum << ", PUcorr = " << puCorrPtSum;
236  edm::LogPrint("PFTauDiscByMVAIsol2") << " decay mode = " << tauDecayMode;
237  edm::LogPrint("PFTauDiscByMVAIsol2") << " impact parameter: distance = " << tauLifetimeInfo.dxy()
238  << ", significance = " << tauLifetimeInfo.dxy_Sig();
239  edm::LogPrint("PFTauDiscByMVAIsol2")
240  << " has decay vertex = " << tauLifetimeInfo.hasSecondaryVertex() << ":"
241  << " distance = " << decayDistMag << ", significance = " << tauLifetimeInfo.flightLengthSig();
242  edm::LogPrint("PFTauDiscByMVAIsol2") << "--> mvaValue = " << mvaValue;
243  }
244  return mvaValue;
245  } else {
246  return -1.;
247  }
248 }
T Sign(T A, T B)
Definition: MathUtil.h:54
T Min(T a, T b)
Definition: MathUtil.h:39
T Abs(T a)
Definition: MathUtil.h:49
bool isNull() const
Checks for null.
Definition: Ref.h:235
T Max(T a, T b)
Definition: MathUtil.h:44
double GetClassifier(const float *vector) const
Definition: GBRForest.h:34
void PFRecoTauDiscriminationByIsolationMVA2::endEvent ( edm::Event evt)
overridevirtual

Reimplemented from TauDiscriminationProducerBase< TauType, TauDiscriminator >.

Definition at line 250 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

References eostools::move(), and edm::Event::put().

250  {
251  // add all category indices to event
252  evt.put(std::move(category_output_), "category");
253 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
def move(src, dest)
Definition: eostools.py:511
void PFRecoTauDiscriminationByIsolationMVA2::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 255 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addOptional(), DEFINE_FWK_MODULE, and AlCaHLTBitMon_QueryRunRegistry::string.

255  {
256  // pfRecoTauDiscriminationByIsolationMVA2
258 
259  desc.add<std::string>("mvaName");
260  desc.add<bool>("loadMVAfromDB");
261  desc.addOptional<edm::FileInPath>("inputFileName");
262  desc.add<std::string>("mvaOpt");
263 
264  desc.add<edm::InputTag>("srcTauTransverseImpactParameters");
265  desc.add<edm::InputTag>("srcChargedIsoPtSum");
266  desc.add<edm::InputTag>("srcNeutralIsoPtSum");
267  desc.add<edm::InputTag>("srcPUcorrPtSum");
268  desc.add<int>("verbosity", 0);
269 
270  fillProducerDescriptions(desc); // inherited from the base
271 
272  descriptions.add("pfRecoTauDiscriminationByIsolationMVA2", desc);
273 }
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
static void fillProducerDescriptions(edm::ParameterSetDescription &desc)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

std::unique_ptr<PFTauDiscriminator> PFRecoTauDiscriminationByIsolationMVA2::category_output_
private

Definition at line 155 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::EDGetTokenT<reco::PFTauDiscriminator> PFRecoTauDiscriminationByIsolationMVA2::ChargedIsoPtSum_token
private

Definition at line 147 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::Handle<reco::PFTauDiscriminator> PFRecoTauDiscriminationByIsolationMVA2::chargedIsoPtSums_
private

Definition at line 148 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::FileInPath PFRecoTauDiscriminationByIsolationMVA2::inputFileName_
private

Definition at line 136 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

std::vector<TFile*> PFRecoTauDiscriminationByIsolationMVA2::inputFilesToDelete_
private

Definition at line 157 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

bool PFRecoTauDiscriminationByIsolationMVA2::loadMVAfromDB_
private

Definition at line 135 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

std::string PFRecoTauDiscriminationByIsolationMVA2::moduleLabel_
private
float* PFRecoTauDiscriminationByIsolationMVA2::mvaInput_
private

Definition at line 140 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

std::string PFRecoTauDiscriminationByIsolationMVA2::mvaName_
private

Definition at line 134 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

int PFRecoTauDiscriminationByIsolationMVA2::mvaOpt_
private

Definition at line 139 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

const GBRForest* PFRecoTauDiscriminationByIsolationMVA2::mvaReader_
private

Definition at line 137 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::EDGetTokenT<reco::PFTauDiscriminator> PFRecoTauDiscriminationByIsolationMVA2::NeutralIsoPtSum_token
private

Definition at line 149 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::Handle<reco::PFTauDiscriminator> PFRecoTauDiscriminationByIsolationMVA2::neutralIsoPtSums_
private

Definition at line 150 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::EDGetTokenT<reco::PFTauDiscriminator> PFRecoTauDiscriminationByIsolationMVA2::PUcorrPtSum_token
private

Definition at line 151 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::Handle<reco::PFTauDiscriminator> PFRecoTauDiscriminationByIsolationMVA2::puCorrPtSums_
private

Definition at line 152 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::Handle<PFTauTIPAssociationByRef> PFRecoTauDiscriminationByIsolationMVA2::tauLifetimeInfos
private

Definition at line 145 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::Handle<TauCollection> PFRecoTauDiscriminationByIsolationMVA2::taus_
private

Definition at line 154 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

edm::EDGetTokenT<PFTauTIPAssociationByRef> PFRecoTauDiscriminationByIsolationMVA2::TauTransverseImpactParameters_token
private

Definition at line 144 of file PFRecoTauDiscriminationByMVAIsolation2.cc.

int PFRecoTauDiscriminationByIsolationMVA2::verbosity_
private

Definition at line 159 of file PFRecoTauDiscriminationByMVAIsolation2.cc.