CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
< TrajTrackAssociationCollection
staAssoMapToken
 
edm::EDGetTokenT
< reco::TrackCollection
staMuonsToken
 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::TrackToTrackMap
updatedStaAssoMapToken
 

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 ( const edm::ParameterSet parameterSet)

constructor with config

Definition at line 35 of file GlobalMuonProducer.cc.

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

35  {
36  LogTrace("Muon|RecoMuon|GlobalMuonProducer") << "constructor called" << endl;
37 
38  // Parameter set for the Builder
39  ParameterSet trajectoryBuilderParameters = parameterSet.getParameter<ParameterSet>("GLBTrajBuilderParameters");
40  InputTag trackCollectionTag = parameterSet.getParameter<InputTag>("TrackerCollectionLabel");
41  trajectoryBuilderParameters.addParameter<InputTag>("TrackerCollectionLabel", trackCollectionTag);
42 
43  // STA Muon Collection Label
44  theSTACollectionLabel = parameterSet.getParameter<InputTag>("MuonCollectionLabel");
45  staMuonsToken = consumes<reco::TrackCollection>(parameterSet.getParameter<InputTag>("MuonCollectionLabel"));
47  consumes<std::vector<Trajectory> >(parameterSet.getParameter<InputTag>("MuonCollectionLabel").label());
49  consumes<TrajTrackAssociationCollection>(parameterSet.getParameter<InputTag>("MuonCollectionLabel").label());
51  consumes<reco::TrackToTrackMap>(parameterSet.getParameter<InputTag>("MuonCollectionLabel").label());
52 
53  // service parameters
54  ParameterSet serviceParameters = parameterSet.getParameter<ParameterSet>("ServiceParameters");
55 
56  // TrackLoader parameters
57  ParameterSet trackLoaderParameters = parameterSet.getParameter<ParameterSet>("TrackLoaderParameters");
58 
59  // the services
60  theService = new MuonServiceProxy(serviceParameters, consumesCollector());
61 
62  // instantiate the concrete trajectory builder in the Track Finder
63  edm::ConsumesCollector iC = consumesCollector();
64  auto mtl = std::make_unique<MuonTrackLoader>(trackLoaderParameters, iC, theService);
65  auto gmtb = std::make_unique<GlobalMuonTrajectoryBuilder>(trajectoryBuilderParameters, theService, iC);
66 
67  theTrackFinder = std::make_unique<MuonTrackFinder>(std::move(gmtb), std::move(mtl), iC);
68 
69  setAlias(parameterSet.getParameter<std::string>("@module_label"));
70  produces<reco::TrackCollection>().setBranchAlias(theAlias + "Tracks");
71  produces<TrackingRecHitCollection>().setBranchAlias(theAlias + "RecHits");
72  produces<reco::TrackExtraCollection>().setBranchAlias(theAlias + "TrackExtras");
73  produces<vector<Trajectory> >().setBranchAlias(theAlias + "Trajectories");
74  produces<TrajTrackAssociationCollection>().setBranchAlias(theAlias + "TrajTrackMap");
75  produces<reco::MuonTrackLinksCollection>().setBranchAlias(theAlias + "s");
76 }
edm::EDGetTokenT< TrajTrackAssociationCollection > staAssoMapToken
edm::EDGetTokenT< reco::TrackToTrackMap > updatedStaAssoMapToken
#define LogTrace(id)
edm::EDGetTokenT< reco::TrackCollection > staMuonsToken
STA Tokens.
char const * label
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:135
def move
Definition: eostools.py:511
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
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
edm::InputTag theSTACollectionLabel
GlobalMuonProducer::~GlobalMuonProducer ( )
override

destructor

Definition at line 81 of file GlobalMuonProducer.cc.

References LogTrace.

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

Member Function Documentation

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

reconstruct muons

Definition at line 90 of file GlobalMuonProducer.cc.

References edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator, edm::Event::getByToken(), edm::Ref< C, T, F >::isNonnull(), edm::Ref< C, T, F >::key(), LogTrace, metname, and position.

90  {
91  const string metname = "Muon|RecoMuon|GlobalMuonProducer";
92  LogTrace(metname) << endl << endl << endl;
93  LogTrace(metname) << "Global Muon Reconstruction started" << endl;
94 
95  // Update the services
96  theService->update(eventSetup);
97 
98  // Take the STA muon container(s)
100  event.getByToken(staMuonsToken, staMuons);
101 
102  Handle<vector<Trajectory> > staMuonsTraj;
103 
104  LogTrace(metname) << "Taking " << staMuons->size() << " Stand Alone Muons " << endl;
105 
106  vector<MuonTrajectoryBuilder::TrackCand> staTrackCands;
107 
109 
110  edm::Handle<reco::TrackToTrackMap> updatedStaAssoMap;
111 
112  if (event.getByToken(staMuonsTrajToken, staMuonsTraj) && event.getByToken(staAssoMapToken, staAssoMap) &&
113  event.getByToken(updatedStaAssoMapToken, updatedStaAssoMap)) {
114  for (TrajTrackAssociationCollection::const_iterator it = staAssoMap->begin(); it != staAssoMap->end(); ++it) {
115  const Ref<vector<Trajectory> > traj = it->key;
116  const reco::TrackRef tkRegular = it->val;
117  reco::TrackRef tkUpdated;
120  if (theSTACollectionLabel.instance() == "UpdatedAtVtx") {
121  iEnd = updatedStaAssoMap->end();
122  iii = updatedStaAssoMap->find(it->val);
123  if (iii != iEnd)
124  tkUpdated = (*updatedStaAssoMap)[it->val];
125  }
126 
127  int etaFlip1 =
128  ((tkUpdated.isNonnull() && tkRegular.isNonnull()) && ((tkUpdated->eta() * tkRegular->eta()) < 0)) ? -1 : 1;
129 
130  const reco::TrackRef tk = (tkUpdated.isNonnull() && etaFlip1 == 1) ? tkUpdated : tkRegular;
131 
133  if (traj->isValid())
134  tkCand.first = &*traj;
135  staTrackCands.push_back(tkCand);
136  }
137  } else {
138  for (unsigned int position = 0; position != staMuons->size(); ++position) {
139  reco::TrackRef staTrackRef(staMuons, position);
141  staTrackCands.push_back(staCand);
142  }
143  }
144 
145  theTrackFinder->reconstruct(staTrackCands, event, eventSetup);
146 
147  LogTrace(metname) << "Event loaded"
148  << "================================" << endl
149  << endl;
150 }
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
std::pair< const Trajectory *, reco::TrackRef > TrackCand
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
const std::string metname
key_type key() const
Accessor for product key.
Definition: Ref.h:250
edm::EDGetTokenT< TrajTrackAssociationCollection > staAssoMapToken
edm::EDGetTokenT< reco::TrackToTrackMap > updatedStaAssoMapToken
#define LogTrace(id)
edm::EDGetTokenT< reco::TrackCollection > staMuonsToken
STA Tokens.
std::unique_ptr< MuonTrackFinder > theTrackFinder
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
std::string const & instance() const
Definition: InputTag.h:37
edm::InputTag theSTACollectionLabel
void GlobalMuonProducer::setAlias ( std::string  alias)
inlineprivate

Definition at line 62 of file GlobalMuonProducer.h.

References HLT_FULL_cff::alias, and theAlias.

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

Member Data Documentation

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

Definition at line 52 of file GlobalMuonProducer.h.

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

STA Tokens.

Definition at line 50 of file GlobalMuonProducer.h.

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

Definition at line 51 of file GlobalMuonProducer.h.

std::string GlobalMuonProducer::theAlias
private

Definition at line 60 of file GlobalMuonProducer.h.

Referenced by setAlias().

MuonServiceProxy* GlobalMuonProducer::theService
private

the event setup proxy, it takes care the services update

Definition at line 58 of file GlobalMuonProducer.h.

edm::InputTag GlobalMuonProducer::theSTACollectionLabel
private

Definition at line 48 of file GlobalMuonProducer.h.

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

Definition at line 55 of file GlobalMuonProducer.h.

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

Definition at line 53 of file GlobalMuonProducer.h.