@@ -20,6 +20,10 @@ HLTPMMassFilter::HLTPMMassFilter(const edm::ParameterSet& iConfig) : HLTFilter(i
2020
2121 lowerMassCut_ = iConfig.getParameter <double >(" lowerMassCut" );
2222 upperMassCut_ = iConfig.getParameter <double >(" upperMassCut" );
23+ lowerdRCut_ = iConfig.getParameter <double >(" lowerdRCut" );
24+ upperdRCut_ = iConfig.getParameter <double >(" upperdRCut" );
25+ lowerdR2Cut_ = lowerdRCut_ >= 0 ? lowerdRCut_ * lowerdRCut_ : 0 ;
26+ upperdR2Cut_ = upperdRCut_ >= 0 ? upperdRCut_ * upperdRCut_ : 99999 ;
2327 nZcandcut_ = iConfig.getParameter <int >(" nZcandcut" );
2428 reqOppCharge_ = iConfig.getUntrackedParameter <bool >(" reqOppCharge" , false );
2529 isElectron1_ = iConfig.getUntrackedParameter <bool >(" isElectron1" , true );
@@ -38,6 +42,8 @@ void HLTPMMassFilter::fillDescriptions(edm::ConfigurationDescriptions& descripti
3842 desc.add <edm::InputTag>(" beamSpot" , edm::InputTag (" hltOfflineBeamSpot" ));
3943 desc.add <double >(" lowerMassCut" , 8.0 );
4044 desc.add <double >(" upperMassCut" , 11.0 );
45+ desc.add <double >(" lowerdRCut" , 0.0 );
46+ desc.add <double >(" upperdRCut" , 9999.0 );
4147 desc.add <int >(" nZcandcut" , 1 );
4248 desc.addUntracked <bool >(" reqOppCharge" , true );
4349 desc.addUntracked <bool >(" isElectron1" , false );
@@ -157,7 +163,9 @@ bool HLTPMMassFilter::isGoodPair(TLorentzVector const& v1, TLorentzVector const&
157163 return false ;
158164
159165 auto const mass = (v1 + v2).M ();
160- return (mass >= lowerMassCut_ and mass <= upperMassCut_);
166+ auto const dr2 = reco::deltaR2 (v1.Eta (), v1.Phi (), v2.Eta (), v2.Phi ());
167+
168+ return (mass >= lowerMassCut_ and mass <= upperMassCut_ and dr2 >= lowerdR2Cut_ and dr2 <= upperdR2Cut_);
161169}
162170
163171TLorentzVector HLTPMMassFilter::approxMomAtVtx (const MagneticField& magField,
0 commit comments