70 using namespace cmsdt;
73 typedef std::map<DTChamberId, DTDigiCollection, std::less<DTChamberId>>
DTDigiMap;
99 bool hasPosRF(
int wh,
int sec)
const;
105 void setChiSquareThreshold(
float ch2Thr);
149 std::vector<DTDigiCollection*> distribDigis(
std::queue<std::pair<DTLayerId, DTDigi>>& inQ);
150 void processDigi(
std::queue<std::pair<DTLayerId, DTDigi>>& inQ,
157 void assignIndex(std::vector<metaPrimitive>& inMPaths);
158 void assignIndexPerBX(std::vector<metaPrimitive>& inMPaths);
161 const std::unordered_map<int, int>
qmap_;
166 bool operator()(std::pair<DTLayerId, DTDigi>
a, std::pair<DTLayerId, DTDigi>
b)
const {
167 return (
a.second.time() <
b.second.time());
169 }
const DigiTimeOrdering;
173 : qmap_({{8, 8}, {7, 7}, {6, 6}, {4, 4}, {3, 3}, {2, 2}, {1, 1}}) {
174 produces<L1Phase2MuDTPhContainer>();
175 produces<L1Phase2MuDTThContainer>();
176 produces<L1Phase2MuDTExtPhContainer>();
177 produces<L1Phase2MuDTExtThContainer>();
179 debug_ =
pset.getUntrackedParameter<
bool>(
"debug");
180 dump_ =
pset.getUntrackedParameter<
bool>(
"dump");
182 scenario_ =
pset.getParameter<
int>(
"scenario");
184 df_extended_ =
pset.getParameter<
int>(
"df_extended");
185 max_index_ =
pset.getParameter<
int>(
"max_primitives") - 1;
187 dtDigisToken_ = consumes<DTDigiCollection>(
pset.getParameter<
edm::InputTag>(
"digiTag"));
189 rpcRecHitsLabel_ = consumes<RPCRecHitCollection>(
pset.getParameter<
edm::InputTag>(
"rpcRecHits"));
190 useRPC_ =
pset.getParameter<
bool>(
"useRPC");
193 algo_ =
pset.getParameter<
int>(
"algo");
196 globalcoordsobtainer_ = std::make_shared<GlobalCoordsObtainer>(
pset);
197 globalcoordsobtainer_->generate_luts();
201 std::make_unique<PseudoBayesGrouping>(
pset.getParameter<
edm::ParameterSet>(
"PseudoBayesPattern"), consumesColl);
204 std::make_unique<HoughGrouping>(
pset.getParameter<
edm::ParameterSet>(
"HoughGrouping"), consumesColl);
206 grouping_obj_ = std::make_unique<InitialGrouping>(
pset, consumesColl);
211 LogDebug(
"DTTrigPhase2Prod") <<
"DTp2:constructor: JM analyzer";
212 mpathanalyzer_ = std::make_unique<MuonPathAnalyticAnalyzer>(
pset, consumesColl, globalcoordsobtainer_);
215 LogDebug(
"DTTrigPhase2Prod") <<
"DTp2:constructor: Full chamber analyzer";
216 mpathanalyzer_ = std::make_unique<MuonPathAnalyzerInChamber>(
pset, consumesColl, globalcoordsobtainer_);
220 activateBuffer_ =
pset.getParameter<
bool>(
"activateBuffer");
221 superCellhalfspacewidth_ =
pset.getParameter<
int>(
"superCellspacewidth") / 2;
222 superCelltimewidth_ =
pset.getParameter<
double>(
"superCelltimewidth");
224 mpathqualityenhancer_ = std::make_unique<MPQualityEnhancerFilter>(
pset);
225 mpathqualityenhancerbayes_ = std::make_unique<MPQualityEnhancerFilterBayes>(
pset);
226 mpathredundantfilter_ = std::make_unique<MPRedundantFilter>(
pset);
227 mpathhitsfilter_ = std::make_unique<MPCleanHitsFilter>(
pset);
228 mpathassociator_ = std::make_unique<MuonPathAssociator>(
pset, consumesColl, globalcoordsobtainer_);
229 rpc_integrator_ = std::make_unique<RPCIntegrator>(
pset, consumesColl);
231 dtGeomH = esConsumes<DTGeometry, MuonGeometryRecord, edm::Transition::BeginRun>();
236 LogDebug(
"DTTrigPhase2Prod") <<
"DTp2: calling destructor" << std::endl;
241 LogDebug(
"DTTrigPhase2Prod") <<
"beginRun " << iRun.
id().
run();
243 LogDebug(
"DTTrigPhase2Prod") <<
"beginRun: getting DT geometry";
260 LogDebug(
"DTTrigPhase2Prod") <<
"produce";
265 LogDebug(
"DTTrigPhase2Prod") <<
"\t Getting the RPC RecHits" << std::endl;
275 for (
const auto& detUnitIt : *dtdigis) {
276 const DTLayerId& layId = detUnitIt.first;
279 digiMap[chambId].put(
range, layId);
284 LogDebug(
"DTTrigPhase2Prod") <<
"produce - Getting and grouping digis per chamber using a buffer and super cells.";
286 LogDebug(
"DTTrigPhase2Prod") <<
"produce - Getting and grouping digis per chamber.";
295 if (dmit == digiMap.end())
300 std::vector<std::pair<DTLayerId, DTDigi>> tmpvec;
303 for (
const auto& dtLayerIdIt : (*dmit).second) {
305 digiIt != (dtLayerIdIt.second).second;
307 tmpvec.emplace_back(dtLayerIdIt.first, *digiIt);
316 std::sort(tmpvec.begin(), tmpvec.end(), DigiTimeOrdering);
317 std::queue<std::pair<DTLayerId, DTDigi>> timequeue;
319 for (
const auto& elem : tmpvec)
320 timequeue.emplace(elem);
324 std::vector<DTDigiCollection*> superCells;
330 while (!superCells.empty()) {
332 superCells.pop_back();
341 for (
unsigned int i = 0;
i < muonpaths.size();
i++) {
343 ss <<
iEvent.id().event() <<
" mpath " <<
i <<
": ";
344 for (
int lay = 0; lay < muonpaths.at(
i)->nprimitives(); lay++)
345 ss << muonpaths.at(
i)->primitive(lay)->channelId() <<
" ";
346 for (
int lay = 0; lay < muonpaths.at(
i)->nprimitives(); lay++)
347 ss << muonpaths.at(
i)->primitive(lay)->tdcTimeStamp() <<
" ";
348 for (
int lay = 0; lay < muonpaths.at(
i)->nprimitives(); lay++)
349 ss << muonpaths.at(
i)->primitive(lay)->laterality() <<
" ";
363 for (
unsigned int i = 0;
i < filteredmuonpaths.size();
i++) {
365 ss <<
iEvent.id().event() <<
" filt. mpath " <<
i <<
": ";
366 for (
int lay = 0; lay < filteredmuonpaths.at(
i)->nprimitives(); lay++)
367 ss << filteredmuonpaths.at(
i)->primitive(lay)->channelId() <<
" ";
368 for (
int lay = 0; lay < filteredmuonpaths.at(
i)->nprimitives(); lay++)
369 ss << filteredmuonpaths.at(
i)->primitive(lay)->tdcTimeStamp() <<
" ";
379 LogDebug(
"DTTrigPhase2Prod") <<
"MUON PATHS found: " << muonpaths.size() <<
" (" << filteredmuonpaths.size()
380 <<
") in event " <<
iEvent.id().event();
382 LogDebug(
"DTTrigPhase2Prod") <<
"filling NmetaPrimtives" << std::endl;
383 std::vector<metaPrimitive> metaPrimitives;
387 LogDebug(
"DTTrigPhase2Prod") <<
"Fitting 1SL ";
392 LogDebug(
"DTTrigPhase2Prod") <<
"Fitting 2SL at once ";
397 for (
unsigned int i = 0;
i < outmpaths.size();
i++) {
398 LogInfo(
"DTTrigPhase2Prod") <<
iEvent.id().event() <<
" mp " <<
i <<
": " << outmpaths.at(
i)->bxTimeValue() <<
" " 399 << outmpaths.at(
i)->horizPos() <<
" " << outmpaths.at(
i)->tanPhi() <<
" " 400 << outmpaths.at(
i)->phi() <<
" " << outmpaths.at(
i)->phiB() <<
" " 401 << outmpaths.at(
i)->quality() <<
" " << outmpaths.at(
i)->chiSquare();
403 for (
unsigned int i = 0;
i < metaPrimitives.size();
i++) {
405 ss <<
iEvent.id().event() <<
" mp " <<
i <<
": ";
411 filteredmuonpaths.clear();
418 LogDebug(
"DTTrigPhase2Prod") <<
"declaring new vector for filtered" << std::endl;
420 std::vector<metaPrimitive> filteredMetaPrimitives;
425 for (
unsigned int i = 0;
i < filteredMetaPrimitives.size();
i++) {
427 ss <<
iEvent.id().event() <<
" filtered mp " <<
i <<
": ";
428 printmP(
ss.str(), filteredMetaPrimitives.at(
i));
432 metaPrimitives.clear();
433 metaPrimitives.erase(metaPrimitives.begin(), metaPrimitives.end());
436 LogDebug(
"DTTrigPhase2Prod") <<
"DTp2 in event:" <<
iEvent.id().event() <<
" we found " 437 << filteredMetaPrimitives.size() <<
" filteredMetaPrimitives (superlayer)" 440 LogDebug(
"DTTrigPhase2Prod") <<
"filteredMetaPrimitives: starting correlations" << std::endl;
446 std::vector<metaPrimitive> correlatedMetaPrimitives;
450 for (
const auto& muonpath : outmpaths) {
451 correlatedMetaPrimitives.emplace_back(muonpath->rawId(),
452 (double)muonpath->bxTimeValue(),
453 muonpath->horizPos(),
457 muonpath->phi_cmssw(),
458 muonpath->phiB_cmssw(),
459 muonpath->chiSquare(),
460 (
int)muonpath->quality(),
461 muonpath->primitive(0)->channelId(),
462 muonpath->primitive(0)->tdcTimeStamp(),
463 muonpath->primitive(0)->laterality(),
464 muonpath->primitive(1)->channelId(),
465 muonpath->primitive(1)->tdcTimeStamp(),
466 muonpath->primitive(1)->laterality(),
467 muonpath->primitive(2)->channelId(),
468 muonpath->primitive(2)->tdcTimeStamp(),
469 muonpath->primitive(2)->laterality(),
470 muonpath->primitive(3)->channelId(),
471 muonpath->primitive(3)->tdcTimeStamp(),
472 muonpath->primitive(3)->laterality(),
473 muonpath->primitive(4)->channelId(),
474 muonpath->primitive(4)->tdcTimeStamp(),
475 muonpath->primitive(4)->laterality(),
476 muonpath->primitive(5)->channelId(),
477 muonpath->primitive(5)->tdcTimeStamp(),
478 muonpath->primitive(5)->laterality(),
479 muonpath->primitive(6)->channelId(),
480 muonpath->primitive(6)->tdcTimeStamp(),
481 muonpath->primitive(6)->laterality(),
482 muonpath->primitive(7)->channelId(),
483 muonpath->primitive(7)->tdcTimeStamp(),
484 muonpath->primitive(7)->laterality());
487 filteredMetaPrimitives.clear();
490 LogDebug(
"DTTrigPhase2Prod") <<
"DTp2 in event:" <<
iEvent.id().event() <<
" we found " 491 << correlatedMetaPrimitives.size() <<
" correlatedMetPrimitives (chamber)";
494 LogInfo(
"DTTrigPhase2Prod") <<
"DTp2 in event:" <<
iEvent.id().event() <<
" we found " 495 << correlatedMetaPrimitives.size() <<
" correlatedMetPrimitives (chamber)";
497 for (
unsigned int i = 0;
i < correlatedMetaPrimitives.size();
i++) {
499 ss <<
iEvent.id().event() <<
" correlated mp " <<
i <<
": ";
500 printmPC(
ss.str(), correlatedMetaPrimitives.at(
i));
504 double shift_back = 0;
523 vector<L1Phase2MuDTPhDigi> outP2Ph;
524 vector<L1Phase2MuDTExtPhDigi> outExtP2Ph;
525 vector<L1Phase2MuDTThDigi> outP2Th;
526 vector<L1Phase2MuDTExtThDigi> outExtP2Th;
530 for (
const auto& metaPrimitiveIt : correlatedMetaPrimitives) {
534 LogDebug(
"DTTrigPhase2Prod") <<
"looping in final vector: SuperLayerId" << chId <<
" x=" << metaPrimitiveIt.x
535 <<
" quality=" << metaPrimitiveIt.quality
536 <<
" BX=" << round(metaPrimitiveIt.t0 / 25.) <<
" index=" << metaPrimitiveIt.index;
538 int sectorTP = chId.
sector();
545 sectorTP = sectorTP - 1;
547 if (metaPrimitiveIt.quality <
LOWLOWQ || metaPrimitiveIt.quality ==
CHIGHQ) {
548 if (
inner(metaPrimitiveIt))
555 LogDebug(
"DTTrigPhase2Prod") <<
"pushing back phase-2 dataformat carlo-federica dataformat";
559 int pathWireId[8] = {metaPrimitiveIt.wi1,
566 metaPrimitiveIt.wi8};
568 int pathTDC[8] = {
max((
int)round(metaPrimitiveIt.tdc1 - shift_back *
LHC_CLK_FREQ), -1),
575 max((
int)round(metaPrimitiveIt.tdc8 - shift_back *
LHC_CLK_FREQ), -1)};
577 int pathLat[8] = {metaPrimitiveIt.lat1,
578 metaPrimitiveIt.lat2,
579 metaPrimitiveIt.lat3,
580 metaPrimitiveIt.lat4,
581 metaPrimitiveIt.lat5,
582 metaPrimitiveIt.lat6,
583 metaPrimitiveIt.lat7,
584 metaPrimitiveIt.lat8};
587 outExtP2Ph.emplace_back(
595 metaPrimitiveIt.quality,
596 metaPrimitiveIt.index,
599 (
int)round(metaPrimitiveIt.x * 1000),
600 (
int)round(metaPrimitiveIt.tanPhi * 1000),
603 metaPrimitiveIt.rpcFlag,
611 (
int)round(metaPrimitiveIt.t0 / (
float)
LHC_CLK_FREQ) - shift_back,
618 metaPrimitiveIt.quality,
619 metaPrimitiveIt.index,
622 metaPrimitiveIt.rpcFlag
627 int pathWireId[4] = {metaPrimitiveIt.wi1, metaPrimitiveIt.wi2, metaPrimitiveIt.wi3, metaPrimitiveIt.wi4};
629 int pathTDC[4] = {
max((
int)round(metaPrimitiveIt.tdc1 - shift_back *
LHC_CLK_FREQ), -1),
632 max((
int)round(metaPrimitiveIt.tdc4 - shift_back *
LHC_CLK_FREQ), -1)};
634 int pathLat[4] = {metaPrimitiveIt.lat1, metaPrimitiveIt.lat2, metaPrimitiveIt.lat3, metaPrimitiveIt.lat4};
637 outExtP2Th.emplace_back(
644 metaPrimitiveIt.quality,
645 metaPrimitiveIt.index,
648 (
int)round(metaPrimitiveIt.x * 1000),
651 metaPrimitiveIt.rpcFlag,
659 (
int)round(metaPrimitiveIt.t0 / (
float)
LHC_CLK_FREQ) - shift_back,
665 metaPrimitiveIt.quality,
666 metaPrimitiveIt.index,
669 metaPrimitiveIt.rpcFlag
677 for (
auto rpc_dt_digi =
rpc_integrator_->rpcRecHits_translated_.begin();
680 outP2Ph.push_back(*rpc_dt_digi);
687 resultExtP2Ph->setContainer(outExtP2Ph);
692 resultP2Ph->setContainer(outP2Ph);
696 outExtP2Ph.erase(outExtP2Ph.begin(), outExtP2Ph.end());
698 outP2Ph.erase(outP2Ph.begin(), outP2Ph.end());
703 resultExtP2Th->setContainer(outExtP2Th);
708 resultP2Th->setContainer(outP2Th);
712 outExtP2Th.erase(outExtP2Th.begin(), outExtP2Th.end());
714 outP2Th.erase(outP2Th.begin(), outP2Th.end());
742 LogInfo(
"DTTrigPhase2Prod") <<
ss << (
int)slId <<
"\t " << setw(2) << left << mP.
wi1 <<
" " << setw(2) << left
743 << mP.
wi2 <<
" " << setw(2) << left << mP.
wi3 <<
" " << setw(2) << left << mP.
wi4 <<
" " 744 << setw(5) << left << mP.
tdc1 <<
" " << setw(5) << left << mP.
tdc2 <<
" " << setw(5)
745 << left << mP.
tdc3 <<
" " << setw(5) << left << mP.
tdc4 <<
" " << setw(10) << right
746 << mP.
x <<
" " << setw(9) << left << mP.
tanPhi <<
" " << setw(5) << left << mP.
t0 <<
" " 747 << setw(13) << left << mP.
chi2 <<
" r:" <<
rango(mP);
752 LogInfo(
"DTTrigPhase2Prod") <<
ss << (
int)
ChId <<
"\t " << setw(2) << left << mP.
wi1 <<
" " << setw(2) << left
753 << mP.
wi2 <<
" " << setw(2) << left << mP.
wi3 <<
" " << setw(2) << left << mP.
wi4 <<
" " 754 << setw(2) << left << mP.
wi5 <<
" " << setw(2) << left << mP.
wi6 <<
" " << setw(2) << left
755 << mP.
wi7 <<
" " << setw(2) << left << mP.
wi8 <<
" " << setw(5) << left << mP.
tdc1 <<
" " 756 << setw(5) << left << mP.
tdc2 <<
" " << setw(5) << left << mP.
tdc3 <<
" " << setw(5)
757 << left << mP.
tdc4 <<
" " << setw(5) << left << mP.
tdc5 <<
" " << setw(5) << left
758 << mP.
tdc6 <<
" " << setw(5) << left << mP.
tdc7 <<
" " << setw(5) << left << mP.
tdc8 759 <<
" " << setw(2) << left << mP.
lat1 <<
" " << setw(2) << left << mP.
lat2 <<
" " 760 << setw(2) << left << mP.
lat3 <<
" " << setw(2) << left << mP.
lat4 <<
" " << setw(2)
761 << left << mP.
lat5 <<
" " << setw(2) << left << mP.
lat6 <<
" " << setw(2) << left
762 << mP.
lat7 <<
" " << setw(2) << left << mP.
lat8 <<
" " << setw(10) << right << mP.
x <<
" " 763 << setw(9) << left << mP.
tanPhi <<
" " << setw(5) << left << mP.
t0 <<
" " << setw(13)
764 << left << mP.
chi2 <<
" r:" <<
rango(mP);
776 std::map<int, std::vector<metaPrimitive>> primsPerBX;
782 for (
auto& prims : primsPerBX) {
784 for (
const auto&
primitive : prims.second)
794 for (
auto& metaPrimitiveIt : inMPaths) {
796 rawId = metaPrimitiveIt.rawId;
800 for (
auto& metaPrimitiveItN : inMPaths) {
803 if (rawId != metaPrimitiveItN.rawId)
806 metaPrimitiveIt.index =
inf;
808 }
else if (iOrder < nOrder) {
810 }
else if (iOrder > nOrder) {
811 metaPrimitiveItN.index++;
812 }
else if (iOrder == nOrder) {
815 }
else if (
std::abs(metaPrimitiveIt.phiB) <
std::abs(metaPrimitiveItN.phiB)) {
816 metaPrimitiveItN.index++;
831 std::vector<std::queue<std::pair<DTLayerId, DTDigi>>*> tmpVector;
833 std::vector<DTDigiCollection*> collVector;
835 while (!inQ.empty()) {
838 for (
auto& sQ : tmpVector) {
840 while (!sQ->empty()) {
841 tmpColl.insertDigi((sQ->front().first), (sQ->front().second));
844 collVector.push_back(&tmpColl);
851 bool classified =
false;
853 for (
auto& sC : vec) {
869 std::queue<std::pair<DTLayerId, DTDigi>> newQueue;
871 std::pair<DTLayerId, DTDigi> tmpPair;
873 newQueue.push(tmpPair);
876 vec.push_back(&newQueue);
883 desc.add<
int>(
"trigger_with_sl", 4);
884 desc.add<
int>(
"timeTolerance", 999999);
885 desc.add<
double>(
"tanPhiTh", 1.0);
886 desc.add<
double>(
"tanPhiThw2max", 1.3);
887 desc.add<
double>(
"tanPhiThw2min", 0.5);
888 desc.add<
double>(
"tanPhiThw1max", 0.9);
889 desc.add<
double>(
"tanPhiThw1min", 0.2);
890 desc.add<
double>(
"tanPhiThw0", 0.5);
891 desc.add<
double>(
"chi2Th", 0.01);
892 desc.add<
double>(
"chi2corTh", 0.1);
893 desc.add<
bool>(
"useBX_correlation",
false);
894 desc.add<
double>(
"dT0_correlate_TP", 25.0);
895 desc.add<
int>(
"dBX_correlate_TP", 0);
896 desc.add<
double>(
"dTanPsi_correlate_TP", 99999.0);
897 desc.add<
bool>(
"clean_chi2_correlation",
true);
898 desc.add<
bool>(
"allow_confirmation",
true);
899 desc.add<
double>(
"minx_match_2digis", 1.0);
900 desc.add<
int>(
"scenario", 0);
901 desc.add<
int>(
"df_extended", 0);
902 desc.add<
int>(
"max_primitives", 999);
908 edm::FileInPath(
"L1Trigger/DTTriggerPhase2/data/global_coord_perp_x_phi0.txt"));
909 desc.add<
int>(
"algo", 0);
910 desc.add<
int>(
"minHits4Fit", 3);
911 desc.add<
bool>(
"splitPathPerSL",
true);
912 desc.addUntracked<
bool>(
"debug",
false);
913 desc.addUntracked<
bool>(
"dump",
false);
915 desc.add<
bool>(
"useRPC",
false);
916 desc.add<
int>(
"bx_window", 1);
917 desc.add<
double>(
"phi_window", 50.0);
918 desc.add<
int>(
"max_quality_to_overwrite_t0", 9);
919 desc.add<
bool>(
"storeAllRPCHits",
false);
920 desc.add<
bool>(
"activateBuffer",
false);
921 desc.add<
double>(
"superCelltimewidth", 400);
922 desc.add<
int>(
"superCellspacewidth", 20);
926 psd0.
add<
double>(
"angletan", 0.3);
927 psd0.
add<
double>(
"anglebinwidth", 1.0);
928 psd0.
add<
double>(
"posbinwidth", 2.1);
929 psd0.
add<
double>(
"maxdeltaAngDeg", 10);
930 psd0.
add<
double>(
"maxdeltaPos", 10);
931 psd0.
add<
int>(
"UpperNumber", 6);
932 psd0.
add<
int>(
"LowerNumber", 4);
933 psd0.
add<
double>(
"MaxDistanceToWire", 0.03);
934 psd0.
add<
int>(
"minNLayerHits", 6);
935 psd0.
add<
int>(
"minSingleSLHitsMax", 3);
936 psd0.
add<
int>(
"minSingleSLHitsMin", 3);
937 psd0.
add<
bool>(
"allowUncorrelatedPatterns",
true);
938 psd0.
add<
int>(
"minUncorrelatedHits", 3);
944 "pattern_filename",
edm::FileInPath(
"L1Trigger/DTTriggerPhase2/data/PseudoBayesPatterns_uncorrelated_v0.root"));
946 psd0.
add<
int>(
"minNLayerHits", 3);
947 psd0.
add<
int>(
"minSingleSLHitsMax", 3);
948 psd0.
add<
int>(
"minSingleSLHitsMin", 0);
949 psd0.
add<
int>(
"allowedVariance", 1);
950 psd0.
add<
bool>(
"allowDuplicates",
false);
951 psd0.
add<
bool>(
"setLateralities",
true);
952 psd0.
add<
bool>(
"allowUncorrelatedPatterns",
true);
953 psd0.
add<
int>(
"minUncorrelatedHits", 3);
954 psd0.
add<
bool>(
"saveOnPlace",
true);
955 psd0.
add<
int>(
"maxPathsPerMatch", 256);
958 descriptions.
add(
"dtTriggerPhase2PrimitiveDigis",
desc);
int station() const
Return the station number.
std::unique_ptr< MotherGrouping > grouping_obj_
std::map< DTChamberId, DTDigiCollection, std::less< DTChamberId > > DTDigiMap
bool hasPosRF(int wh, int sec) const
void produce(edm::Event &iEvent, const edm::EventSetup &iEventSetup) override
Producer: process every event and generates trigger data.
int superLayer() const
Return the superlayer number.
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
constexpr int CHI2RES_CONV
constexpr float PHIBRES_CONV
DTChamberId id() const
Return the DTChamberId of this chamber.
DTTrigPhase2Prod(const edm::ParameterSet &pset)
Constructor.
#define DEFINE_FWK_MODULE(type)
std::vector< MuonPathPtr > MuonPathPtrs
void processDigi(std::queue< std::pair< DTLayerId, DTDigi >> &inQ, std::vector< std::queue< std::pair< DTLayerId, DTDigi >> *> &vec)
std::unique_ptr< MPFilter > mpathhitsfilter_
edm::EDGetTokenT< DTDigiCollection > dtDigisToken_
std::vector< DTDigiCollection * > distribDigis(std::queue< std::pair< DTLayerId, DTDigi >> &inQ)
std::unique_ptr< RPCIntegrator > rpc_integrator_
edm::ESGetToken< DTGeometry, MuonGeometryRecord > dtGeomH
edm::EDGetTokenT< RPCRecHitCollection > rpcRecHitsLabel_
Primitive< F, X >::type primitive(const F &f)
void assignIndex(std::vector< metaPrimitive > &inMPaths)
int superCellhalfspacewidth_
const DTGeometry * dtGeo_
void printmPC(const std::string &ss, const metaPrimitive &mP) const
DTChamberId chamberId() const
Return the corresponding ChamberId.
bool inner(const metaPrimitive &mp) const
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
std::unique_ptr< MuonPathAnalyzer > mpathanalyzer_
constexpr float KRES_CONV
std::unique_ptr< MPFilter > mpathqualityenhancer_
Abs< T >::type abs(const T &t)
void printmP(const std::string &ss, const metaPrimitive &mP) const
std::unique_ptr< MuonPathAssociator > mpathassociator_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
constexpr float ZRES_CONV
ParameterDescriptionBase * add(U const &iLabel, T const &value)
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
float superCelltimewidth_
Log< level::Info, false > LogInfo
bool outer(const metaPrimitive &mp) const
void endRun(edm::Run const &iRun, const edm::EventSetup &iEventSetup) override
endRun: finish things
std::unique_ptr< MPFilter > mpathredundantfilter_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::shared_ptr< GlobalCoordsObtainer > globalcoordsobtainer_
std::pair< const_iterator, const_iterator > Range
std::vector< DigiType >::const_iterator const_iterator
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::unique_ptr< MPFilter > mpathqualityenhancerbayes_
constexpr int LHC_CLK_FREQ
int rango(const metaPrimitive &mp) const
DTDigiMap::iterator DTDigiMap_iterator
int wheel() const
Return the wheel number.
void assignIndexPerBX(std::vector< metaPrimitive > &inMPaths)
~DTTrigPhase2Prod() override
Destructor.
DTDigiMap::const_iterator DTDigiMap_const_iterator
DTSuperLayerId superlayerId() const
Return the corresponding SuperLayerId.
const std::vector< const DTChamber * > & chambers() const
Return a vector of all Chamber.
constexpr float PHIRES_CONV
int assignQualityOrder(const metaPrimitive &mP) const
const std::unordered_map< int, int > qmap_
void beginRun(edm::Run const &iRun, const edm::EventSetup &iEventSetup) override
Create Trigger Units before starting event processing.
std::vector< std::pair< int, MuonPath > > primitives_