CMS 3D CMS Logo

PFCandConnector Class Reference

#include <RecoParticleFlow/PFAlgo/interface/PFCandConnector.h>

List of all members.

Public Member Functions

std::auto_ptr
< reco::PFCandidateCollection
connect (std::auto_ptr< reco::PFCandidateCollection > &pfCand)
 PFCandConnector ()

Private Member Functions

bool isSecondary (const reco::PFCandidate &pf) const
void link (reco::PFCandidate &pf1, reco::PFCandidate &pf2) const
bool shouldBeLinked (const reco::PFCandidate &pf1, const reco::PFCandidate &pf2) const

Private Attributes

std::auto_ptr
< reco::PFCandidateCollection
pfC_


Detailed Description

Definition at line 11 of file PFCandConnector.h.


Constructor & Destructor Documentation

PFCandConnector::PFCandConnector (  )  [inline]

Definition at line 15 of file PFCandConnector.h.

References pfC_.

00015 { pfC_ = std::auto_ptr<reco::PFCandidateCollection>(new reco::PFCandidateCollection); }


Member Function Documentation

std::auto_ptr< reco::PFCandidateCollection > PFCandConnector::connect ( std::auto_ptr< reco::PFCandidateCollection > &  pfCand  ) 

Definition at line 4 of file PFCandConnector.cc.

References false, isSecondary(), link(), pfC_, and shouldBeLinked().

Referenced by PFAlgo::transferCandidates().

00004                                                                              {
00005       std::vector<bool> connected( pfCand->size(), false );
00006       // loop on primary
00007       for( unsigned int prim=0; prim!= pfCand->size(); ++prim) {
00008         if( isSecondary(pfCand->at(prim)) ) continue;
00009         // loop on secondary
00010         for( unsigned int sec=0; sec!= pfCand->size(); ++sec) {
00011             if( prim==sec || connected[sec] || !isSecondary(pfCand->at(sec))) continue;
00012             if( shouldBeLinked( pfCand->at(prim), pfCand->at(sec) ) ) {
00013                 link( pfCand->at(prim), pfCand->at(sec) );
00014                 connected[sec]=true;
00015             }
00016          }
00017          pfC_->push_back(pfCand->at(prim));
00018        }
00019        return pfC_;
00020  }

bool PFCandConnector::isSecondary ( const reco::PFCandidate pf  )  const [private]

Definition at line 22 of file PFCandConnector.cc.

References reco::PFCandidate::flag(), and reco::PFCandidate::T_FROM_NUCLINT.

Referenced by connect().

00022                                                                       {
00023        // nuclear
00024        if( pf.flag( reco::PFCandidate::T_FROM_NUCLINT ) ) return true;
00025       // conversion
00026        // || pf.flag( reco::PFCandidate::T_FROM_GAMMACONV ) ) return true;
00027        else return false;
00028    }

void PFCandConnector::link ( reco::PFCandidate pf1,
reco::PFCandidate pf2 
) const [private]

Definition at line 30 of file PFCandConnector.cc.

References reco::CompositeCandidate::addDaughter(), reco::PFCandidate::flag(), reco::PFCandidate::setFlag(), reco::PFCandidate::T_FROM_NUCLINT, and reco::PFCandidate::T_TO_NUCLINT.

Referenced by connect().

00030                                                                                        {
00031          // TODO: Add a flag in PFCandidate :GAMMA_TO_GAMMACONV
00032          // nuclear
00033          if( primPFC.flag( reco::PFCandidate::T_TO_NUCLINT ) )
00034                    secPFC.setFlag( reco::PFCandidate::T_FROM_NUCLINT, true );
00035          // conversion
00036          //else if( primPFC.flag( reco::PFCandidate::GAMMA_TO_GAMMACONV) )
00037          //               secPFC.setFlag( T_FROM_GAMMACONV, true );
00038 
00039          primPFC.addDaughter(secPFC);
00040    }

bool PFCandConnector::shouldBeLinked ( const reco::PFCandidate pf1,
const reco::PFCandidate pf2 
) const [private]

Definition at line 42 of file PFCandConnector.cc.

References edm::Ref< C, T, F >::isNonnull(), and reco::PFCandidate::nuclearRef().

Referenced by connect().

00043                                                                                 {
00044     // TODO : methods PFCandidate::conversionRef()
00045         // nuclear
00046         if(primPFC.nuclearRef().isNonnull() && secPFC.nuclearRef().isNonnull() ) {
00047          if( primPFC.nuclearRef() == secPFC.nuclearRef()) return true;
00048         }
00049         // conversion
00050         //else if( primPFC.conversionRef().isValid() && secPFC.conversionRef().isValid() ){
00051         // if( primPFC.conversionRef() == secPFC.conversionRef()) return true;
00052         //}
00053        return false;
00054     }


Member Data Documentation

std::auto_ptr<reco::PFCandidateCollection> PFCandConnector::pfC_ [private]

Definition at line 27 of file PFCandConnector.h.

Referenced by connect(), and PFCandConnector().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:29:40 2009 for CMSSW by  doxygen 1.5.4