CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
GlobalMuonProducer Class Reference

#include <GlobalMuonProducer.h>

Inheritance diagram for GlobalMuonProducer:
edm::stream::EDProducer<>

Public Member Functions

 GlobalMuonProducer (const edm::ParameterSet &)
 constructor with config More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 reconstruct muons More...
 
 ~GlobalMuonProducer () override
 destructor More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
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 EDProduceroperator= (const EDProducer &)=delete
 

Private Member Functions

void setAlias (std::string alias)
 

Private Attributes

edm::EDGetTokenT< TrajTrackAssociationCollectionstaAssoMapToken
 
edm::EDGetTokenT< reco::TrackCollectionstaMuonsToken
 STA Tokens. More...
 
edm::EDGetTokenT< std::vector< Trajectory > > staMuonsTrajToken
 
std::string theAlias
 
MuonServiceProxytheService
 the event setup proxy, it takes care the services update More...
 
edm::InputTag theSTACollectionLabel
 
std::unique_ptr< MuonTrackFindertheTrackFinder
 
edm::EDGetTokenT< reco::TrackToTrackMapupdatedStaAssoMapToken
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Global muon reconstructor: reconstructs muons using DT, CSC, RPC and tracker information,
starting from a standalone reonstructed muon.

Author
R.Bellan - INFN TO

Definition at line 36 of file GlobalMuonProducer.h.

Constructor & Destructor Documentation

◆ GlobalMuonProducer()

GlobalMuonProducer::GlobalMuonProducer ( const edm::ParameterSet parameterSet)

constructor with config

Definition at line 34 of file GlobalMuonProducer.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::getParameter(), label, LogTrace, eostools::move(), MuonServiceProxy_cff::MuonServiceProxy, edm::parameterSet(), AlCaHLTBitMon_QueryRunRegistry::string, and cosmics_id::trackCollectionTag.

34  {
35  LogTrace("Muon|RecoMuon|GlobalMuonProducer") << "constructor called" << endl;
36 
37  // Parameter set for the Builder
38  ParameterSet trajectoryBuilderParameters = parameterSet.getParameter<ParameterSet>("GLBTrajBuilderParameters");
39  InputTag trackCollectionTag = parameterSet.getParameter<InputTag>("TrackerCollectionLabel");
40  trajectoryBuilderParameters.addParameter<InputTag>("TrackerCollectionLabel", trackCollectionTag);
41  InputTag vertexCollectionTag = parameterSet.getParameter<InputTag>("VertexCollectionLabel");
42  trajectoryBuilderParameters.addParameter<InputTag>("VertexCollectionLabel", vertexCollectionTag);
43  bool selectHighPurity_ = parameterSet.getParameter<bool>("selectHighPurity");
44  trajectoryBuilderParameters.addParameter<bool>("selectHighPurity", selectHighPurity_);
45 
46  // STA Muon Collection Label
47  theSTACollectionLabel = parameterSet.getParameter<InputTag>("MuonCollectionLabel");
48  staMuonsToken = consumes<reco::TrackCollection>(parameterSet.getParameter<InputTag>("MuonCollectionLabel"));
50  consumes<std::vector<Trajectory> >(parameterSet.getParameter<InputTag>("MuonCollectionLabel").label());
52  consumes<TrajTrackAssociationCollection>(parameterSet.getParameter<InputTag>("MuonCollectionLabel").label());
54  consumes<reco::TrackToTrackMap>(parameterSet.getParameter<InputTag>("MuonCollectionLabel").label());
55 
56  // service parameters
57  ParameterSet serviceParameters = parameterSet.getParameter<ParameterSet>("ServiceParameters");
58 
59  // TrackLoader parameters
60  ParameterSet trackLoaderParameters = parameterSet.getParameter<ParameterSet>("TrackLoaderParameters");
61 
62  // the services
63  theService = new MuonServiceProxy(serviceParameters, consumesCollector());
64 
65  // instantiate the concrete trajectory builder in the Track Finder
66  edm::ConsumesCollector iC = consumesCollector();
67  auto mtl = std::make_unique<MuonTrackLoader>(trackLoaderParameters, iC, theService);
68  auto gmtb = std::make_unique<GlobalMuonTrajectoryBuilder>(trajectoryBuilderParameters, theService, iC);
69 
70  theTrackFinder = std::make_unique<MuonTrackFinder>(std::move(gmtb), std::move(mtl), iC);
71 
72  setAlias(parameterSet.getParameter<std::string>("@module_label"));
73  produces<reco::TrackCollection>().setBranchAlias(theAlias + "Tracks");
74  produces<TrackingRecHitCollection>().setBranchAlias(theAlias + "RecHits");
75  produces<reco::TrackExtraCollection>().setBranchAlias(theAlias + "TrackExtras");
76  produces<vector<Trajectory> >().setBranchAlias(theAlias + "Trajectories");
77  produces<TrajTrackAssociationCollection>().setBranchAlias(theAlias + "TrajTrackMap");
78  produces<reco::MuonTrackLinksCollection>().setBranchAlias(theAlias + "s");
79 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
edm::EDGetTokenT< TrajTrackAssociationCollection > staAssoMapToken
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
Definition: Provenance.cc:11
edm::EDGetTokenT< reco::TrackToTrackMap > updatedStaAssoMapToken
#define LogTrace(id)
edm::EDGetTokenT< reco::TrackCollection > staMuonsToken
STA Tokens.
trackCollectionTag
Definition: cosmics_id.py:5
char const * label
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:136
std::unique_ptr< MuonTrackFinder > theTrackFinder
MuonServiceProxy * theService
the event setup proxy, it takes care the services update
void setAlias(std::string alias)
edm::EDGetTokenT< std::vector< Trajectory > > staMuonsTrajToken
def move(src, dest)
Definition: eostools.py:511
edm::InputTag theSTACollectionLabel

◆ ~GlobalMuonProducer()

GlobalMuonProducer::~GlobalMuonProducer ( )
override

destructor

Definition at line 84 of file GlobalMuonProducer.cc.

References LogTrace.

84  {
85  LogTrace("Muon|RecoMuon|GlobalMuonProducer") << "destructor called" << endl;
86  if (theService)
87  delete theService;
88 }
#define LogTrace(id)
MuonServiceProxy * theService
the event setup proxy, it takes care the services update

Member Function Documentation

◆ produce()

void GlobalMuonProducer::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
override

reconstruct muons

Definition at line 93 of file GlobalMuonProducer.cc.

References edm::AssociationMap< Tag >::begin(), edm::AssociationMap< Tag >::end(), options_cfi::eventSetup, edm::AssociationMap< Tag >::find(), edm::Ref< C, T, F >::isNonnull(), ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, LogTrace, metname, and position.

93  {
94  const string metname = "Muon|RecoMuon|GlobalMuonProducer";
95  LogTrace(metname) << endl << endl << endl;
96  LogTrace(metname) << "Global Muon Reconstruction started" << endl;
97 
98  // Update the services
99  theService->update(eventSetup);
100 
101  // Take the STA muon container(s)
103  event.getByToken(staMuonsToken, staMuons);
104 
105  Handle<vector<Trajectory> > staMuonsTraj;
106 
107  LogTrace(metname) << "Taking " << staMuons->size() << " Stand Alone Muons " << endl;
108 
109  vector<MuonTrajectoryBuilder::TrackCand> staTrackCands;
110 
112 
113  edm::Handle<reco::TrackToTrackMap> updatedStaAssoMap;
114 
115  if (event.getByToken(staMuonsTrajToken, staMuonsTraj) && event.getByToken(staAssoMapToken, staAssoMap) &&
116  event.getByToken(updatedStaAssoMapToken, updatedStaAssoMap)) {
117  for (TrajTrackAssociationCollection::const_iterator it = staAssoMap->begin(); it != staAssoMap->end(); ++it) {
118  const Ref<vector<Trajectory> > traj = it->key;
119  const reco::TrackRef tkRegular = it->val;
120  reco::TrackRef tkUpdated;
123  if (theSTACollectionLabel.instance() == "UpdatedAtVtx") {
124  iEnd = updatedStaAssoMap->end();
125  iii = updatedStaAssoMap->find(it->val);
126  if (iii != iEnd)
127  tkUpdated = (*updatedStaAssoMap)[it->val];
128  }
129 
130  int etaFlip1 =
131  ((tkUpdated.isNonnull() && tkRegular.isNonnull()) && ((tkUpdated->eta() * tkRegular->eta()) < 0)) ? -1 : 1;
132 
133  const reco::TrackRef tk = (tkUpdated.isNonnull() && etaFlip1 == 1) ? tkUpdated : tkRegular;
134 
136  if (traj->isValid())
137  tkCand.first = &*traj;
138  staTrackCands.push_back(tkCand);
139  }
140  } else {
141  for (unsigned int position = 0; position != staMuons->size(); ++position) {
142  reco::TrackRef staTrackRef(staMuons, position);
144  staTrackCands.push_back(staCand);
145  }
146  }
147 
148  theTrackFinder->reconstruct(staTrackCands, event, eventSetup);
149 
150  LogTrace(metname) << "Event loaded"
151  << "================================" << endl
152  << endl;
153 }
std::pair< const Trajectory *, reco::TrackRef > TrackCand
const std::string metname
std::string const & instance() const
Definition: InputTag.h:37
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
edm::EDGetTokenT< TrajTrackAssociationCollection > staAssoMapToken
edm::EDGetTokenT< reco::TrackToTrackMap > updatedStaAssoMapToken
const_iterator find(const key_type &k) const
find element with specified reference key
#define LogTrace(id)
const_iterator end() const
last iterator over the map (read only)
edm::EDGetTokenT< reco::TrackCollection > staMuonsToken
STA Tokens.
std::unique_ptr< MuonTrackFinder > theTrackFinder
const_iterator begin() const
first iterator over the map (read only)
static int position[264][3]
Definition: ReadPGInfo.cc:289
MuonServiceProxy * theService
the event setup proxy, it takes care the services update
edm::EDGetTokenT< std::vector< Trajectory > > staMuonsTrajToken
Definition: event.py:1
edm::InputTag theSTACollectionLabel

◆ setAlias()

void GlobalMuonProducer::setAlias ( std::string  alias)
inlineprivate

Definition at line 62 of file GlobalMuonProducer.h.

References SiStripOfflineCRack_cfg::alias, and theAlias.

62  {
63  alias.erase(alias.size() - 1, alias.size());
64  theAlias = alias;
65  }

Member Data Documentation

◆ staAssoMapToken

edm::EDGetTokenT<TrajTrackAssociationCollection> GlobalMuonProducer::staAssoMapToken
private

Definition at line 52 of file GlobalMuonProducer.h.

◆ staMuonsToken

edm::EDGetTokenT<reco::TrackCollection> GlobalMuonProducer::staMuonsToken
private

STA Tokens.

Definition at line 50 of file GlobalMuonProducer.h.

◆ staMuonsTrajToken

edm::EDGetTokenT<std::vector<Trajectory> > GlobalMuonProducer::staMuonsTrajToken
private

Definition at line 51 of file GlobalMuonProducer.h.

◆ theAlias

std::string GlobalMuonProducer::theAlias
private

Definition at line 60 of file GlobalMuonProducer.h.

Referenced by setAlias().

◆ theService

MuonServiceProxy* GlobalMuonProducer::theService
private

the event setup proxy, it takes care the services update

Definition at line 58 of file GlobalMuonProducer.h.

◆ theSTACollectionLabel

edm::InputTag GlobalMuonProducer::theSTACollectionLabel
private

Definition at line 48 of file GlobalMuonProducer.h.

◆ theTrackFinder

std::unique_ptr<MuonTrackFinder> GlobalMuonProducer::theTrackFinder
private

Definition at line 55 of file GlobalMuonProducer.h.

◆ updatedStaAssoMapToken

edm::EDGetTokenT<reco::TrackToTrackMap> GlobalMuonProducer::updatedStaAssoMapToken
private

Definition at line 53 of file GlobalMuonProducer.h.