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 #include <DataFormats/TrackReco/interface/TrackFwd.h> 00012 #include <DataFormats/METReco/interface/CaloMETFwd.h> 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 bool checkCharge(const reco::Track* trk1,const reco::Track* trk2 = 0)const; 00038 bool checkAcoplanarity(const reco::Track* trk1,const reco::Track* trk2)const; 00040 bool checkMETAcoplanarity(const reco::Track* trk,const reco::CaloMET* met)const; 00041 00043 00044 //settings from conigfile 00045 bool theMassrangeSwitch; 00046 bool theChargeSwitch; 00047 bool theMissingETSwitch; 00048 bool theAcoplanarityFilterSwitch; 00049 //inv mass Cut 00050 double theMinMass; 00051 double theMaxMass; 00052 double theDaughterMass; 00053 unsigned int theCandNumber; 00054 //charge filter 00055 int theCharge; 00056 bool theUnsignedSwitch; 00057 //missing ET Filter 00058 edm::InputTag theMissingETSource; 00059 //acoplanarity Filter 00060 double theAcoplanarDistance; 00061 //helpers 00063 void printTracks(const Tracks& col) const; 00064 }; 00065 00066 #endif 00067