CMS 3D CMS Logo

Functions

JetMCTagUtils Namespace Reference

Functions

bool decayFromBHadron (const reco::Candidate &c)
bool decayFromCHadron (const reco::Candidate &c)
double EnergyRatioFromBHadrons (const reco::Candidate &c)
double EnergyRatioFromCHadrons (const reco::Candidate &c)
std::string genTauDecayMode (const reco::CompositePtrCandidate &c)

Function Documentation

bool JetMCTagUtils::decayFromBHadron ( const reco::Candidate c)

Definition at line 40 of file JetMCTag.cc.

References CandMCTagUtils::getAncestors(), and CandMCTagUtils::hasBottom().

Referenced by EnergyRatioFromBHadrons(), and HFFilter::filter().

{
   bool isFromB = false;
   vector<const Candidate *> allParents = getAncestors( c );
   for( vector<const Candidate *>::const_iterator aParent  = allParents.begin();
                                                  aParent != allParents.end(); 
                                                  aParent ++ ) 
     {
         if( hasBottom(**aParent) ) isFromB = true;
/*
         cout << "     particle Parent is " << (*aParent)->status()
              << " type " << (*aParent)->pdgId()
              << " pt=" << (*aParent)->pt()
              << " isB = " << isFromB
              << endl;
*/
     }
   return isFromB;

}
bool JetMCTagUtils::decayFromCHadron ( const reco::Candidate c)

Definition at line 61 of file JetMCTag.cc.

References CandMCTagUtils::getAncestors(), and CandMCTagUtils::hasCharm().

Referenced by EnergyRatioFromCHadrons(), and HFFilter::filter().

{
   bool isFromC = false;
   vector<const Candidate *> allParents = getAncestors( c );
   for( vector<const Candidate *>::const_iterator aParent  = allParents.begin();
                                                  aParent != allParents.end();
                                                  aParent ++ )
     {
         if( hasCharm(**aParent) ) isFromC = true;
/*
         cout << "     particle Parent is " << (*aParent)->status()
              << " type " << (*aParent)->pdgId()
              << " pt=" << (*aParent)->pt()
              << " isC = " << isFromC
              << endl;
*/
     }
   return isFromC;
}
double JetMCTagUtils::EnergyRatioFromBHadrons ( const reco::Candidate c)

Definition at line 12 of file JetMCTag.cc.

References reco::Candidate::begin(), decayFromBHadron(), reco::Candidate::end(), and reco::Candidate::energy().

Referenced by GenJetBCEnergyRatio::produce().

{
   double ratioForBjet=0;
   double ratio = 0;
   for( Candidate::const_iterator itC  = c.begin();
                                  itC != c.end();
                                  itC ++) {
      bool isFromB = decayFromBHadron(*itC);
      ratio = itC->energy() / c.energy() ;
      if( isFromB ) ratioForBjet += ratio;
   }   
   return ratioForBjet;
}
double JetMCTagUtils::EnergyRatioFromCHadrons ( const reco::Candidate c)

Definition at line 26 of file JetMCTag.cc.

References reco::Candidate::begin(), decayFromCHadron(), reco::Candidate::end(), and reco::Candidate::energy().

Referenced by GenJetBCEnergyRatio::produce().

{
   double ratioForCjet=0;
   double ratio = 0;
   for( Candidate::const_iterator itC  = c.begin();
                                  itC != c.end();
                                  itC ++) {
      bool isFromC = decayFromCHadron(*itC);
      ratio = itC->energy() / c.energy() ;
      if( isFromC ) ratioForCjet += ratio;
   }
   return ratioForCjet;
}
std::string JetMCTagUtils::genTauDecayMode ( const reco::CompositePtrCandidate c)

Definition at line 81 of file JetMCTag.cc.

References abs, reco::CompositePtrCandidate::daughterPtrVector(), and patZpeak::numMuons.

Referenced by TauGenJetDumper::analyze(), reco::tau::getDecayMode(), and TauGenJetDecayModeSelectorImp::operator()().

                                                                       {
  
  int numElectrons = 0;
  int numMuons = 0;
  int numChargedHadrons = 0;
  int numNeutralHadrons = 0;
  int numPhotons = 0;
  
  const CompositePtrCandidate::daughters& daughters = c.daughterPtrVector();
  for ( CompositePtrCandidate::daughters::const_iterator daughter = daughters.begin();
        daughter != daughters.end(); ++daughter ) {
    
    int pdg_id = abs((*daughter)->pdgId());
    
    switch ( pdg_id ) {

    case 22: 
      numPhotons++;
      break;
    case 11:
      numElectrons++;
      break;
    case 13:
      numMuons++;
      break;
    default : {if ((*daughter)->charge() != 0)  numChargedHadrons++; else numNeutralHadrons++;}
    }
  }
  
  if (numElectrons == 1) return std::string("electron");
  else if (numMuons == 1) return std::string("muon");

  switch ( numChargedHadrons ) {
  case 1 : 
    if (numNeutralHadrons != 0) return std::string("oneProngOther");
    switch ( numPhotons ) {
    case 0:
      return std::string("oneProng0Pi0");
    case 2:
      return std::string("oneProng1Pi0");
    case 4:
      return std::string("oneProng2Pi0");
    default:
      return std::string("oneProngOther");
    }
  case 3 : 
    if (numNeutralHadrons != 0) return std::string("threeProngOther");
    switch ( numPhotons ) {
    case 0:
      return std::string("threeProng0Pi0");
    case 2:
      return std::string("threeProng1Pi0");
    default:
      return std::string("threeProngOther");
    }
  default:
    return std::string("rare");
  }
  
}