CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes

AlignmentGlobalTrackSelector Class Reference

#include <AlignmentGlobalTrackSelector.h>

List of all members.

Public Types

typedef std::vector< const
reco::Track * > 
Tracks

Public Member Functions

 AlignmentGlobalTrackSelector (const edm::ParameterSet &cfg)
 constructor
Tracks select (const Tracks &tracks, const edm::Event &iEvent)
 select tracks
bool useThisFilter ()
 returns if any of the Filters is used.
 ~AlignmentGlobalTrackSelector ()
 destructor

Private Member Functions

Tracks checkIsolation (const Tracks &cands, const edm::Event &iEvent) const
 returns only isolated tracks in [cands]
Tracks checkJetCount (const Tracks &cands, const edm::Event &iEvent) const
 returns [tracks] if there are less than theMaxCount Jets with theMinJetPt and an empty set if not
Tracks findMuons (const Tracks &tracks, const edm::Event &iEvent) const
 filter for Tracks that match the Track of a global Muon
Tracks matchTracks (const Tracks &src, const Tracks &comp) const
 matches [src] with [comp] returns collection with matching Tracks coming from [src]
void printTracks (const Tracks &col) const
 print Information on Track-Collection

Private Attributes

edm::ParameterSet theConf
 private data members
bool theGMFilterSwitch
bool theIsoFilterSwitch
bool theJetCountFilterSwitch
edm::InputTag theJetCountSource
edm::InputTag theJetIsoSource
int theMaxJetCount
double theMaxJetPt
double theMaxTrackDeltaR
int theMinGlobalMuonCount
int theMinIsolatedCount
double theMinJetDeltaR
double theMinJetPt
edm::InputTag theMuonSource

Detailed Description

Definition at line 14 of file AlignmentGlobalTrackSelector.h.


Member Typedef Documentation

Definition at line 19 of file AlignmentGlobalTrackSelector.h.


Constructor & Destructor Documentation

AlignmentGlobalTrackSelector::AlignmentGlobalTrackSelector ( const edm::ParameterSet cfg)

constructor

Definition at line 29 of file AlignmentGlobalTrackSelector.cc.

References edm::ParameterSet::getParameter(), LogDebug, theGMFilterSwitch, theIsoFilterSwitch, theJetCountFilterSwitch, theJetCountSource, theJetIsoSource, theMaxJetCount, theMaxJetPt, theMaxTrackDeltaR, theMinGlobalMuonCount, theMinIsolatedCount, theMinJetDeltaR, theMinJetPt, and theMuonSource.

                                                                                      :
  theMuonSource("muons"),
  theJetIsoSource("fastjet6CaloJets"),
  theJetCountSource("fastjet6CaloJets")
{
  theIsoFilterSwitch = cfg.getParameter<bool>( "applyIsolationtest" );
  theGMFilterSwitch = cfg.getParameter<bool>( "applyGlobalMuonFilter" );
  theJetCountFilterSwitch = cfg.getParameter<bool>( "applyJetCountFilter" );
  if (theIsoFilterSwitch ||  theGMFilterSwitch || theJetCountFilterSwitch)
    LogDebug("Alignment") << "> applying global Trackfilter ...";
 
  if (theGMFilterSwitch){
    theMuonSource = cfg.getParameter<InputTag>( "muonSource" );
    theMaxTrackDeltaR =cfg.getParameter<double>("maxTrackDeltaR");
    theMinIsolatedCount = cfg.getParameter<int>("minIsolatedCount");
    LogDebug("Alignment") << ">  GlobalMuonFilter : source, maxTrackDeltaR, min. Count       : " << theMuonSource<<" , "<<theMaxTrackDeltaR<<" , "<<theMinIsolatedCount;
  }else{
    theMaxTrackDeltaR = 0;
    theMinIsolatedCount = 0;
  }
  
  if (theIsoFilterSwitch ){
    theJetIsoSource = cfg.getParameter<InputTag>( "jetIsoSource" );
    theMaxJetPt = cfg.getParameter<double>( "maxJetPt" );
    theMinJetDeltaR = cfg.getParameter<double>( "minJetDeltaR" );
    theMinGlobalMuonCount = cfg.getParameter<int>( "minGlobalMuonCount" );
    LogDebug("Alignment") << ">  Isolationtest    : source, maxJetPt, minJetDeltaR, min. Count: " << theJetIsoSource   << " , " << theMaxJetPt<<" ," <<theMinJetDeltaR<<" ," <<theMinGlobalMuonCount;
  }else{
    theMaxJetPt = 0;
    theMinJetDeltaR = 0;
    theMinGlobalMuonCount = 0;
  }
  
  if(theJetCountFilterSwitch){
    theJetCountSource = cfg.getParameter<InputTag>( "jetCountSource" );
    theMinJetPt = cfg.getParameter<double>( "minJetPt" );
    theMaxJetCount = cfg.getParameter<int>( "maxJetCount" );
    LogDebug("Alignment") << ">  JetCountFilter   : source, minJetPt, maxJetCount             : " << theJetCountSource   << " , " << theMinJetPt<<" ," <<theMaxJetCount;  
  }

  
}
AlignmentGlobalTrackSelector::~AlignmentGlobalTrackSelector ( )

destructor

Definition at line 75 of file AlignmentGlobalTrackSelector.cc.

{}

Member Function Documentation

AlignmentGlobalTrackSelector::Tracks AlignmentGlobalTrackSelector::checkIsolation ( const Tracks cands,
const edm::Event iEvent 
) const [private]

returns only isolated tracks in [cands]

Definition at line 103 of file AlignmentGlobalTrackSelector.cc.

References deltaR(), edm::Event::getByLabel(), edm::HandleBase::isValid(), analyzePatCleaning_cfg::jets, query::result, theJetIsoSource, theMaxJetPt, theMinIsolatedCount, and theMinJetDeltaR.

Referenced by select().

{
  Tracks result;  result.clear();

  Handle<reco::CaloJetCollection> jets;
  iEvent.getByLabel(theJetIsoSource  ,jets);
  if(jets.isValid()){
    for(Tracks::const_iterator it = cands.begin();it < cands.end();++it){
      bool isolated = true;
      for(reco::CaloJetCollection::const_iterator itJet = jets->begin(); itJet != jets->end() ; ++itJet) 
        isolated &= !((*itJet).pt() > theMaxJetPt && deltaR(*(*it),(*itJet)) < theMinJetDeltaR);
      
      if(isolated)
        result.push_back(*it);
    }
    //    LogDebug("Alignment") << "D  Found "<<result.size()<<" isolated of "<< cands.size()<<" Tracks!";   
    
  }else  LogError("Alignment")<<"@SUB=AlignmentGlobalTrackSelector::checkIsolation"
                                                 <<">  could not optain jetCollection!";

  if(static_cast<int>(result.size()) < theMinIsolatedCount) result.clear();
  return result;
}
AlignmentGlobalTrackSelector::Tracks AlignmentGlobalTrackSelector::checkJetCount ( const Tracks cands,
const edm::Event iEvent 
) const [private]

returns [tracks] if there are less than theMaxCount Jets with theMinJetPt and an empty set if not

Definition at line 129 of file AlignmentGlobalTrackSelector.cc.

References edm::Event::getByLabel(), edm::HandleBase::isValid(), analyzePatCleaning_cfg::jets, LogDebug, query::result, theJetCountSource, theMaxJetCount, theMinJetPt, and testEve_cfg::tracks.

Referenced by select().

{
  Tracks result;  result.clear();
  Handle<reco::CaloJetCollection> jets;
  iEvent.getByLabel(theJetCountSource  ,jets);
  if(jets.isValid()){
    int jetCount = 0;
    for(reco::CaloJetCollection::const_iterator itJet = jets->begin(); itJet != jets->end() ; ++itJet){
      if((*itJet).pt() > theMinJetPt)
        jetCount++;
    }
    if(jetCount <= theMaxJetCount)
      result = tracks;
    LogDebug("Alignment")<<">  found "<<jetCount<<" Jets";
  }else  LogError("Alignment")<<"@SUB=AlignmentGlobalTrackSelector::checkJetCount"
                              <<">  could not optain jetCollection!";
  return result;
}
AlignmentGlobalTrackSelector::Tracks AlignmentGlobalTrackSelector::findMuons ( const Tracks tracks,
const edm::Event iEvent 
) const [private]

filter for Tracks that match the Track of a global Muon

Definition at line 150 of file AlignmentGlobalTrackSelector.cc.

References edm::Event::getByLabel(), globalMuons_cfi::globalMuons, edm::HandleBase::isValid(), LogDebug, matchTracks(), ExpressReco_HICollisions_FallBack::muons, query::result, theMinGlobalMuonCount, and theMuonSource.

Referenced by select().

{
  Tracks result;
  Tracks globalMuons;

  //fill globalMuons with muons
  Handle<reco::MuonCollection> muons;
  iEvent.getByLabel(theMuonSource, muons);
  if (muons.isValid()) {
    for(reco::MuonCollection::const_iterator itMuon = muons->begin(); itMuon != muons->end();
        ++itMuon) {
      const reco::Track* muonTrack = (*itMuon).get<reco::TrackRef>().get();
      if (!muonTrack) {
        LogDebug("Alignment") << "@SUB=AlignmentGlobalTrackSelector::findMuons"
                              << "Found muon without track: Standalone Muon!";
      } else {
        globalMuons.push_back(muonTrack);
      }
    }
  } else {
    LogError("Alignment") << "@SUB=AlignmentGlobalTrackSelector::findMuons"
                          <<">  could not optain mounCollection!";
  }

  result = this->matchTracks(tracks, globalMuons);
  
  if (static_cast<int>(result.size()) < theMinGlobalMuonCount) result.clear();

  return result;
}
AlignmentGlobalTrackSelector::Tracks AlignmentGlobalTrackSelector::matchTracks ( const Tracks src,
const Tracks comp 
) const [private]

matches [src] with [comp] returns collection with matching Tracks coming from [src]

Definition at line 185 of file AlignmentGlobalTrackSelector.cc.

References deltaR(), i, match(), min, query::result, and theMaxTrackDeltaR.

Referenced by findMuons().

{
  Tracks result;
  for(Tracks::const_iterator itComp = comp.begin(); itComp < comp.end();++itComp){
      int match = -1;
      double min = theMaxTrackDeltaR;
      for(unsigned int i =0; i < src.size();i++){
        //      LogDebug("Alignment") << "> Trackmatch dist: "<<deltaR(src.at(i),*itComp);
        if(min > deltaR(*(src.at(i)),*(*itComp))){
          min = deltaR(*(src.at(i)),*(*itComp));
          match = static_cast<int>(i);
        }
      }
      if(match > -1)
        result.push_back(src.at(match)); 
    }
  return result;
}
void AlignmentGlobalTrackSelector::printTracks ( const Tracks col) const [private]

print Information on Track-Collection

Definition at line 205 of file AlignmentGlobalTrackSelector.cc.

References prof2calltree::count, and LogDebug.

{
  int count = 0;
  LogDebug("Alignment") << ">......................................";
  for(Tracks::const_iterator it = col.begin();it < col.end();++it,++count){
    LogDebug("Alignment") 
      <<">  Track No. "<< count <<": p = ("<<(*it)->px()<<","<<(*it)->py()<<","<<(*it)->pz()<<")\n"
      <<">                        pT = "<<(*it)->pt()<<" eta = "<<(*it)->eta()<<" charge = "<<(*it)->charge();    
  }
  LogDebug("Alignment") << ">......................................";
}
AlignmentGlobalTrackSelector::Tracks AlignmentGlobalTrackSelector::select ( const Tracks tracks,
const edm::Event iEvent 
)

select tracks

Definition at line 87 of file AlignmentGlobalTrackSelector.cc.

References checkIsolation(), checkJetCount(), findMuons(), LogDebug, query::result, theGMFilterSwitch, theIsoFilterSwitch, theJetCountFilterSwitch, and testEve_cfg::tracks.

Referenced by TrackConfigSelector::select().

{
  Tracks result=tracks;

  if(theGMFilterSwitch)  result = findMuons(result,iEvent);
  if(theIsoFilterSwitch)  result = checkIsolation(result,iEvent);
  if(theJetCountFilterSwitch)  result = checkJetCount(result,iEvent);
  LogDebug("Alignment") << ">  Global: tracks all,kept: " << tracks.size() << "," << result.size();
//  LogDebug("Alignment")<<">  o kept:";
//  printTracks(result);
  
  return result;
}
bool AlignmentGlobalTrackSelector::useThisFilter ( )

Member Data Documentation

private data members

Definition at line 40 of file AlignmentGlobalTrackSelector.h.

Definition at line 56 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and checkJetCount().

Definition at line 50 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and checkIsolation().

Definition at line 58 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and checkJetCount().

Definition at line 51 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and checkIsolation().

Definition at line 53 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and matchTracks().

Definition at line 48 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and findMuons().

Definition at line 54 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and checkIsolation().

Definition at line 52 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and checkIsolation().

Definition at line 57 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and checkJetCount().

Definition at line 47 of file AlignmentGlobalTrackSelector.h.

Referenced by AlignmentGlobalTrackSelector(), and findMuons().