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 Attributes
RpcDigiToStubsConverterOmtf Class Reference

#include <OMTFinputMaker.h>

Inheritance diagram for RpcDigiToStubsConverterOmtf:
RpcDigiToStubsConverter DigiToStubsConverterBase

Public Member Functions

bool acceptDigi (const RPCDetId &rpcDetId, unsigned int iProcessor, l1t::tftype procType) override
 
void addRPCstub (MuonStubPtrs2D &muonStubsInLayers, const RPCDetId &roll, const RpcCluster &cluster, unsigned int iProcessor, l1t::tftype procTyp) override
 
 RpcDigiToStubsConverterOmtf (const OMTFConfiguration *config, const OmtfAngleConverter *angleConverter, const RpcClusterization *rpcClusterization, edm::EDGetTokenT< RPCDigiCollection > inputTokenRpc)
 
 ~RpcDigiToStubsConverterOmtf () override
 
- Public Member Functions inherited from RpcDigiToStubsConverter
void loadDigis (const edm::Event &event) override
 
void makeStubs (MuonStubPtrs2D &muonStubsInLayers, unsigned int iProcessor, l1t::tftype procTyp, int bxFrom, int bxTo) override
 
 RpcDigiToStubsConverter (const ProcConfigurationBase *config, edm::EDGetTokenT< RPCDigiCollection > inputTokenRpc, const RpcClusterization *rpcClusterization)
 
 ~RpcDigiToStubsConverter () override
 
- Public Member Functions inherited from DigiToStubsConverterBase
virtual ~DigiToStubsConverterBase ()
 

Private Attributes

const OmtfAngleConverterangleConverter = nullptr
 
const OMTFConfigurationconfig = nullptr
 

Additional Inherited Members

- Protected Attributes inherited from RpcDigiToStubsConverter
const ProcConfigurationBaseconfig
 
edm::EDGetTokenT
< RPCDigiCollection
inputTokenRpc
 
bool mergePhiAndTheta = true
 
const RpcClusterizationrpcClusterization
 
edm::Handle< RPCDigiCollectionrpcDigis
 

Detailed Description

Definition at line 73 of file OMTFinputMaker.h.

Constructor & Destructor Documentation

RpcDigiToStubsConverterOmtf::RpcDigiToStubsConverterOmtf ( const OMTFConfiguration config,
const OmtfAngleConverter angleConverter,
const RpcClusterization rpcClusterization,
edm::EDGetTokenT< RPCDigiCollection inputTokenRpc 
)
inline

Definition at line 75 of file OMTFinputMaker.h.

79  : RpcDigiToStubsConverter(config, inputTokenRpc, rpcClusterization),
80  config(config),
81  angleConverter(angleConverter){};
const OMTFConfiguration * config
const OmtfAngleConverter * angleConverter
RpcDigiToStubsConverter(const ProcConfigurationBase *config, edm::EDGetTokenT< RPCDigiCollection > inputTokenRpc, const RpcClusterization *rpcClusterization)
RpcDigiToStubsConverterOmtf::~RpcDigiToStubsConverterOmtf ( )
inlineoverride

Definition at line 83 of file OMTFinputMaker.h.

83 {};

Member Function Documentation

bool RpcDigiToStubsConverterOmtf::acceptDigi ( const RPCDetId rpcDetId,
unsigned int  iProcessor,
l1t::tftype  procType 
)
overridevirtual

Select RPC chambers connected to OMTF

RPC RE1/2 temporarily not used (rpcDetId.region()==1 && rpcDetId.station()==1 && rpcDetId.ring()<2) ||

Reimplemented from RpcDigiToStubsConverter.

Definition at line 191 of file OMTFinputMaker.cc.

References l1t::bmtf, config, l1t::emtf_neg, l1t::emtf_pos, OMTFConfiguration::getBarrelMax(), OMTFConfiguration::getBarrelMin(), OMTFConfiguration::getEndcap10DegMax(), OMTFConfiguration::getEndcap10DegMin(), OMTFinputMaker::getInputNumber(), RPCDetId::layer(), l1t::omtf_neg, l1t::omtf_pos, DetId::rawId(), RPCDetId::region(), RPCDetId::ring(), RPCDetId::roll(), RPCDetId::sector(), RPCDetId::station(), and RPCDetId::subsector().

191  {
192  unsigned int aMin = config->getBarrelMin()[iProcessor];
193  unsigned int aMax = config->getBarrelMax()[iProcessor];
194 
195  unsigned int aSector = rpcDetId.sector();
196 
198  if (procType == l1t::tftype::omtf_pos &&
199  (rpcDetId.region() < 0 || (rpcDetId.region() == 0 && rpcDetId.ring() != 2) ||
200  (rpcDetId.region() == 0 && rpcDetId.station() == 4) ||
201  (rpcDetId.region() == 0 && rpcDetId.station() == 2 && rpcDetId.layer() == 2 && rpcDetId.roll() == 1) ||
202  (rpcDetId.region() == 0 && rpcDetId.station() == 3 && rpcDetId.roll() == 1) ||
203  (rpcDetId.region() == 1 && rpcDetId.station() == 4) ||
205  (rpcDetId.region() == 1 && rpcDetId.station() > 0 && rpcDetId.ring() < 3)))
206  return false;
207 
208  if (procType == l1t::tftype::omtf_neg &&
209  (rpcDetId.region() > 0 || (rpcDetId.region() == 0 && rpcDetId.ring() != -2) ||
210  (rpcDetId.region() == 0 && rpcDetId.station() == 4) ||
211  (rpcDetId.region() == 0 && rpcDetId.station() == 2 && rpcDetId.layer() == 2 && rpcDetId.roll() == 1) ||
212  (rpcDetId.region() == 0 && rpcDetId.station() == 3 && rpcDetId.roll() == 1) ||
213  (rpcDetId.region() == -1 && rpcDetId.station() == 4) ||
214  //RPC RE1/2 temporarily not used (rpcDetId.region()==1 && rpcDetId.station()==1 && rpcDetId.ring()<2) ||
215  (rpcDetId.region() == -1 && rpcDetId.station() > 0 && rpcDetId.ring() < 3)))
216  return false;
217 
218  if (procType == l1t::tftype::omtf_pos || procType == l1t::tftype::omtf_neg) {
219  if (rpcDetId.region() != 0 && rpcDetId.station() == 3) { //endcaps, layer 17
220  unsigned int iInput = OMTFinputMaker::getInputNumber(config, rpcDetId.rawId(), iProcessor, procType);
221  if (iInput == 0 || iInput == 1)
222  return false; // FIXME (MK) there is no RPC link for that input, because it is taken by DAQ link
223  }
224  }
225 
226  if (procType == l1t::tftype::bmtf && rpcDetId.region() != 0)
227  return false;
228 
229  if (procType == l1t::tftype::emtf_pos &&
230  (rpcDetId.region() <= 0 || (rpcDetId.station() == 1 && rpcDetId.ring() == 3)))
231  return false;
232  if (procType == l1t::tftype::emtf_neg &&
233  (rpcDetId.region() >= 0 || (rpcDetId.station() == 1 && rpcDetId.ring() == 3)))
234  return false;
236  if (rpcDetId.region() == 0)
237  aSector = rpcDetId.sector();
238  if (rpcDetId.region() != 0) {
239  aSector = (rpcDetId.sector() - 1) * 6 + rpcDetId.subsector();
240  aMin = config->getEndcap10DegMin()[iProcessor];
241  aMax = config->getEndcap10DegMax()[iProcessor];
242  }
243 
244  if (aMax > aMin && aSector >= aMin && aSector <= aMax)
245  return true;
246  if (aMax < aMin && (aSector >= aMin || aSector <= aMax))
247  return true;
248 
249  return false;
250 }
const OMTFConfiguration * config
const std::vector< unsigned int > & getBarrelMax() const
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
const std::vector< unsigned int > & getEndcap10DegMin() const
int roll() const
Definition: RPCDetId.h:92
int ring() const
Definition: RPCDetId.h:59
const std::vector< unsigned int > & getEndcap10DegMax() const
int layer() const
Definition: RPCDetId.h:85
const std::vector< unsigned int > & getBarrelMin() const
unsigned int getInputNumber(unsigned int rawId, unsigned int iProcessor, l1t::tftype type)
int sector() const
Sector id: the group of chambers at same phi (and increasing r)
Definition: RPCDetId.h:81
int subsector() const
SubSector id : some sectors are divided along the phi direction in subsectors (from 1 to 4 in Barrel...
Definition: RPCDetId.h:88
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.
Definition: RPCDetId.h:53
int station() const
Definition: RPCDetId.h:78
void RpcDigiToStubsConverterOmtf::addRPCstub ( MuonStubPtrs2D muonStubsInLayers,
const RPCDetId roll,
const RpcCluster cluster,
unsigned int  iProcessor,
l1t::tftype  procTyp 
)
overridevirtual

Implements RpcDigiToStubsConverter.

Definition at line 150 of file OMTFinputMaker.cc.

References OMTFinputMaker::addStub(), angleConverter, RpcCluster::bx, MuonStub::bx, config, MuonStub::detId, MuonStub::etaHw, RpcCluster::firstStrip, OmtfAngleConverter::getGlobalEtaRpc(), OMTFConfiguration::getHwToLogicLayer(), OMTFinputMaker::getInputNumber(), OMTFConfiguration::getLayerNumber(), AngleConverterBase::getProcessorPhi(), OMTFinputMaker::getProcessorPhiZero(), RpcCluster::lastStrip, MuonStub::logicLayer, LogTrace, MuonStub::phiHw, MuonStub::qualityHw, DetId::rawId(), MuonStub::RPC, RpcCluster::size(), str, RpcCluster::timing, MuonStub::timing, and MuonStub::type.

154  {
155  unsigned int rawid = roll.rawId();
156 
157  unsigned int hwNumber = config->getLayerNumber(rawid);
158  unsigned int iLayer = config->getHwToLogicLayer().at(hwNumber);
159  unsigned int iInput = OMTFinputMaker::getInputNumber(config, rawid, iProcessor, procTyp);
160 
161  //LogTrace("l1tOmtfEventPrint")<<"ADDING HIT: iLayer = " << iLayer << " iInput: " << iInput << " iPhi: " << iPhi << std::endl;
162 
163  //if (iLayer==17 && (iInput==0 || iInput==1)) continue; // FIXME (MK) there is no RPC link for that input, because it is taken by DAQ link
164 
165  MuonStub stub;
166  stub.type = MuonStub::RPC;
168  OMTFinputMaker::getProcessorPhiZero(config, iProcessor), procTyp, roll, cluster.firstStrip, cluster.lastStrip);
169  stub.etaHw = angleConverter->getGlobalEtaRpc(rawid, cluster.firstStrip);
170 
171  stub.qualityHw = cluster.size();
172 
173  stub.bx = cluster.bx;
174  stub.timing = cluster.timing;
175 
176  //stub.etaType = ?? TODO
177  stub.logicLayer = iLayer;
178  stub.detId = rawid;
179 
180  OMTFinputMaker::addStub(config, muonStubsInLayers, iLayer, iInput, stub);
181 
182  std::ostringstream str;
183  str << " RPC halfDigi "
184  << " begin: " << cluster.firstStrip << " end: " << cluster.lastStrip << " iPhi: " << stub.phiHw
185  << " iEta: " << stub.etaHw << " hwNumber: " << hwNumber << " iInput: " << iInput << " iLayer: " << iLayer
186  << std::endl;
187 
188  LogTrace("l1tOmtfEventPrint") << str.str();
189 }
const OMTFConfiguration * config
int timing
Definition: MuonStub.h:49
unsigned int size() const
virtual int getGlobalEtaRpc(unsigned int rawid, const unsigned int &aDigi) const
Convert local eta coordinate to global digital microGMT scale.
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
int detId
Definition: MuonStub.h:56
const OmtfAngleConverter * angleConverter
Type type
Definition: MuonStub.h:37
int qualityHw
error of the eta measurement
Definition: MuonStub.h:46
#define LogTrace(id)
static int getProcessorPhiZero(const OMTFConfiguration *config, unsigned int iProcessor)
const std::map< int, int > & getHwToLogicLayer() const
int etaHw
Definition: MuonStub.h:44
virtual int getProcessorPhi(int phiZero, l1t::tftype part, int dtScNum, int dtPhi) const
uint32_t getLayerNumber(uint32_t rawId) const
unsigned int getInputNumber(unsigned int rawId, unsigned int iProcessor, l1t::tftype type)
int bx
Definition: MuonStub.h:48
unsigned int logicLayer
Definition: MuonStub.h:52
static void addStub(const OMTFConfiguration *config, MuonStubPtrs2D &muonStubsInLayers, unsigned int iLayer, unsigned int iInput, MuonStub &stub)
int phiHw
Definition: MuonStub.h:39
#define str(s)

Member Data Documentation

const OmtfAngleConverter* RpcDigiToStubsConverterOmtf::angleConverter = nullptr
private

Definition at line 95 of file OMTFinputMaker.h.

Referenced by addRPCstub().

const OMTFConfiguration* RpcDigiToStubsConverterOmtf::config = nullptr
private