CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/DataFormats/BTauReco/interface/EMIsolatedTauTagInfo.h

Go to the documentation of this file.
00001 #ifndef DataFormats_BTauReco_EMIsolatedTauTagInfo_h
00002 #define DataFormats_BTauReco_EMIsolatedTauTagInfo_h
00003 //
00004 // \class EMIsolatedTauTagInfo
00005 //
00006 
00007 #include "DataFormats/BTauReco/interface/RefMacros.h"
00008 #include "Math/GenVector/VectorUtil.h"
00009 #include "Math/GenVector/PxPyPzE4D.h"
00010 #include "DataFormats/Math/interface/LorentzVector.h"
00011 #include "DataFormats/Math/interface/LorentzVectorFwd.h"
00012 #include "DataFormats/BTauReco/interface/BaseTagInfo.h"
00013 #include "DataFormats/BTauReco/interface/JetCrystalsAssociation.h"
00014 
00015 namespace reco {
00016 
00017   class EMIsolatedTauTagInfo : public BaseTagInfo {
00018 
00019   public:
00020     //default constructor
00021     EMIsolatedTauTagInfo() : m_discriminator(0), m_jetCrystalsAssociation() { }
00022 
00023     EMIsolatedTauTagInfo(double discriminator, const JetCrystalsAssociationRef & jetCrystals) :
00024       m_discriminator( discriminator ),
00025       m_jetCrystalsAssociation( jetCrystals ) { }
00026 
00027     // destructor
00028     virtual ~EMIsolatedTauTagInfo() { };
00029     virtual EMIsolatedTauTagInfo* clone() const { return new EMIsolatedTauTagInfo( * this ); }
00030 
00031     // get the jet from the jetTag
00032     virtual edm::RefToBase<Jet>       jet()                  const { return m_jetCrystalsAssociation->first;  }
00033     virtual EMLorentzVectorRefVector  lorentzVectorRecHits() const { return m_jetCrystalsAssociation->second; }
00034     const JetCrystalsAssociationRef & jcaRef()               const { return m_jetCrystalsAssociation; }
00035 
00036     // default discriminator: returns the value of the discriminator computed with the parameters taken from the cfg file in the EDProducer
00037     float discriminator() const {
00038         return m_discriminator;
00039     }
00040 
00041     void setDiscriminator(double discriminator) { m_discriminator = discriminator; }
00042 
00043     //Method to recompute the discriminator
00044     double pIsol(float rMax, float rMin) const
00045     {
00046         const EMLorentzVectorRefVector & myRecHits = m_jetCrystalsAssociation->second;
00047         const Jet & myJet = * m_jetCrystalsAssociation->first;
00048         double energyRMax= 0.;
00049         double energyRMin = 0.;
00050 
00051         for (EMLorentzVectorRefVector::const_iterator mRH = myRecHits.begin(); mRH != myRecHits.end(); ++mRH)
00052         {
00053             double delta  = ROOT::Math::VectorUtil::DeltaR((myJet).p4().Vect(), (**mRH));
00054             if (delta < rMax) {
00055                 energyRMax += (**mRH).pt();
00056             }
00057             if (delta < rMin) {
00058                 energyRMin += (**mRH).pt();
00059             }
00060         }
00061         double pIsol = energyRMax - energyRMin;
00062         return pIsol;
00063     }
00064 
00065     float discriminator(float rMax, float rMin, float pIsolCut) const
00066     {
00067         double newDiscriminator_ = 0;
00068         double pIsol_ = pIsol(rMax, rMin);
00069         if (pIsol_ < pIsolCut) newDiscriminator_ = 1.;
00070 
00071         return newDiscriminator_;
00072     }
00073 
00074   private:
00075 
00076     float m_discriminator; //Default discriminator assigned in the EDProducer
00077     JetCrystalsAssociationRef m_jetCrystalsAssociation;
00078   };
00079 
00080   DECLARE_EDM_REFS( EMIsolatedTauTagInfo )
00081 
00082 }
00083 
00084 #endif // DataFormats_BTauReco_EMIsolatedTauTagInfo_h