CMS 3D CMS Logo

JetBProbabilityComputer Class Reference

#include <RecoBTag/ImpactParameter/interface/JetBProbabilityComputer.h>

Inheritance diagram for JetBProbabilityComputer:

JetTagComputer

List of all members.

Public Member Functions

float discriminator (const TagInfoHelper &ti) const
 JetBProbabilityComputer (const edm::ParameterSet &parameters)
double jetProbability (const std::vector< float > &v) const

Private Attributes

double m_cutMaxDecayLen
double m_cutMaxDistToAxis
double m_deltaR
int m_ipType
double m_minTrackProb
unsigned int m_nbTracks
reco::TrackBase::TrackQuality m_trackQuality
int m_trackSign
bool m_useAllQualities


Detailed Description

Definition at line 13 of file JetBProbabilityComputer.h.


Constructor & Destructor Documentation

JetBProbabilityComputer::JetBProbabilityComputer ( const edm::ParameterSet parameters  )  [inline]

Definition at line 16 of file JetBProbabilityComputer.h.

References edm::ParameterSet::getParameter(), m_cutMaxDecayLen, m_cutMaxDistToAxis, m_deltaR, m_ipType, m_minTrackProb, m_nbTracks, m_trackQuality, m_trackSign, m_useAllQualities, reco::TrackBase::qualityByName(), and JetTagComputer::uses().

00017   { 
00018      m_ipType           = parameters.getParameter<int>("impactParameterType");
00019      m_minTrackProb     = parameters.getParameter<double>("minimumProbability");
00020      m_deltaR           = parameters.getParameter<double>("deltaR");
00021      m_trackSign        = parameters.getParameter<int>("trackIpSign");
00022      m_nbTracks         = parameters.getParameter<unsigned int>("numberOfBTracks");
00023      m_cutMaxDecayLen   = parameters.getParameter<double>("maximumDecayLength");
00024      m_cutMaxDistToAxis = parameters.getParameter<double>("maximumDistanceToJetAxis");
00025  
00026      //
00027      // access track quality class; "any" takes everything
00028      //
00029      std::string trackQualityType = parameters.getParameter<std::string>("trackQualityClass"); //used
00030      m_trackQuality =  reco::TrackBase::qualityByName(trackQualityType);
00031      m_useAllQualities = false;
00032      if (trackQualityType == "any" || 
00033          trackQualityType == "Any" || 
00034          trackQualityType == "ANY" ) m_useAllQualities = true;
00035 
00036      uses("ipTagInfos");
00037   }


Member Function Documentation

float JetBProbabilityComputer::discriminator ( const TagInfoHelper ti  )  const [inline, virtual]

log(all);

Reimplemented from JetTagComputer.

Definition at line 39 of file JetBProbabilityComputer.h.

References python::cmstools::all(), b, JetTagComputer::TagInfoHelper::get(), i, reco::TrackIPTagInfo::impactParameterData(), it, reco::JTATagInfo::jet(), jetProbability(), funct::log(), m_cutMaxDecayLen, m_cutMaxDistToAxis, m_deltaR, m_ipType, m_nbTracks, m_trackQuality, m_trackSign, m_useAllQualities, muonGeometry::mag(), p, p4, reco::TrackIPTagInfo::primaryVertex(), reco::TrackIPTagInfo::probabilities(), pv, reco::TrackIPTagInfo::selectedTracks(), python::multivaluedict::sort(), and tracks.

00040    {
00041       const reco::TrackIPTagInfo & tkip = ti.get<reco::TrackIPTagInfo>();
00042       const edm::RefVector<reco::TrackCollection> & tracks(tkip.selectedTracks());
00043       const std::vector<float> & allProbabilities((tkip.probabilities(m_ipType)));
00044       const std::vector<reco::TrackIPTagInfo::TrackIPData> & impactParameters((tkip.impactParameterData()));
00045 
00046       if(tkip.primaryVertex().isNull()) return 0;
00047 
00048       GlobalPoint pv(tkip.primaryVertex()->position().x(),tkip.primaryVertex()->position().y(),tkip.primaryVertex()->position().z());
00049 
00050       std::vector<float> probabilities;
00051       std::vector<float> probabilitiesB;
00052       int i=0;
00053       for(std::vector<float>::const_iterator it = allProbabilities.begin(); it!=allProbabilities.end(); ++it, i++)
00054        {
00055         if (fabs(impactParameters[i].distanceToJetAxis) < m_cutMaxDistToAxis  &&        // distance to JetAxis
00056             (impactParameters[i].closestToJetAxis - pv).mag() < m_cutMaxDecayLen  &&      // max decay len
00057             (m_useAllQualities  == true || (*tracks[i]).quality(m_trackQuality)) // use selected track qualities
00058            )
00059          {
00060     // Use only positive(or negative) tracks for B
00061            float p=fabs(*it);
00062            if( m_deltaR < 0 || ROOT::Math::VectorUtil::DeltaR((*tkip.jet()).p4().Vect(), (*tracks[i]).momentum()) < m_deltaR)
00063              {
00064                if(m_trackSign>0 || *it >0 ) probabilities.push_back(p); //Use all tracks for positive tagger and only negative for negative tagger
00065 
00066                if(m_trackSign>0 && *it >=0){probabilitiesB.push_back(*it);} //Use only positive tracks for positive tagger
00067                if(m_trackSign<0 && *it <=0){probabilitiesB.push_back(- *it);} //Use only negative tracks for negative tagger 
00068              }
00069          }
00070        }
00071 
00072       float all = jetProbability(probabilities); 
00073       std::sort(probabilitiesB.begin(), probabilitiesB.end());
00074       if(probabilitiesB.size() > m_nbTracks )  probabilitiesB.resize(m_nbTracks);
00075       float b = jetProbability(probabilitiesB);
00076         
00077       return -log(b)/4-log(all)/4; 
00078    }

double JetBProbabilityComputer::jetProbability ( const std::vector< float > &  v  )  const [inline]

Definition at line 80 of file JetBProbabilityComputer.h.

References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), funct::exp(), edm::es::l(), funct::log(), m_minTrackProb, max, and min.

Referenced by discriminator().

00081 {
00082    int ngoodtracks=v.size();
00083    double SumJet=0.;
00084 
00085   for(std::vector<float>::const_iterator q = v.begin(); q != v.end(); q++){
00086     SumJet+=(*q>m_minTrackProb)?log(*q):log(m_minTrackProb);
00087   }
00088 
00089   double ProbJet;
00090   double Loginvlog=0;
00091 
00092   if(SumJet<0.){
00093     if(ngoodtracks>=2){
00094       Loginvlog=log(-SumJet);
00095     }
00096     double Prob=1.;
00097     double lfact=1.;
00098     for(int l=1; l!=ngoodtracks; l++){
00099        lfact*=l;
00100       Prob+=exp(l*Loginvlog-log(1.*lfact));
00101     }
00102     double LogProb=log(Prob);
00103     ProbJet=
00104       std::min(exp(std::max(LogProb+SumJet,-30.)),1.);
00105   }else{
00106     ProbJet=1.;
00107   }
00108   if(ProbJet>1)
00109    std::cout << "ProbJet too high: "  << ProbJet << std::endl;
00110 
00111   //double LogProbJet=-log(ProbJet);
00112   //  //return 1.-ProbJet;
00113       return ProbJet;
00114   }


Member Data Documentation

double JetBProbabilityComputer::m_cutMaxDecayLen [private]

Definition at line 121 of file JetBProbabilityComputer.h.

Referenced by discriminator(), and JetBProbabilityComputer().

double JetBProbabilityComputer::m_cutMaxDistToAxis [private]

Definition at line 122 of file JetBProbabilityComputer.h.

Referenced by discriminator(), and JetBProbabilityComputer().

double JetBProbabilityComputer::m_deltaR [private]

Definition at line 118 of file JetBProbabilityComputer.h.

Referenced by discriminator(), and JetBProbabilityComputer().

int JetBProbabilityComputer::m_ipType [private]

Definition at line 117 of file JetBProbabilityComputer.h.

Referenced by discriminator(), and JetBProbabilityComputer().

double JetBProbabilityComputer::m_minTrackProb [private]

Definition at line 116 of file JetBProbabilityComputer.h.

Referenced by JetBProbabilityComputer(), and jetProbability().

unsigned int JetBProbabilityComputer::m_nbTracks [private]

Definition at line 120 of file JetBProbabilityComputer.h.

Referenced by discriminator(), and JetBProbabilityComputer().

reco::TrackBase::TrackQuality JetBProbabilityComputer::m_trackQuality [private]

Definition at line 123 of file JetBProbabilityComputer.h.

Referenced by discriminator(), and JetBProbabilityComputer().

int JetBProbabilityComputer::m_trackSign [private]

Definition at line 119 of file JetBProbabilityComputer.h.

Referenced by discriminator(), and JetBProbabilityComputer().

bool JetBProbabilityComputer::m_useAllQualities [private]

Definition at line 124 of file JetBProbabilityComputer.h.

Referenced by discriminator(), and JetBProbabilityComputer().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:26:02 2009 for CMSSW by  doxygen 1.5.4