CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

TagProbeMassProducer Class Reference

#include <PhysicsTools/TagProbeMassProducer/src/TagProbeMassProducer.cc>

Inheritance diagram for TagProbeMassProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 TagProbeMassProducer (const edm::ParameterSet &)
 ~TagProbeMassProducer ()

Private Member Functions

virtual void beginJob ()
virtual void endJob ()
bool isPassingProbe (const unsigned int iprobe) const
virtual void produce (edm::Event &, const edm::EventSetup &)

Private Attributes

double delRMaxCut_
double delRMinCut_
double massMaxCut_
double massMinCut_
edm::InputTag passingProbeCollection_
edm::Handle< reco::CandidateViewpassingProbes
edm::InputTag probeCollection_
edm::Handle< reco::CandidateViewprobes
bool requireOS_
edm::InputTag tagCollection_
edm::Handle< reco::CandidateViewtags

Detailed Description

Description: <one line="" class="" summary>="">

Usage: <usage>

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 34 of file TagProbeMassProducer.h.


Constructor & Destructor Documentation

TagProbeMassProducer::TagProbeMassProducer ( const edm::ParameterSet iConfig) [explicit]

Definition at line 37 of file TagProbeMassProducer.cc.

References delRMaxCut_, delRMinCut_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), massMaxCut_, massMinCut_, passingProbeCollection_, probeCollection_, requireOS_, and tagCollection_.

{
   tagCollection_   = iConfig.getParameter<edm::InputTag>("TagCollection");
   probeCollection_ = iConfig.getParameter<edm::InputTag>("ProbeCollection");
   passingProbeCollection_ = iConfig.getParameter<edm::InputTag>("PassingProbeCollection");

   massMinCut_      = iConfig.getUntrackedParameter<double>("MassMinCut",50.0);
   massMaxCut_      = iConfig.getUntrackedParameter<double>("MassMaxCut",120.0);
   delRMinCut_      = iConfig.getUntrackedParameter<double>("DelRMinCut",0.0);
   delRMaxCut_      = iConfig.getUntrackedParameter<double>("DelRMaxCut",10000.0);

   requireOS_       = iConfig.getUntrackedParameter<bool>("RequireOS",true);

   produces<std::vector<float> >("TPmass");
}
TagProbeMassProducer::~TagProbeMassProducer ( )

Definition at line 54 of file TagProbeMassProducer.cc.

{
 
}

Member Function Documentation

void TagProbeMassProducer::beginJob ( void  ) [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 128 of file TagProbeMassProducer.cc.

{
}
void TagProbeMassProducer::endJob ( void  ) [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 134 of file TagProbeMassProducer.cc.

                             {
}
bool TagProbeMassProducer::isPassingProbe ( const unsigned int  iprobe) const [private]

Definition at line 138 of file TagProbeMassProducer.cc.

References passingProbes, and probes.

Referenced by produce().

                                                                          {

  if (iProbe > probes->size()) return false;

  edm::RefToBase<reco::Candidate> probeRef = probes->refAt(iProbe);
  edm::RefToBase<reco::Candidate> passingProbeRef;

  unsigned int numPassingProbes = passingProbes->size();

  for (unsigned int iPassProbe = 0; iPassProbe < numPassingProbes; ++iPassProbe) {
    passingProbeRef = passingProbes->refAt(iPassProbe);
    if (passingProbeRef == probeRef) {
      return true;      
    }
  }
  return false;
}
void TagProbeMassProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDProducer.

Definition at line 66 of file TagProbeMassProducer.cc.

References edm::RefToBaseVector< T >::begin(), delRMaxCut_, delRMinCut_, edm::RefToBaseVector< T >::end(), edm::Event::getByLabel(), reco::tau::disc::InvariantMass(), isPassingProbe(), edm::HandleBase::isValid(), massMaxCut_, massMinCut_, passingProbeCollection_, passingProbes, probeCollection_, probes, edm::Event::put(), requireOS_, GlobalPosition_Frontier_DevDB_cff::tag, tagCollection_, and tags.

{

   // We need the output Muon association collection to fill
   std::auto_ptr<std::vector<float> > TPmass( new std::vector<float>);

   if ( !iEvent.getByLabel( tagCollection_, tags ) ) {
      edm::LogWarning("TagProbe") << "Could not extract tag muons with input tag "
                                 << tagCollection_;
   }

   if ( !iEvent.getByLabel( probeCollection_, probes ) ) {
      edm::LogWarning("TagProbe") << "Could not extract probe muons with input tag "
                                 << probeCollection_;
   }

   if ( !iEvent.getByLabel( passingProbeCollection_, passingProbes ) ) {
      edm::LogWarning("TagProbe") << "Could not extract passing probe muons with input tag "
                                 << passingProbeCollection_;
   }

   // Loop over Tag and associate with Probes
   if( tags.isValid() && probes.isValid() )
   {
      const edm::RefToBaseVector<reco::Candidate>& vtags = tags->refVector();
      const edm::RefToBaseVector<reco::Candidate>& vprobes = probes->refVector();

      int itag = 0;
      edm::RefToBaseVector<reco::Candidate>::const_iterator tag = vtags.begin();
      for( ; tag != vtags.end(); ++tag, ++itag ) 
      {  
         int iprobe = 0;
         edm::RefToBaseVector<reco::Candidate>::const_iterator probe = vprobes.begin();
         for( ; probe != vprobes.end(); ++probe, ++iprobe ) 
         {
            // Tag-Probe invariant mass cut
            double invMass = ROOT::Math::VectorUtil::InvariantMass((*tag)->p4(), (*probe)->p4());
            if( invMass < massMinCut_ ) continue;
            if( invMass > massMaxCut_ ) continue;

            // Tag-Probe deltaR cut
            double delR = reco::deltaR<double>((*tag)->eta(),(*tag)->phi(),(*probe)->eta(),(*probe)->phi());
            if( delR < delRMinCut_ ) continue;
            if( delR > delRMaxCut_ ) continue;

            // Tag-Probe opposite sign
            int sign = (*tag)->charge() * (*probe)->charge();
            if( requireOS_ && sign > 0 ) continue;

            bool isPassing = isPassingProbe (iprobe);

            if (isPassing) TPmass->push_back(invMass);
         }       
      }
   }

   // Finally put the tag probe collection in the event
   iEvent.put( TPmass,"TPmass" );
}

Member Data Documentation

Definition at line 60 of file TagProbeMassProducer.h.

Referenced by produce(), and TagProbeMassProducer().

Definition at line 59 of file TagProbeMassProducer.h.

Referenced by produce(), and TagProbeMassProducer().

Definition at line 58 of file TagProbeMassProducer.h.

Referenced by produce(), and TagProbeMassProducer().

Definition at line 57 of file TagProbeMassProducer.h.

Referenced by produce(), and TagProbeMassProducer().

Definition at line 51 of file TagProbeMassProducer.h.

Referenced by produce(), and TagProbeMassProducer().

Definition at line 55 of file TagProbeMassProducer.h.

Referenced by isPassingProbe(), and produce().

Definition at line 50 of file TagProbeMassProducer.h.

Referenced by produce(), and TagProbeMassProducer().

Definition at line 54 of file TagProbeMassProducer.h.

Referenced by isPassingProbe(), and produce().

Definition at line 62 of file TagProbeMassProducer.h.

Referenced by produce(), and TagProbeMassProducer().

Definition at line 49 of file TagProbeMassProducer.h.

Referenced by produce(), and TagProbeMassProducer().

Definition at line 53 of file TagProbeMassProducer.h.

Referenced by produce().