89 m_endOfBx(
false), m_currType(0), m_currEvt(0)
92 produces<RegionalMuonCandBxCollection>(
"BarrelTFMuons");
93 produces<RegionalMuonCandBxCollection>(
"OverlapTFMuons");
94 produces<RegionalMuonCandBxCollection>(
"ForwardTFMuons");
95 produces<MuonCaloSumBxCollection>(
"TriggerTowerSums");
146 for (
size_t cntr = 0; cntr < bitstr.size(); ++cntr) {
147 char c = bitstr[cntr];
171 std::vector<int> bar{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
172 std::vector<int> ovl_neg{0, 0, 0, 0, 0, 0};
173 std::vector<int> ovl_pos{0, 0, 0, 0, 0, 0};
174 std::vector<int> fwd_neg{0, 0, 0, 0, 0, 0};
175 std::vector<int> fwd_pos{0, 0, 0, 0, 0, 0};
182 if (lineID ==
"BAR" || lineID ==
"OVL-" || lineID ==
"FWD-" || lineID ==
"OVL+" || lineID ==
"FWD+") {
196 int globalPhi =
int(tmp*0.560856864654333
f);
197 int globalWedgePhi = (globalPhi+24)%576;
198 int globalSectorPhi = (globalPhi-24);
199 if (globalSectorPhi < 0) {
200 globalSectorPhi += 576;
206 if (lineID ==
"BAR") {
207 int processor = globalWedgePhi / 48 + 1;
208 int localPhi = globalWedgePhi%48;
212 if (bar[processor-1] > 3) skip =
true;
214 if (lineID ==
"OVL-") {
215 int processor = globalSectorPhi / 96 + 1;
216 int localPhi = globalSectorPhi%96;
219 ovl_neg[processor-1]++;
220 if (ovl_neg[processor-1] > 3) skip =
true;
222 if (lineID ==
"OVL+") {
223 int processor = globalSectorPhi / 96 + 1;
224 int localPhi = globalSectorPhi%96;
227 ovl_pos[processor-1]++;
228 if (ovl_pos[processor-1] > 3) skip =
true;
230 if (lineID ==
"FWD-") {
231 int processor = globalSectorPhi / 96 + 1;
232 int localPhi = globalSectorPhi%96;
235 fwd_neg[processor-1]++;
236 if (fwd_neg[processor-1] > 3) skip =
true;
238 if (lineID ==
"FWD+") {
239 int processor = globalSectorPhi / 96 + 1;
240 int localPhi = globalSectorPhi%96;
243 fwd_pos[processor-1]++;
244 if (fwd_pos[processor-1] > 3) skip =
true;
248 tmp =
int(tmp*0.9090909090f);
268 if (
m_currType == 0 && !skip) barrelMuons->push_back(0, mu);
275 }
else if (lineID ==
"EVT") {
279 if (lineID ==
"CALO") {
280 for (
int i = 0;
i < 28; ++
i) {
282 int iphi = caloCounter;
290 towerSums->push_back(0, tSum);
T getParameter(std::string const &) const
void setHwPhi(int bits)
Set compressed relative phi as transmitted by hardware LSB = 2*pi/576 (8 bits)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
void setEtaBits(int bits)
BXVector< RegionalMuonCand > RegionalMuonCandBxCollection
#define DEFINE_FWK_MODULE(type)
BXVector< MuonCaloSum > MuonCaloSumBxCollection
void addDefault(ParameterSetDescription const &psetDescription)
void setTFIdentifiers(int processor, tftype trackFinder)
Set the processor ID, track-finder type. From these two, the link is set.
void setPhiBits(int bits)
void setHwQual(int bits)
Set compressed quality code as transmitted by hardware (4 bits)
void setHwPt(int bits)
Set compressed pT as transmitted by hardware LSB = 0.5 (9 bits)
void setHwEta(int bits)
Set compressed eta as transmitted by hardware LSB = 0.010875 (9 bits)
const int processor() const
Get processor ID on which the candidate was found (0..5 for OMTF/EMTF; 0..11 for BMTF) ...
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
et
define resolution functions of each parameter
std::vector< std::vector< double > > tmp
void setHwSignValid(int bits)
Set whether charge measurement is valid (0 for high pT muons)
void setHwSign(int bits)
Set charge sign bit (charge = (-1)^(sign))