00001 00002 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentTwoBodyDecayTrackSelector_h 00003 #define Alignment_CommonAlignmentAlgorithm_AlignmentTwoBodyDecayTrackSelector_h 00004 00005 //Framework 00006 #include "FWCore/Utilities/interface/InputTag.h" 00007 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00008 //STL 00009 #include <vector> 00010 // forward declaration: 00011 namespace edm {class Track;} 00012 namespace reco {class Event;} 00013 00014 class AlignmentTwoBodyDecayTrackSelector 00015 { 00016 public: 00017 00018 typedef std::vector<const reco::Track*> Tracks; 00019 00021 AlignmentTwoBodyDecayTrackSelector(const edm::ParameterSet & cfg); 00022 00024 ~AlignmentTwoBodyDecayTrackSelector(); 00025 00027 Tracks select(const Tracks& tracks, const edm::Event& iEvent); 00028 00029 bool useThisFilter(); 00030 private: 00032 Tracks checkMass(const Tracks& cands)const; 00034 Tracks checkMETMass(const Tracks& cands,const edm::Event& iEvent)const; 00036 Tracks checkCharge(const Tracks& cands)const; 00038 Tracks checkAcoplanarity(const Tracks& cands)const; 00040 Tracks checkMETAcoplanarity(const Tracks& cands,const edm::Event& iEvent)const; 00042 00043 //settings from conigfile 00044 bool theMassrangeSwitch; 00045 bool theChargeSwitch; 00046 bool theMissingETSwitch; 00047 bool theAcoplanarityFilterSwitch; 00048 //inv mass Cut 00049 double theMinMass; 00050 double theMaxMass; 00051 double theDaughterMass; 00052 //charge filter 00053 int theCharge; 00054 bool theUnsignedSwitch; 00055 //missing ET Filter 00056 edm::InputTag theMissingETSource; 00057 //acoplanarity Filter 00058 double theAcoplanarDistance; 00059 //helpers 00061 void printTracks(const Tracks& col) const; 00062 }; 00063 00064 #endif 00065