64 const static int m_maxMuons = 108;
80 : m_currEvt(0), m_rnd(0) {
84 produces<RegionalMuonCandBxCollection>(
"BarrelTFMuons");
85 produces<RegionalMuonCandBxCollection>(
"OverlapTFMuons");
86 produces<RegionalMuonCandBxCollection>(
"ForwardTFMuons");
87 produces<MuonCaloSumBxCollection>(
"TriggerTowerSums");
107 std::vector<RegionalMuonCand> bmMuons;
108 std::vector<RegionalMuonCand> omMuons;
109 std::vector<RegionalMuonCand> emMuons;
111 std::vector<int> muIndices;
119 muIndices.push_back(cntr);
123 LogTrace(
"GlobalMuon") <<
" GenParticleCollection not found." << std::endl;
129 const float phiToInt = 91.67324722093171f;
131 const float etaToInt = 90.9090909090f;
132 const int maxPt = (1 << 9) - 1;
137 for (
auto it = muIndices.begin();
it != muIndices.end(); ++
it) {
144 double eta = mcMuon.
eta();
145 if (fabs(
eta) > 2.45)
150 double phi = mcMuon.
phi();
161 int globalWedgePhi = (
hwPhi + 24) % 576;
162 int localPhi = globalWedgePhi % 48;
163 int processor = globalWedgePhi / 48 + 1;
164 int globalSectorPhi = (
hwPhi - 24);
165 if (globalSectorPhi < 0) {
166 globalSectorPhi += 576;
169 if (fabs(
eta) > 0.8) {
170 if (fabs(
eta) < 1.2) {
172 processor = globalSectorPhi / 96 + 1;
173 localPhi = globalSectorPhi % 96;
176 processor = globalSectorPhi / 96 + 1;
177 localPhi = globalSectorPhi % 96;
180 mu.setHwPhi(localPhi);
181 mu.setTFIdentifiers(processor, tf);
188 if (fabs(
eta) < 0.8 && bmMuons.size() < 36) {
189 bmMuons.push_back(
mu);
191 }
else if (fabs(
eta) < 1.2 && omMuons.size() < 36) {
192 omMuons.push_back(
mu);
194 }
else if (emMuons.size() < 36) {
195 emMuons.push_back(
mu);
204 for (
const auto&
mu : bmMuons) {
205 barrelMuons->push_back(0,
mu);
208 for (
const auto&
mu : omMuons) {
209 overlapMuons->push_back(0,
mu);
212 for (
const auto&
mu : emMuons) {
213 endcapMuons->push_back(0,
mu);
216 for (
int i = 0;
i < 1008; ++
i) {
224 towerSums->push_back(0, sum);
BXVector< RegionalMuonCand > RegionalMuonCandBxCollection
virtual double pt() const =0
transverse momentum
BXVector< MuonCaloSum > MuonCaloSumBxCollection
virtual int status() const =0
status word
const int processor() const
Get processor ID on which the candidate was found (0..5 for OMTF/EMTF; 0..11 for BMTF) ...
void addDefault(ParameterSetDescription const &psetDescription)
Abs< T >::type abs(const T &t)
#define DEFINE_FWK_MODULE(type)
virtual int charge() const =0
electric charge
virtual int pdgId() const =0
PDG identifier.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
virtual double phi() const =0
momentum azimuthal angle
virtual double eta() const =0
momentum pseudorapidity