|
| DisappearingMuonsSkimming (const edm::ParameterSet &) |
|
| ~DisappearingMuonsSkimming () override=default |
|
| EDFilter ()=default |
|
| EDFilter (const EDFilter &)=delete |
|
SerialTaskQueue * | globalLuminosityBlocksQueue () final |
|
SerialTaskQueue * | globalRunsQueue () final |
|
bool | hasAbilityToProduceInBeginLumis () const final |
|
bool | hasAbilityToProduceInBeginProcessBlocks () const final |
|
bool | hasAbilityToProduceInBeginRuns () const final |
|
bool | hasAbilityToProduceInEndLumis () const final |
|
bool | hasAbilityToProduceInEndProcessBlocks () const final |
|
bool | hasAbilityToProduceInEndRuns () const final |
|
const EDFilter & | operator= (const EDFilter &)=delete |
|
bool | wantsGlobalLuminosityBlocks () const final |
|
bool | wantsGlobalRuns () const final |
|
bool | wantsInputProcessBlocks () const final |
|
bool | wantsProcessBlocks () const final |
|
| EDFilterBase () |
|
ModuleDescription const & | moduleDescription () const |
|
bool | wantsStreamLuminosityBlocks () const |
|
bool | wantsStreamRuns () const |
|
| ~EDFilterBase () override |
|
void | callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func) |
|
std::vector< edm::ProductResolverIndex > const & | indiciesForPutProducts (BranchType iBranchType) const |
|
| ProducerBase () |
|
std::vector< edm::ProductResolverIndex > const & | putTokenIndexToProductResolverIndex () const |
|
std::vector< bool > const & | recordProvenanceList () const |
|
void | registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &) |
|
std::function< void(BranchDescription const &)> | registrationCallback () const |
| used by the fwk to register list of products More...
|
|
void | resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel) |
|
TypeLabelList const & | typeLabelList () const |
| used by the fwk to register the list of products of this module More...
|
|
| ~ProducerBase () noexcept(false) override |
|
std::vector< ConsumesInfo > | consumesInfo () const |
|
void | convertCurrentProcessAlias (std::string const &processName) |
| Convert "@currentProcess" in InputTag process names to the actual current process name. More...
|
|
| EDConsumerBase () |
|
| EDConsumerBase (EDConsumerBase const &)=delete |
|
| EDConsumerBase (EDConsumerBase &&)=default |
|
ESProxyIndex const * | esGetTokenIndices (edm::Transition iTrans) const |
|
std::vector< ESProxyIndex > const & | esGetTokenIndicesVector (edm::Transition iTrans) const |
|
std::vector< ESRecordIndex > const & | esGetTokenRecordIndicesVector (edm::Transition iTrans) const |
|
ProductResolverIndexAndSkipBit | indexFrom (EDGetToken, BranchType, TypeID const &) const |
|
void | itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
void | itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
std::vector< ProductResolverIndexAndSkipBit > const & | itemsToGetFrom (BranchType iType) const |
|
void | labelsForToken (EDGetToken iToken, Labels &oLabels) const |
|
void | modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const |
|
EDConsumerBase const & | operator= (EDConsumerBase const &)=delete |
|
EDConsumerBase & | operator= (EDConsumerBase &&)=default |
|
bool | registeredToConsume (ProductResolverIndex, bool, BranchType) const |
|
bool | registeredToConsumeMany (TypeID const &, BranchType) const |
|
void | selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase) |
|
ProductResolverIndexAndSkipBit | uncheckedIndexFrom (EDGetToken) const |
|
void | updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet) |
|
void | updateLookup (eventsetup::ESRecordsToProxyIndices const &) |
|
virtual | ~EDConsumerBase () noexcept(false) |
|
|
typedef EDFilterBase | ModuleType |
|
template<typename T > |
using | BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T > |
|
using | ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > > |
|
typedef ProductRegistryHelper::TypeLabelList | TypeLabelList |
|
typedef ProductLabels | Labels |
|
template<Transition Tr = Transition::Event> |
auto | produces (std::string instanceName) noexcept |
| declare what type of product will make and with which optional label More...
|
|
template<Transition B> |
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
template<BranchType B> |
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
template<typename ProductType , Transition B> |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
template<class ProductType > |
BranchAliasSetterT< ProductType > | produces () |
|
template<typename ProductType , BranchType B> |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
template<typename ProductType , BranchType B> |
BranchAliasSetterT< ProductType > | produces () |
|
template<class ProductType > |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
template<typename ProductType , Transition B> |
BranchAliasSetterT< ProductType > | produces () |
|
template<Transition Tr = Transition::Event> |
auto | produces () noexcept |
|
ProducesCollector | producesCollector () |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | consumes (edm::InputTag const &tag) |
|
template<BranchType B = InEvent> |
EDConsumerBaseAdaptor< B > | consumes (edm::InputTag tag) noexcept |
|
EDGetToken | consumes (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | consumes (TypeToGet const &id, edm::InputTag const &tag) |
|
ConsumesCollector | consumesCollector () |
| Use a ConsumesCollector to gather consumes information from helper functions. More...
|
|
template<typename ProductType , BranchType B = InEvent> |
void | consumesMany () |
|
void | consumesMany (const TypeToGet &id) |
|
template<BranchType B> |
void | consumesMany (const TypeToGet &id) |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes () |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag const &tag) |
|
template<Transition Tr = Transition::Event> |
constexpr auto | esConsumes () |
|
template<Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag tag) |
|
template<Transition Tr = Transition::Event> |
ESGetTokenGeneric | esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey) |
| Used with EventSetupRecord::doGet. More...
|
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | mayConsume (edm::InputTag const &tag) |
|
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
void | resetItemsToGetFrom (BranchType iType) |
|
Description: [one line class summary]
Implementation: [Notes on implementation]
Definition at line 43 of file DisappearingMuonsSkimming.h.
Implements edm::one::EDFilterBase.
Definition at line 91 of file DisappearingMuonsSkimming.cc.
References TransientTrackBuilder::build(), reco::Muon::CutBasedIdTight, CachingVertex< N >::degreesOfFreedom(), HLTMuonOfflineAnalyzer_cfi::deltaR2, edm::EventSetup::getData(), getECALIsolation(), getTrackIsolation(), mps_fire::i, iEvent, CachingVertex< N >::isValid(), dqmiolumiharvest::j, keepOffPeak_, keepPartialRegion_, keepSameSign_, keepTotalRegion_, PerigeeTrajectoryParameters::longitudinalImpactParameter(), PV3DBase< T, PVType, FrameType >::mag2(), maxEcalIso_, maxInvMass_, maxLongDCA_, maxMuEta_, maxSigInvMass_, maxStandaloneDE_, maxTrackEta_, maxTrackIso_, maxTransDCA_, maxVtxChi_, minMuPt_, minStandaloneDr_, minTrackEta_, minTrackPt_, TrajectoryStateClosestToPoint::momentum(), muonPathsToPass_, passTriggers(), TrajectoryStateClosestToPoint::perigeeParameters(), reco::Muon::PFIsoTight, CachingVertex< N >::position(), funct::pow(), primaryVerticesToken_, reco::TrackBase::qualityByName(), recoMuonToken_, mathSSE::sqrt(), standaloneMuonToken_, muonTagProbeFilters_cff::staTracks, CachingVertex< N >::totalChiSquared(), HLT_2022v15_cff::track, trackCollectionToken_, reco::TransientTrack::trajectoryStateClosestToPoint(), transientTrackToken_, PerigeeTrajectoryParameters::transverseImpactParameter(), trigResultsToken_, generalV0Candidates_cfi::vertexFitter, AlignmentTracksFromVertexSelector_cfi::vertices, extraflags_cff::vtx, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
96 bool totalRegion =
false;
97 bool sameSign =
false;
99 bool partialRegion =
false;
115 int nMuonTrackCand = 0;
116 float MuonTrackMass = 0.;
119 for (std::vector<reco::Muon>::const_iterator iMuon = recoMuons->begin(); iMuon != recoMuons->end(); iMuon++) {
120 if (!(iMuon->isPFMuon() && iMuon->isGlobalMuon()))
130 for (std::vector<reco::Track>::const_iterator iTrack = thePATTrackHandle->begin();
131 iTrack != thePATTrackHandle->end();
140 bool foundtrack =
false;
142 for (
unsigned int i = 0;
i <
vertices->size();
i++) {
144 if (!
vtx->isValid()) {
147 for (
unsigned int j = 0;
j <
vtx->tracksSize();
j++) {
148 double dPt = fabs(
vtx->trackRefAt(
j)->pt() - iTrack->pt()) / iTrack->pt();
151 double dR2 =
deltaR2(
vtx->trackRefAt(
j)->eta(),
vtx->trackRefAt(
j)->phi(), iTrack->eta(), iTrack->phi());
152 if (dR2 < 0.001 * 0.001) {
172 std::vector<reco::TransientTrack> tracksToVertex;
173 tracksToVertex.push_back(transientTrackBuilder->
build(*iTrack));
174 tracksToVertex.push_back(transientTrackBuilder->
build(iMuon->globalTrack()));
187 tracksToVertex[0].trajectoryStateClosestToPoint(fittedVertex.
position());
189 tracksToVertex[1].trajectoryStateClosestToPoint(fittedVertex.
position());
193 double total_energy =
sqrt(one_momentum.
mag2() + 0.106 * 0.106) +
sqrt(two_momentum.
mag2() + 0.106 * 0.106);
194 double total_px = one_momentum.
x() + two_momentum.
x();
195 double total_py = one_momentum.
y() + two_momentum.
y();
196 double total_pz = one_momentum.
z() + two_momentum.
z();
197 MuonTrackMass =
sqrt(
pow(total_energy, 2) -
pow(total_px, 2) -
pow(total_py, 2) -
pow(total_pz, 2));
204 if (MuonTrackMass < minInvMass_ || MuonTrackMass >
maxInvMass_)
216 if (iMuon->charge() == iTrack->charge()) {
221 double staMinDr2 = 1000;
222 double staMinDEoverE = -10;
224 for (reco::TrackCollection::const_iterator staTrack =
staTracks->begin(); staTrack !=
staTracks->end();
227 double dR2 =
deltaR2(
track.impactPointTSCP().momentum().eta(),
228 track.impactPointTSCP().momentum().phi(),
231 double staDE = (
std::sqrt(
track.impactPointTSCP().momentum().mag2()) - (*iTrack).p()) / (*iTrack).p();
232 if (dR2 < staMinDr2) {
236 if (dR2 < minStandaloneDr_ * minStandaloneDr_ && staDE > staMinDEoverE) {
237 staMinDEoverE = staDE;
242 if (MuonTrackMass < minSigInvMass_ || MuonTrackMass >
maxSigInvMass_) {
249 if (MuonTrackMass < minSigInvMass_ || MuonTrackMass >
maxSigInvMass_) {
252 partialRegion =
true;
260 if (nMuonTrackCand == 0)
const double minStandaloneDr_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
const std::vector< std::string > muonPathsToPass_
double getTrackIsolation(const edm::Event &, edm::Handle< reco::VertexCollection > vtxHandle, std::vector< reco::Track >::const_iterator &iTrack)
const double maxStandaloneDE_
const edm::EDGetTokenT< edm::TriggerResults > trigResultsToken_
bool passTriggers(const edm::Event &iEvent, edm::EDGetToken m_trigResultsToken, std::vector< std::string > m_muonPathsToPass)
double transverseImpactParameter() const
const edm::EDGetTokenT< std::vector< reco::Vertex > > primaryVerticesToken_
float totalChiSquared() const
reco::TransientTrack build(const reco::Track *p) const
TrajectoryStateClosestToPoint trajectoryStateClosestToPoint(const GlobalPoint &point) const
const edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackToken_
const double minTrackEta_
const bool keepPartialRegion_
double getECALIsolation(const edm::Event &, const edm::EventSetup &, const reco::TransientTrack track)
const PerigeeTrajectoryParameters & perigeeParameters() const
const edm::EDGetTokenT< std::vector< reco::Track > > trackCollectionToken_
static TrackQuality qualityByName(const std::string &name)
const bool keepTotalRegion_
double longitudinalImpactParameter() const
const double maxTrackIso_
const double maxSigInvMass_
const edm::EDGetToken recoMuonToken_
const edm::EDGetToken standaloneMuonToken_
const double maxTrackEta_
float degreesOfFreedom() const
GlobalVector momentum() const
GlobalPoint position() const
const double maxTransDCA_
Power< A, B >::type pow(const A &a, const B &b)
Definition at line 351 of file DisappearingMuonsSkimming.cc.
References edm::SortedCollection< T, SORT >::begin(), electronAnalyzer_cfi::DeltaR, ecalIsoConesize_, edm::SortedCollection< T, SORT >::end(), PV3DBase< T, PVType, FrameType >::eta(), geometryToken_, edm::EventSetup::getData(), CaloSubdetectorGeometry::getGeometry(), CaloGeometry::getSubdetectorGeometry(), iEvent, minEcalHitE_, TrajectoryStateClosestToPoint::position(), reducedBarrelRecHitCollectionToken_, reducedEndcapRecHitCollectionToken_, FrontierCondition_GT_autoExpress_cfi::t0, HLT_2022v15_cff::track, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by filter().
365 const DetId id = (*hit).detid();
368 if ((hitPos.
eta() *
t0.momentum().eta()) < 0) {
375 eDR += (*hit).energy();
379 const DetId id = (*hit).detid();
381 if ((hitPos.
eta() *
t0.momentum().eta()) < 0) {
388 eDR += (*hit).energy();
const double minEcalHitE_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
std::vector< EcalRecHit >::const_iterator const_iterator
const double ecalIsoConesize_
GlobalPoint position() const
const edm::EDGetTokenT< EcalRecHitCollection > reducedEndcapRecHitCollectionToken_
const_iterator begin() const
virtual std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
const_iterator end() const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geometryToken_
const edm::EDGetTokenT< EcalRecHitCollection > reducedBarrelRecHitCollectionToken_
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly