18 LogDebug(
"InitialGrouping") <<
"InitialGrouping: constructor";
32 LogDebug(
"InitialGrouping") <<
"InitialGrouping: destructor";
40 LogDebug(
"InitialGrouping") <<
"InitialGrouping::initialiase";
52 LogDebug(
"InitialGrouping") <<
"InitialGrouping::run Reading SL" << supLayer;
55 for (
int baseCh = 0; baseCh <
TOTAL_BTI; baseCh++) {
62 LogDebug(
"InitialGrouping") <<
"InitialGrouping::run --> now check pathId";
63 for (
int pathId = 0; pathId < 8; pathId++) {
66 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::run] mixChannels calling";
69 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::run] mixChannels end";
74 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::run] end";
91 for (
const auto &dtLayerId_It : *digis) {
92 const DTLayerId dtLId = dtLayerId_It.first;
99 int wire = (*digiIt).wire() - 1;
100 int digiTIME = (*digiIt).time();
101 int digiTIMEPhase2 = digiTIME;
104 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::setInChannels] SL" << sl <<
" L" <<
layer <<
" : " << wire
105 <<
" " << digiTIMEPhase2;
107 dtpAux.setTDCTimeStamp(digiTIMEPhase2);
108 dtpAux.setChannelId(wire);
109 dtpAux.setLayerId(
layer);
110 dtpAux.setSuperLayerId(sl);
111 dtpAux.setCameraId(dtLId.
rawId());
142 if (baseChannel - 1 >= 0)
155 if (baseChannel - 1 >= 0)
187 if ((lEmpty[0] && lEmpty[1])
or (lEmpty[0] && lEmpty[2])
or (lEmpty[0] && lEmpty[3])
or (lEmpty[1] && lEmpty[2])
or 188 (lEmpty[1] && lEmpty[3])
or (lEmpty[2] && lEmpty[3])) {
217 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::mixChannel] begin";
221 int numPrimsPerLayer[4] = {0, 0, 0, 0};
223 int channelEmptyCnt = 0;
230 if (channelEmptyCnt >= 2)
237 unsigned int maxPrimsToBeRetrieved =
muxInChannels_[canal].size();
247 if (maxPrimsToBeRetrieved == 0)
248 maxPrimsToBeRetrieved = 1;
263 if (dtpAux.tdcTimeStamp() < 0 &&
items > 0)
275 if (dtpAux.superLayerId() == supLayer)
279 numPrimsPerLayer[
layer]++;
284 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::mixChannels] filled data";
289 for (chIdx[0] = 0; chIdx[0] < numPrimsPerLayer[0]; chIdx[0]++) {
290 for (chIdx[1] = 0; chIdx[1] < numPrimsPerLayer[1]; chIdx[1]++) {
291 for (chIdx[2] = 0; chIdx[2] < numPrimsPerLayer[2]; chIdx[2]++) {
292 for (chIdx[3] = 0; chIdx[3] < numPrimsPerLayer[3]; chIdx[3]++) {
299 ptrPrimitive.push_back((
data[
i])[chIdx[
i]]);
302 <<
"[InitialGrouping::mixChannels] reading " << ptrPrimitive[
i].tdcTimeStamp();
305 auto ptrMuonPath = std::make_shared<MuonPath>(ptrPrimitive);
319 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::mixChannels] muonPath is analyzable? " << ptrMuonPath;
320 if (ptrMuonPath->isAnalyzable()) {
322 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::mixChannels] YES";
335 LogDebug(
"InitialGrouping") <<
"[InitialGrouping::mixChannels] isNOT equal to previous";
337 outMuonPath.push_back(
std::move(ptrMuonPath));
339 ptrPrimitive.clear();
void selectInChannels(int baseCh)
int prevTDCTimeStamps_[4]
constexpr int CELL_HORIZONTAL_LAYOUTS[8][4]
std::vector< MuonPathPtr > MuonPathPtrs
DTPrimitives channelIn_[cmsdt::NUM_LAYERS][cmsdt::NUM_CH_PER_LAYER]
bool isEqualComb2Previous(DTPrimitives &ptr)
DTPrimitives muxInChannels_[cmsdt::NUM_CELLS_PER_BLOCK]
InitialGrouping(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
constexpr std::array< uint8_t, layerIndexSize > layer
U second(std::pair< T, U > const &p)
constexpr int NUM_SUPERLAYERS
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
void resetPrvTDCTStamp(void)
constexpr int CHANNELS_PATH_ARRANGEMENTS[8][4]
void initialise(const edm::EventSetup &iEventSetup) override
int superlayer() const
Return the superlayer number (deprecated method name)
constexpr int NUM_CH_PER_LAYER
constexpr uint32_t rawId() const
get the raw id
bool notEnoughDataInChannels(void)
void run(edm::Event &iEvent, const edm::EventSetup &iEventSetup, const DTDigiCollection &digis, MuonPathPtrs &outMpath) override
std::vector< DigiType >::const_iterator const_iterator
int layer() const
Return the layer number.
deadvectors [0] push_back({0.0175431, 0.538005, 6.80997, 13.29})
char data[epos_bytes_allocation]
std::vector< DTPrimitive > DTPrimitives
~InitialGrouping() override
void setInChannels(const DTDigiCollection *digi, int sl)
void mixChannels(int sl, int pathId, MuonPathPtrs &outMpath)