CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes
DTTrigPhase2Prod Class Reference
Inheritance diagram for DTTrigPhase2Prod:
edm::stream::EDProducer<>

Public Member Functions

void beginRun (edm::Run const &iRun, const edm::EventSetup &iEventSetup) override
 Create Trigger Units before starting event processing. More...
 
 DTTrigPhase2Prod (const edm::ParameterSet &pset)
 Constructor. More...
 
void endRun (edm::Run const &iRun, const edm::EventSetup &iEventSetup) override
 endRun: finish things More...
 
MP_QUALITY getMinimumQuality (void)
 
bool hasPosRF (int wh, int sec) const
 
bool inner (const metaPrimitive &mp) const
 
bool outer (const metaPrimitive &mp) const
 
void printmP (const std::string &ss, const metaPrimitive &mP) const
 
void printmPC (const std::string &ss, const metaPrimitive &mP) const
 
void produce (edm::Event &iEvent, const edm::EventSetup &iEventSetup) override
 Producer: process every event and generates trigger data. More...
 
int rango (const metaPrimitive &mp) const
 
void setChiSquareThreshold (float ch2Thr)
 
void setMinimumQuality (MP_QUALITY q)
 
 ~DTTrigPhase2Prod () override
 Destructor. More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Public Attributes

DTGeometry const * dtGeo_
 
edm::ESGetToken< DTGeometry, MuonGeometryRecorddtGeomH
 
std::vector< std::pair< int, MuonPath > > primitives_
 

Private Types

typedef std::map< DTChamberId, DTDigiCollection, std::less< DTChamberId > > DTDigiMap
 
typedef DTDigiMap::const_iterator DTDigiMap_const_iterator
 
typedef DTDigiMap::iterator DTDigiMap_iterator
 

Private Member Functions

void assignIndex (std::vector< metaPrimitive > &inMPaths)
 
void assignIndexPerBX (std::vector< metaPrimitive > &inMPaths)
 
int assignQualityOrder (const metaPrimitive &mP) const
 
std::vector< DTDigiCollection * > distribDigis (std::queue< std::pair< DTLayerId, DTDigi >> &inQ)
 
void processDigi (std::queue< std::pair< DTLayerId, DTDigi >> &inQ, std::vector< std::queue< std::pair< DTLayerId, DTDigi >> * > &vec)
 

Private Attributes

bool activateBuffer_
 
int algo_
 
bool cmssw_for_global_
 
bool debug_
 
bool do_correlation_
 
double dT0_correlate_TP_
 
edm::EDGetTokenT< DTDigiCollectiondtDigisToken_
 
bool dump_
 
std::string geometry_tag_
 
std::shared_ptr< GlobalCoordsObtainerglobalcoordsobtainer_
 
std::unique_ptr< MotherGroupinggrouping_obj_
 
std::unique_ptr< MuonPathAnalyzermpathanalyzer_
 
std::unique_ptr< MuonPathAssociatormpathassociator_
 
std::unique_ptr< MPFiltermpathqualityenhancer_
 
std::unique_ptr< MPFiltermpathredundantfilter_
 
int my_BXoffset_
 
bool my_CCBValid_
 
const std::unordered_map< int, int > qmap_
 
std::unique_ptr< RPCIntegratorrpc_integrator_
 
edm::EDGetTokenT< RPCRecHitCollectionrpcRecHitsLabel_
 
int scenario_
 
int superCellhalfspacewidth_
 
float superCelltimewidth_
 
bool useRPC_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 66 of file DTTrigPhase2Prod.cc.

Member Typedef Documentation

◆ DTDigiMap

typedef std::map<DTChamberId, DTDigiCollection, std::less<DTChamberId> > DTTrigPhase2Prod::DTDigiMap
private

Definition at line 67 of file DTTrigPhase2Prod.cc.

◆ DTDigiMap_const_iterator

typedef DTDigiMap::const_iterator DTTrigPhase2Prod::DTDigiMap_const_iterator
private

Definition at line 69 of file DTTrigPhase2Prod.cc.

◆ DTDigiMap_iterator

typedef DTDigiMap::iterator DTTrigPhase2Prod::DTDigiMap_iterator
private

Definition at line 68 of file DTTrigPhase2Prod.cc.

Constructor & Destructor Documentation

◆ DTTrigPhase2Prod()

DTTrigPhase2Prod::DTTrigPhase2Prod ( const edm::ParameterSet pset)

Constructor.

Definition at line 163 of file DTTrigPhase2Prod.cc.

164  : qmap_({{9, 9}, {8, 8}, {7, 6}, {6, 7}, {5, 3}, {4, 5}, {3, 4}, {2, 2}, {1, 1}}) {
165  produces<L1Phase2MuDTPhContainer>();
166  produces<L1Phase2MuDTThContainer>();
167 
168  debug_ = pset.getUntrackedParameter<bool>("debug");
169  dump_ = pset.getUntrackedParameter<bool>("dump");
170 
171  do_correlation_ = pset.getParameter<bool>("do_correlation");
172  scenario_ = pset.getParameter<int>("scenario");
173 
174  dtDigisToken_ = consumes<DTDigiCollection>(pset.getParameter<edm::InputTag>("digiTag"));
175 
176  rpcRecHitsLabel_ = consumes<RPCRecHitCollection>(pset.getParameter<edm::InputTag>("rpcRecHits"));
177  useRPC_ = pset.getParameter<bool>("useRPC");
178 
179  // Choosing grouping scheme:
180  algo_ = pset.getParameter<int>("algo");
181 
182  // Local to global coordinates approach
183  cmssw_for_global_ = pset.getUntrackedParameter<bool>("cmssw_for_global", true);
184  geometry_tag_ = pset.getUntrackedParameter<std::string>("geometry_tag", "");
185 
186  edm::ConsumesCollector consumesColl(consumesCollector());
187  globalcoordsobtainer_ = std::make_shared<GlobalCoordsObtainer>(pset);
188  if (!cmssw_for_global_)
189  globalcoordsobtainer_->generate_luts();
190 
191  if (algo_ == PseudoBayes) {
192  grouping_obj_ =
193  std::make_unique<PseudoBayesGrouping>(pset.getParameter<edm::ParameterSet>("PseudoBayesPattern"), consumesColl);
194  } else if (algo_ == HoughTrans) {
195  grouping_obj_ =
196  std::make_unique<HoughGrouping>(pset.getParameter<edm::ParameterSet>("HoughGrouping"), consumesColl);
197  } else {
198  grouping_obj_ = std::make_unique<InitialGrouping>(pset, consumesColl);
199  }
200 
201  if (algo_ == Standard) {
202  if (debug_)
203  LogDebug("DTTrigPhase2Prod") << "DTp2:constructor: JM analyzer";
204  mpathanalyzer_ = std::make_unique<MuonPathAnalyticAnalyzer>(pset, consumesColl, globalcoordsobtainer_);
205  } else {
206  if (debug_)
207  LogDebug("DTTrigPhase2Prod") << "DTp2:constructor: Full chamber analyzer";
208  mpathanalyzer_ = std::make_unique<MuonPathAnalyzerInChamber>(pset, consumesColl);
209  }
210 
211  // Getting buffer option
212  activateBuffer_ = pset.getParameter<bool>("activateBuffer");
213  superCellhalfspacewidth_ = pset.getParameter<int>("superCellspacewidth") / 2;
214  superCelltimewidth_ = pset.getParameter<double>("superCelltimewidth");
215 
216  mpathqualityenhancer_ = std::make_unique<MPQualityEnhancerFilter>(pset);
217  mpathredundantfilter_ = std::make_unique<MPRedundantFilter>(pset);
218  mpathassociator_ = std::make_unique<MuonPathAssociator>(pset, consumesColl, globalcoordsobtainer_);
219  rpc_integrator_ = std::make_unique<RPCIntegrator>(pset, consumesColl);
220 
221  dtGeomH = esConsumes<DTGeometry, MuonGeometryRecord, edm::Transition::BeginRun>();
222 }

◆ ~DTTrigPhase2Prod()

DTTrigPhase2Prod::~DTTrigPhase2Prod ( )
override

Destructor.

Definition at line 224 of file DTTrigPhase2Prod.cc.

224  {
225  if (debug_)
226  LogDebug("DTTrigPhase2Prod") << "DTp2: calling destructor" << std::endl;
227 }

References debug_, and LogDebug.

Member Function Documentation

◆ assignIndex()

void DTTrigPhase2Prod::assignIndex ( std::vector< metaPrimitive > &  inMPaths)
private

Definition at line 646 of file DTTrigPhase2Prod.cc.

646  {
647  std::map<int, std::vector<metaPrimitive>> primsPerBX;
648  for (const auto& metaPrimitive : inMPaths) {
649  int BX = round(metaPrimitive.t0 / 25.);
650  primsPerBX[BX].push_back(metaPrimitive);
651  }
652  inMPaths.clear();
653  for (auto& prims : primsPerBX) {
654  assignIndexPerBX(prims.second);
655  for (const auto& primitive : prims.second)
656  inMPaths.push_back(primitive);
657  }
658 }

References assignIndexPerBX(), L1TStage2uGTEmulatorClient_cff::BX, funct::primitive(), and cmsdt::metaPrimitive::t0.

Referenced by produce().

◆ assignIndexPerBX()

void DTTrigPhase2Prod::assignIndexPerBX ( std::vector< metaPrimitive > &  inMPaths)
private

Definition at line 660 of file DTTrigPhase2Prod.cc.

660  {
661  // First we asociate a new index to the metaprimitive depending on quality or phiB;
662  uint32_t rawId = -1;
663  int numP = -1;
664  for (auto& metaPrimitiveIt : inMPaths) {
665  numP++;
666  rawId = metaPrimitiveIt.rawId;
667  int iOrder = assignQualityOrder(metaPrimitiveIt);
668  int inf = 0;
669  int numP2 = -1;
670  for (auto& metaPrimitiveItN : inMPaths) {
671  int nOrder = assignQualityOrder(metaPrimitiveItN);
672  numP2++;
673  if (rawId != metaPrimitiveItN.rawId)
674  continue;
675  if (numP2 == numP) {
676  metaPrimitiveIt.index = inf;
677  break;
678  } else if (iOrder < nOrder) {
679  inf++;
680  } else if (iOrder > nOrder) {
681  metaPrimitiveItN.index++;
682  } else if (iOrder == nOrder) {
683  if (std::abs(metaPrimitiveIt.phiB) >= std::abs(metaPrimitiveItN.phiB)) {
684  inf++;
685  } else if (std::abs(metaPrimitiveIt.phiB) < std::abs(metaPrimitiveItN.phiB)) {
686  metaPrimitiveItN.index++;
687  }
688  }
689  } // ending second for
690  } // ending first for
691 }

References funct::abs(), assignQualityOrder(), and dqmiodatasetharvest::inf.

Referenced by assignIndex().

◆ assignQualityOrder()

int DTTrigPhase2Prod::assignQualityOrder ( const metaPrimitive mP) const
private

Definition at line 693 of file DTTrigPhase2Prod.cc.

693  {
694  if (mP.quality > 9 || mP.quality < 1)
695  return -1;
696 
697  return qmap_.find(mP.quality)->second;
698 }

References qmap_, and cmsdt::metaPrimitive::quality.

Referenced by assignIndexPerBX().

◆ beginRun()

void DTTrigPhase2Prod::beginRun ( edm::Run const &  iRun,
const edm::EventSetup iEventSetup 
)
override

Create Trigger Units before starting event processing.

Definition at line 229 of file DTTrigPhase2Prod.cc.

229  {
230  if (debug_)
231  LogDebug("DTTrigPhase2Prod") << "beginRun " << iRun.id().run();
232  if (debug_)
233  LogDebug("DTTrigPhase2Prod") << "beginRun: getting DT geometry";
234 
235  grouping_obj_->initialise(iEventSetup); // Grouping object initialisation
236  mpathanalyzer_->initialise(iEventSetup); // Analyzer object initialisation
237  mpathqualityenhancer_->initialise(iEventSetup); // Filter object initialisation
238  mpathredundantfilter_->initialise(iEventSetup); // Filter object initialisation
239  mpathassociator_->initialise(iEventSetup); // Associator object initialisation
240 
242  iEventSetup.get<MuonGeometryRecord>().get(geometry_tag_, geom);
243  dtGeo_ = &(*geom);
244 }

References debug_, dtGeo_, relativeConstraints::geom, geometry_tag_, edm::EventSetup::get(), get, grouping_obj_, edm::RunBase::id(), LogDebug, mpathanalyzer_, mpathassociator_, mpathqualityenhancer_, mpathredundantfilter_, and edm::RunID::run().

◆ distribDigis()

std::vector< DTDigiCollection * > DTTrigPhase2Prod::distribDigis ( std::queue< std::pair< DTLayerId, DTDigi >> &  inQ)
private

Definition at line 700 of file DTTrigPhase2Prod.cc.

700  {
701  std::vector<std::queue<std::pair<DTLayerId, DTDigi>>*> tmpVector;
702  tmpVector.clear();
703  std::vector<DTDigiCollection*> collVector;
704  collVector.clear();
705  while (!inQ.empty()) {
706  processDigi(inQ, tmpVector);
707  }
708  for (auto& sQ : tmpVector) {
709  DTDigiCollection tmpColl;
710  while (!sQ->empty()) {
711  tmpColl.insertDigi((sQ->front().first), (sQ->front().second));
712  sQ->pop();
713  }
714  collVector.push_back(&tmpColl);
715  }
716  return collVector;
717 }

References processDigi().

Referenced by produce().

◆ endRun()

void DTTrigPhase2Prod::endRun ( edm::Run const &  iRun,
const edm::EventSetup iEventSetup 
)
override

endRun: finish things

Definition at line 590 of file DTTrigPhase2Prod.cc.

590  {
591  grouping_obj_->finish();
592  mpathanalyzer_->finish();
593  mpathqualityenhancer_->finish();
594  mpathredundantfilter_->finish();
595  mpathassociator_->finish();
596  rpc_integrator_->finish();
597 };

References grouping_obj_, mpathanalyzer_, mpathassociator_, mpathqualityenhancer_, mpathredundantfilter_, and rpc_integrator_.

◆ getMinimumQuality()

MP_QUALITY DTTrigPhase2Prod::getMinimumQuality ( void  )

◆ hasPosRF()

bool DTTrigPhase2Prod::hasPosRF ( int  wh,
int  sec 
) const

Definition at line 609 of file DTTrigPhase2Prod.cc.

609 { return wh > 0 || (wh == 0 && sec % 4 > 1); }

References fileinputsource_cfi::sec.

◆ inner()

bool DTTrigPhase2Prod::inner ( const metaPrimitive mp) const

Definition at line 604 of file DTTrigPhase2Prod.cc.

604  {
605  int counter = (mp.wi1 != -1) + (mp.wi2 != -1) + (mp.wi3 != -1) + (mp.wi4 != -1);
606  return (counter > 2);
607 }

References cmsdt::metaPrimitive::wi1, cmsdt::metaPrimitive::wi2, cmsdt::metaPrimitive::wi3, and cmsdt::metaPrimitive::wi4.

Referenced by produce().

◆ outer()

bool DTTrigPhase2Prod::outer ( const metaPrimitive mp) const

Definition at line 599 of file DTTrigPhase2Prod.cc.

599  {
600  int counter = (mp.wi5 != -1) + (mp.wi6 != -1) + (mp.wi7 != -1) + (mp.wi8 != -1);
601  return (counter > 2);
602 }

References cmsdt::metaPrimitive::wi5, cmsdt::metaPrimitive::wi6, cmsdt::metaPrimitive::wi7, and cmsdt::metaPrimitive::wi8.

◆ printmP()

void DTTrigPhase2Prod::printmP ( const std::string &  ss,
const metaPrimitive mP 
) const

Definition at line 611 of file DTTrigPhase2Prod.cc.

611  {
612  DTSuperLayerId slId(mP.rawId);
613  LogInfo("DTTrigPhase2Prod") << ss << (int)slId << "\t " << setw(2) << left << mP.wi1 << " " << setw(2) << left
614  << mP.wi2 << " " << setw(2) << left << mP.wi3 << " " << setw(2) << left << mP.wi4 << " "
615  << setw(5) << left << mP.tdc1 << " " << setw(5) << left << mP.tdc2 << " " << setw(5)
616  << left << mP.tdc3 << " " << setw(5) << left << mP.tdc4 << " " << setw(10) << right
617  << mP.x << " " << setw(9) << left << mP.tanPhi << " " << setw(5) << left << mP.t0 << " "
618  << setw(13) << left << mP.chi2 << " r:" << rango(mP);
619 }

References cmsdt::metaPrimitive::chi2, createfilelist::int, rango(), cmsdt::metaPrimitive::rawId, contentValuesCheck::ss, cmsdt::metaPrimitive::t0, cmsdt::metaPrimitive::tanPhi, cmsdt::metaPrimitive::tdc1, cmsdt::metaPrimitive::tdc2, cmsdt::metaPrimitive::tdc3, cmsdt::metaPrimitive::tdc4, cmsdt::metaPrimitive::wi1, cmsdt::metaPrimitive::wi2, cmsdt::metaPrimitive::wi3, cmsdt::metaPrimitive::wi4, and cmsdt::metaPrimitive::x.

Referenced by produce().

◆ printmPC()

void DTTrigPhase2Prod::printmPC ( const std::string &  ss,
const metaPrimitive mP 
) const

Definition at line 621 of file DTTrigPhase2Prod.cc.

621  {
622  DTChamberId ChId(mP.rawId);
623  LogInfo("DTTrigPhase2Prod") << ss << (int)ChId << "\t " << setw(2) << left << mP.wi1 << " " << setw(2) << left
624  << mP.wi2 << " " << setw(2) << left << mP.wi3 << " " << setw(2) << left << mP.wi4 << " "
625  << setw(2) << left << mP.wi5 << " " << setw(2) << left << mP.wi6 << " " << setw(2) << left
626  << mP.wi7 << " " << setw(2) << left << mP.wi8 << " " << setw(5) << left << mP.tdc1 << " "
627  << setw(5) << left << mP.tdc2 << " " << setw(5) << left << mP.tdc3 << " " << setw(5)
628  << left << mP.tdc4 << " " << setw(5) << left << mP.tdc5 << " " << setw(5) << left
629  << mP.tdc6 << " " << setw(5) << left << mP.tdc7 << " " << setw(5) << left << mP.tdc8
630  << " " << setw(2) << left << mP.lat1 << " " << setw(2) << left << mP.lat2 << " "
631  << setw(2) << left << mP.lat3 << " " << setw(2) << left << mP.lat4 << " " << setw(2)
632  << left << mP.lat5 << " " << setw(2) << left << mP.lat6 << " " << setw(2) << left
633  << mP.lat7 << " " << setw(2) << left << mP.lat8 << " " << setw(10) << right << mP.x << " "
634  << setw(9) << left << mP.tanPhi << " " << setw(5) << left << mP.t0 << " " << setw(13)
635  << left << mP.chi2 << " r:" << rango(mP);
636 }

References cmsdt::metaPrimitive::chi2, IntegrityClient_cfi::ChId, createfilelist::int, cmsdt::metaPrimitive::lat1, cmsdt::metaPrimitive::lat2, cmsdt::metaPrimitive::lat3, cmsdt::metaPrimitive::lat4, cmsdt::metaPrimitive::lat5, cmsdt::metaPrimitive::lat6, cmsdt::metaPrimitive::lat7, cmsdt::metaPrimitive::lat8, rango(), cmsdt::metaPrimitive::rawId, contentValuesCheck::ss, cmsdt::metaPrimitive::t0, cmsdt::metaPrimitive::tanPhi, cmsdt::metaPrimitive::tdc1, cmsdt::metaPrimitive::tdc2, cmsdt::metaPrimitive::tdc3, cmsdt::metaPrimitive::tdc4, cmsdt::metaPrimitive::tdc5, cmsdt::metaPrimitive::tdc6, cmsdt::metaPrimitive::tdc7, cmsdt::metaPrimitive::tdc8, cmsdt::metaPrimitive::wi1, cmsdt::metaPrimitive::wi2, cmsdt::metaPrimitive::wi3, cmsdt::metaPrimitive::wi4, cmsdt::metaPrimitive::wi5, cmsdt::metaPrimitive::wi6, cmsdt::metaPrimitive::wi7, cmsdt::metaPrimitive::wi8, and cmsdt::metaPrimitive::x.

Referenced by produce().

◆ processDigi()

void DTTrigPhase2Prod::processDigi ( std::queue< std::pair< DTLayerId, DTDigi >> &  inQ,
std::vector< std::queue< std::pair< DTLayerId, DTDigi >> * > &  vec 
)
private

Definition at line 719 of file DTTrigPhase2Prod.cc.

720  {
721  bool classified = false;
722  if (!vec.empty()) {
723  for (auto& sC : vec) { // Conditions for entering a super cell.
724  if ((sC->front().second.time() + superCelltimewidth_) > inQ.front().second.time()) {
725  // Time requirement
726  if (TMath::Abs(sC->front().second.wire() - inQ.front().second.wire()) <= superCellhalfspacewidth_) {
727  // Spatial requirement
728  sC->push(std::move(inQ.front()));
729  classified = true;
730  }
731  }
732  }
733  }
734  if (classified) {
735  inQ.pop();
736  return;
737  }
738 
739  std::queue<std::pair<DTLayerId, DTDigi>> newQueue;
740 
741  std::pair<DTLayerId, DTDigi> tmpPair;
742  tmpPair = std::move(inQ.front());
743  newQueue.push(tmpPair);
744  inQ.pop();
745 
746  vec.push_back(&newQueue);
747 }

References Abs(), eostools::move(), superCellhalfspacewidth_, and superCelltimewidth_.

Referenced by distribDigis().

◆ produce()

void DTTrigPhase2Prod::produce ( edm::Event iEvent,
const edm::EventSetup iEventSetup 
)
override

Producer: process every event and generates trigger data.

FITTING SECTION;

STORING RESULTs

Definition at line 246 of file DTTrigPhase2Prod.cc.

246  {
247  if (debug_)
248  LogDebug("DTTrigPhase2Prod") << "produce";
250  iEvent.getByToken(dtDigisToken_, dtdigis);
251 
252  if (debug_)
253  LogDebug("DTTrigPhase2Prod") << "\t Getting the RPC RecHits" << std::endl;
255  iEvent.getByToken(rpcRecHitsLabel_, rpcRecHits);
256 
258  // GROUPING CODE:
260  DTDigiMap digiMap;
262  for (const auto& detUnitIt : *dtdigis) {
263  const DTLayerId& layId = detUnitIt.first;
264  const DTChamberId chambId = layId.superlayerId().chamberId();
265  const DTDigiCollection::Range& range = detUnitIt.second;
266  digiMap[chambId].put(range, layId);
267  }
268 
269  // generate a list muon paths for each event!!!
270  if (debug_ && activateBuffer_)
271  LogDebug("DTTrigPhase2Prod") << "produce - Getting and grouping digis per chamber using a buffer and super cells.";
272  else if (debug_)
273  LogDebug("DTTrigPhase2Prod") << "produce - Getting and grouping digis per chamber.";
274 
275  MuonPathPtrs muonpaths;
276  for (const auto& ich : dtGeo_->chambers()) {
277  // The code inside this for loop would ideally later fit inside a trigger unit (in principle, a DT station) of the future Phase 2 DT Trigger.
278  const DTChamber* chamb = ich;
279  DTChamberId chid = chamb->id();
280  DTDigiMap_iterator dmit = digiMap.find(chid);
281 
282  if (dmit == digiMap.end())
283  continue;
284 
285  if (activateBuffer_) { // Use buffering (per chamber) or not
286  // Import digis from the station
287  std::vector<std::pair<DTLayerId, DTDigi>> tmpvec;
288  tmpvec.clear();
289 
290  for (const auto& dtLayerIdIt : (*dmit).second) {
291  for (DTDigiCollection::const_iterator digiIt = (dtLayerIdIt.second).first;
292  digiIt != (dtLayerIdIt.second).second;
293  digiIt++) {
294  tmpvec.emplace_back(dtLayerIdIt.first, *digiIt);
295  }
296  }
297 
298  // Check to enhance CPU time usage
299  if (tmpvec.empty())
300  continue;
301 
302  // Order digis depending on TDC time and insert them into a queue (FIFO buffer). TODO: adapt for MC simulations.
303  std::sort(tmpvec.begin(), tmpvec.end(), DigiTimeOrdering);
304  std::queue<std::pair<DTLayerId, DTDigi>> timequeue;
305 
306  for (const auto& elem : tmpvec)
307  timequeue.emplace(elem);
308  tmpvec.clear();
309 
310  // Distribute the digis from the queue into supercells
311  std::vector<DTDigiCollection*> superCells;
312  superCells = distribDigis(timequeue);
313 
314  // Process each supercell & collect the resulting muonpaths (as the muonpaths std::vector is only enlarged each time
315  // the groupings access it, it's not needed to "collect" the final products).
316  while (!superCells.empty()) {
317  grouping_obj_->run(iEvent, iEventSetup, *(superCells.back()), muonpaths);
318  superCells.pop_back();
319  }
320  } else {
321  grouping_obj_->run(iEvent, iEventSetup, (*dmit).second, muonpaths);
322  }
323  }
324  digiMap.clear();
325 
326  if (dump_) {
327  for (unsigned int i = 0; i < muonpaths.size(); i++) {
328  stringstream ss;
329  ss << iEvent.id().event() << " mpath " << i << ": ";
330  for (int lay = 0; lay < muonpaths.at(i)->nprimitives(); lay++)
331  ss << muonpaths.at(i)->primitive(lay)->channelId() << " ";
332  for (int lay = 0; lay < muonpaths.at(i)->nprimitives(); lay++)
333  ss << muonpaths.at(i)->primitive(lay)->tdcTimeStamp() << " ";
334  for (int lay = 0; lay < muonpaths.at(i)->nprimitives(); lay++)
335  ss << muonpaths.at(i)->primitive(lay)->laterality() << " ";
336  LogInfo("DTTrigPhase2Prod") << ss.str();
337  }
338  }
339 
340  // FILTER GROUPING
341  MuonPathPtrs filteredmuonpaths;
342  if (algo_ == Standard) {
343  mpathredundantfilter_->run(iEvent, iEventSetup, muonpaths, filteredmuonpaths);
344  }
345 
346  if (dump_) {
347  for (unsigned int i = 0; i < filteredmuonpaths.size(); i++) {
348  stringstream ss;
349  ss << iEvent.id().event() << " filt. mpath " << i << ": ";
350  for (int lay = 0; lay < filteredmuonpaths.at(i)->nprimitives(); lay++)
351  ss << filteredmuonpaths.at(i)->primitive(lay)->channelId() << " ";
352  for (int lay = 0; lay < filteredmuonpaths.at(i)->nprimitives(); lay++)
353  ss << filteredmuonpaths.at(i)->primitive(lay)->tdcTimeStamp() << " ";
354  LogInfo("DTTrigPhase2Prod") << ss.str();
355  }
356  }
357 
361  if (debug_)
362  LogDebug("DTTrigPhase2Prod") << "MUON PATHS found: " << muonpaths.size() << " (" << filteredmuonpaths.size()
363  << ") in event " << iEvent.id().event();
364  if (debug_)
365  LogDebug("DTTrigPhase2Prod") << "filling NmetaPrimtives" << std::endl;
366  std::vector<metaPrimitive> metaPrimitives;
367  MuonPathPtrs outmpaths;
368  if (algo_ == Standard) {
369  if (debug_)
370  LogDebug("DTTrigPhase2Prod") << "Fitting 1SL ";
371  mpathanalyzer_->run(iEvent, iEventSetup, filteredmuonpaths, metaPrimitives);
372  } else {
373  // implementation for advanced (2SL) grouping, no filter required..
374  if (debug_)
375  LogDebug("DTTrigPhase2Prod") << "Fitting 2SL at once ";
376  mpathanalyzer_->run(iEvent, iEventSetup, muonpaths, outmpaths);
377  }
378 
379  if (dump_) {
380  for (unsigned int i = 0; i < outmpaths.size(); i++) {
381  LogInfo("DTTrigPhase2Prod") << iEvent.id().event() << " mp " << i << ": " << outmpaths.at(i)->bxTimeValue() << " "
382  << outmpaths.at(i)->horizPos() << " " << outmpaths.at(i)->tanPhi() << " "
383  << outmpaths.at(i)->phi() << " " << outmpaths.at(i)->phiB() << " "
384  << outmpaths.at(i)->quality() << " " << outmpaths.at(i)->chiSquare();
385  }
386  for (unsigned int i = 0; i < metaPrimitives.size(); i++) {
387  stringstream ss;
388  ss << iEvent.id().event() << " mp " << i << ": ";
389  printmP(ss.str(), metaPrimitives.at(i));
390  }
391  }
392 
393  muonpaths.clear();
394  filteredmuonpaths.clear();
395 
397  // FILTER SECTIONS:
399  if (debug_)
400  LogDebug("DTTrigPhase2Prod") << "declaring new vector for filtered" << std::endl;
401 
402  std::vector<metaPrimitive> filteredMetaPrimitives;
403  if (algo_ == Standard)
404  mpathqualityenhancer_->run(iEvent, iEventSetup, metaPrimitives, filteredMetaPrimitives);
405 
406  if (dump_) {
407  for (unsigned int i = 0; i < filteredMetaPrimitives.size(); i++) {
408  stringstream ss;
409  ss << iEvent.id().event() << " filtered mp " << i << ": ";
410  printmP(ss.str(), filteredMetaPrimitives.at(i));
411  }
412  }
413 
414  metaPrimitives.clear();
415  metaPrimitives.erase(metaPrimitives.begin(), metaPrimitives.end());
416 
417  if (debug_)
418  LogDebug("DTTrigPhase2Prod") << "DTp2 in event:" << iEvent.id().event() << " we found "
419  << filteredMetaPrimitives.size() << " filteredMetaPrimitives (superlayer)"
420  << std::endl;
421  if (debug_)
422  LogDebug("DTTrigPhase2Prod") << "filteredMetaPrimitives: starting correlations" << std::endl;
423 
427  std::vector<metaPrimitive> correlatedMetaPrimitives;
428  if (algo_ == Standard)
429  mpathassociator_->run(iEvent, iEventSetup, dtdigis, filteredMetaPrimitives, correlatedMetaPrimitives);
430  else {
431  for (const auto& muonpath : outmpaths) {
432  correlatedMetaPrimitives.emplace_back(muonpath->rawId(),
433  (double)muonpath->bxTimeValue(),
434  muonpath->horizPos(),
435  muonpath->tanPhi(),
436  muonpath->phi(),
437  muonpath->phiB(),
438  muonpath->chiSquare(),
439  (int)muonpath->quality(),
440  muonpath->primitive(0)->channelId(),
441  muonpath->primitive(0)->tdcTimeStamp(),
442  muonpath->primitive(0)->laterality(),
443  muonpath->primitive(1)->channelId(),
444  muonpath->primitive(1)->tdcTimeStamp(),
445  muonpath->primitive(1)->laterality(),
446  muonpath->primitive(2)->channelId(),
447  muonpath->primitive(2)->tdcTimeStamp(),
448  muonpath->primitive(2)->laterality(),
449  muonpath->primitive(3)->channelId(),
450  muonpath->primitive(3)->tdcTimeStamp(),
451  muonpath->primitive(3)->laterality(),
452  muonpath->primitive(4)->channelId(),
453  muonpath->primitive(4)->tdcTimeStamp(),
454  muonpath->primitive(4)->laterality(),
455  muonpath->primitive(5)->channelId(),
456  muonpath->primitive(5)->tdcTimeStamp(),
457  muonpath->primitive(5)->laterality(),
458  muonpath->primitive(6)->channelId(),
459  muonpath->primitive(6)->tdcTimeStamp(),
460  muonpath->primitive(6)->laterality(),
461  muonpath->primitive(7)->channelId(),
462  muonpath->primitive(7)->tdcTimeStamp(),
463  muonpath->primitive(7)->laterality());
464  }
465  }
466  filteredMetaPrimitives.clear();
467 
468  if (debug_)
469  LogDebug("DTTrigPhase2Prod") << "DTp2 in event:" << iEvent.id().event() << " we found "
470  << correlatedMetaPrimitives.size() << " correlatedMetPrimitives (chamber)";
471 
472  if (dump_) {
473  LogInfo("DTTrigPhase2Prod") << "DTp2 in event:" << iEvent.id().event() << " we found "
474  << correlatedMetaPrimitives.size() << " correlatedMetPrimitives (chamber)";
475 
476  for (unsigned int i = 0; i < correlatedMetaPrimitives.size(); i++) {
477  stringstream ss;
478  ss << iEvent.id().event() << " correlated mp " << i << ": ";
479  printmPC(ss.str(), correlatedMetaPrimitives.at(i));
480  }
481  }
482 
483  double shift_back = 0;
484  if (scenario_ == MC) //scope for MC
485  shift_back = 400;
486  else if (scenario_ == DATA) //scope for data
487  shift_back = 0;
488  else if (scenario_ == SLICE_TEST) //scope for slice test
489  shift_back = 400;
490 
491  // RPC integration
492  if (useRPC_) {
493  rpc_integrator_->initialise(iEventSetup, shift_back);
494  rpc_integrator_->prepareMetaPrimitives(rpcRecHits);
495  rpc_integrator_->matchWithDTAndUseRPCTime(correlatedMetaPrimitives);
496  rpc_integrator_->makeRPCOnlySegments();
497  rpc_integrator_->storeRPCSingleHits();
498  rpc_integrator_->removeRPCHitsUsed();
499  }
500 
502  vector<L1Phase2MuDTPhDigi> outP2Ph;
503  vector<L1Phase2MuDTThDigi> outP2Th;
504 
505  // Assigning index value
506  assignIndex(correlatedMetaPrimitives);
507  for (const auto& metaPrimitiveIt : correlatedMetaPrimitives) {
508  DTChamberId chId(metaPrimitiveIt.rawId);
509  DTSuperLayerId slId(metaPrimitiveIt.rawId);
510  if (debug_)
511  LogDebug("DTTrigPhase2Prod") << "looping in final vector: SuperLayerId" << chId << " x=" << metaPrimitiveIt.x
512  << " quality=" << metaPrimitiveIt.quality
513  << " BX=" << round(metaPrimitiveIt.t0 / 25.) << " index=" << metaPrimitiveIt.index;
514 
515  int sectorTP = chId.sector();
516  //sectors 13 and 14 exist only for the outermost stations for sectors 4 and 10 respectively
517  //due to the larger MB4 that are divided into two.
518  if (sectorTP == 13)
519  sectorTP = 4;
520  if (sectorTP == 14)
521  sectorTP = 10;
522  sectorTP = sectorTP - 1;
523  int sl = 0;
524  if (metaPrimitiveIt.quality < LOWLOWQ || metaPrimitiveIt.quality == CHIGHQ) {
525  if (inner(metaPrimitiveIt))
526  sl = 1;
527  else
528  sl = 3;
529  }
530 
531  if (debug_)
532  LogDebug("DTTrigPhase2Prod") << "pushing back phase-2 dataformat carlo-federica dataformat";
533 
534  if (slId.superLayer() != 2) {
535  //phiTP
536  outP2Ph.push_back(L1Phase2MuDTPhDigi(
537  (int)round(metaPrimitiveIt.t0 / (float)LHC_CLK_FREQ) - shift_back,
538  chId.wheel(), // uwh (m_wheel)
539  sectorTP, // usc (m_sector)
540  chId.station(), // ust (m_station)
541  sl, // ust (m_station)
542  (int)round(metaPrimitiveIt.phi * PHIRES_CONV), // uphi (_phiAngle)
543  (int)round(metaPrimitiveIt.phiB * PHIBRES_CONV), // uphib (m_phiBending)
544  metaPrimitiveIt.quality, // uqua (m_qualityCode)
545  metaPrimitiveIt.index, // uind (m_segmentIndex)
546  (int)round(metaPrimitiveIt.t0) - shift_back * LHC_CLK_FREQ, // ut0 (m_t0Segment)
547  (int)round(metaPrimitiveIt.chi2 * CHI2RES_CONV), // uchi2 (m_chi2Segment)
548  metaPrimitiveIt.rpcFlag // urpc (m_rpcFlag)
549  ));
550  } else {
551  //thTP
552  outP2Th.push_back(L1Phase2MuDTThDigi(
553  (int)round(metaPrimitiveIt.t0 / (float)LHC_CLK_FREQ) - shift_back,
554  chId.wheel(), // uwh (m_wheel)
555  sectorTP, // usc (m_sector)
556  chId.station(), // ust (m_station)
557  (int)round(metaPrimitiveIt.phi * ZRES_CONV), // uz (m_zGlobal)
558  (int)round(metaPrimitiveIt.phiB * KRES_CONV), // uk (m_kSlope)
559  metaPrimitiveIt.quality, // uqua (m_qualityCode)
560  metaPrimitiveIt.index, // uind (m_segmentIndex)
561  (int)round(metaPrimitiveIt.t0) - shift_back * LHC_CLK_FREQ, // ut0 (m_t0Segment)
562  (int)round(metaPrimitiveIt.chi2 * CHI2RES_CONV), // uchi2 (m_chi2Segment)
563  metaPrimitiveIt.rpcFlag // urpc (m_rpcFlag)
564  ));
565  }
566  }
567 
568  // Storing RPC hits that were not used elsewhere
569  if (useRPC_) {
570  for (auto rpc_dt_digi = rpc_integrator_->rpcRecHits_translated_.begin();
571  rpc_dt_digi != rpc_integrator_->rpcRecHits_translated_.end();
572  rpc_dt_digi++) {
573  outP2Ph.push_back(*rpc_dt_digi);
574  }
575  }
576 
577  auto resultP2Ph = std::make_unique<L1Phase2MuDTPhContainer>();
578  resultP2Ph->setContainer(outP2Ph);
579  iEvent.put(std::move(resultP2Ph));
580  outP2Ph.clear();
581  outP2Ph.erase(outP2Ph.begin(), outP2Ph.end());
582 
583  std::unique_ptr<L1Phase2MuDTThContainer> resultP2Th(new L1Phase2MuDTThContainer);
584  resultP2Th->setContainer(outP2Th);
585  iEvent.put(std::move(resultP2Th));
586  outP2Th.clear();
587  outP2Th.erase(outP2Th.begin(), outP2Th.end());
588 }

References activateBuffer_, algo_, assignIndex(), DTSuperLayerId::chamberId(), DTGeometry::chambers(), cmsdt::CHI2RES_CONV, cmsdt::CHIGHQ, cscdqm::DATA, debug_, distribDigis(), dtDigisToken_, dtGeo_, dump_, grouping_obj_, mps_fire::i, DTChamber::id(), iEvent, inner(), createfilelist::int, cmsdt::KRES_CONV, cmsdt::LHC_CLK_FREQ, LogDebug, cmsdt::LOWLOWQ, cmsdt::MC, eostools::move(), mpathanalyzer_, mpathassociator_, mpathqualityenhancer_, mpathredundantfilter_, cmsdt::PHIBRES_CONV, cmsdt::PHIRES_CONV, printmP(), printmPC(), FastTimerService_cff::range, rpc_integrator_, dtTriggerPhase2PrimitiveDigis_cfi::rpcRecHits, rpcRecHitsLabel_, scenario_, DTChamberId::sector(), cmsdt::SLICE_TEST, jetUpdater_cfi::sort, contentValuesCheck::ss, cmsdt::Standard, DTChamberId::station(), DTSuperLayerId::superLayer(), DTLayerId::superlayerId(), useRPC_, DTChamberId::wheel(), and cmsdt::ZRES_CONV.

◆ rango()

int DTTrigPhase2Prod::rango ( const metaPrimitive mp) const

Definition at line 638 of file DTTrigPhase2Prod.cc.

638  {
639  if (mp.quality == 1 or mp.quality == 2)
640  return 3;
641  if (mp.quality == 3 or mp.quality == 4)
642  return 4;
643  return mp.quality;
644 }

References or, and cmsdt::metaPrimitive::quality.

Referenced by printmP(), and printmPC().

◆ setChiSquareThreshold()

void DTTrigPhase2Prod::setChiSquareThreshold ( float  ch2Thr)

◆ setMinimumQuality()

void DTTrigPhase2Prod::setMinimumQuality ( MP_QUALITY  q)

Member Data Documentation

◆ activateBuffer_

bool DTTrigPhase2Prod::activateBuffer_
private

Definition at line 137 of file DTTrigPhase2Prod.cc.

Referenced by produce().

◆ algo_

int DTTrigPhase2Prod::algo_
private

Definition at line 128 of file DTTrigPhase2Prod.cc.

Referenced by produce().

◆ cmssw_for_global_

bool DTTrigPhase2Prod::cmssw_for_global_
private

Definition at line 120 of file DTTrigPhase2Prod.cc.

◆ debug_

bool DTTrigPhase2Prod::debug_
private

Definition at line 115 of file DTTrigPhase2Prod.cc.

Referenced by beginRun(), produce(), and ~DTTrigPhase2Prod().

◆ do_correlation_

bool DTTrigPhase2Prod::do_correlation_
private

Definition at line 118 of file DTTrigPhase2Prod.cc.

◆ dT0_correlate_TP_

double DTTrigPhase2Prod::dT0_correlate_TP_
private

Definition at line 117 of file DTTrigPhase2Prod.cc.

◆ dtDigisToken_

edm::EDGetTokenT<DTDigiCollection> DTTrigPhase2Prod::dtDigisToken_
private

Definition at line 124 of file DTTrigPhase2Prod.cc.

Referenced by produce().

◆ dtGeo_

DTGeometry const* DTTrigPhase2Prod::dtGeo_

Definition at line 103 of file DTTrigPhase2Prod.cc.

Referenced by beginRun(), and produce().

◆ dtGeomH

edm::ESGetToken<DTGeometry, MuonGeometryRecord> DTTrigPhase2Prod::dtGeomH

Definition at line 104 of file DTTrigPhase2Prod.cc.

◆ dump_

bool DTTrigPhase2Prod::dump_
private

Definition at line 116 of file DTTrigPhase2Prod.cc.

Referenced by produce().

◆ geometry_tag_

std::string DTTrigPhase2Prod::geometry_tag_
private

Definition at line 121 of file DTTrigPhase2Prod.cc.

Referenced by beginRun().

◆ globalcoordsobtainer_

std::shared_ptr<GlobalCoordsObtainer> DTTrigPhase2Prod::globalcoordsobtainer_
private

Definition at line 134 of file DTTrigPhase2Prod.cc.

◆ grouping_obj_

std::unique_ptr<MotherGrouping> DTTrigPhase2Prod::grouping_obj_
private

Definition at line 129 of file DTTrigPhase2Prod.cc.

Referenced by beginRun(), endRun(), and produce().

◆ mpathanalyzer_

std::unique_ptr<MuonPathAnalyzer> DTTrigPhase2Prod::mpathanalyzer_
private

Definition at line 130 of file DTTrigPhase2Prod.cc.

Referenced by beginRun(), endRun(), and produce().

◆ mpathassociator_

std::unique_ptr<MuonPathAssociator> DTTrigPhase2Prod::mpathassociator_
private

Definition at line 133 of file DTTrigPhase2Prod.cc.

Referenced by beginRun(), endRun(), and produce().

◆ mpathqualityenhancer_

std::unique_ptr<MPFilter> DTTrigPhase2Prod::mpathqualityenhancer_
private

Definition at line 131 of file DTTrigPhase2Prod.cc.

Referenced by beginRun(), endRun(), and produce().

◆ mpathredundantfilter_

std::unique_ptr<MPFilter> DTTrigPhase2Prod::mpathredundantfilter_
private

Definition at line 132 of file DTTrigPhase2Prod.cc.

Referenced by beginRun(), endRun(), and produce().

◆ my_BXoffset_

int DTTrigPhase2Prod::my_BXoffset_
private

Definition at line 112 of file DTTrigPhase2Prod.cc.

◆ my_CCBValid_

bool DTTrigPhase2Prod::my_CCBValid_
private

Definition at line 109 of file DTTrigPhase2Prod.cc.

◆ primitives_

std::vector<std::pair<int, MuonPath> > DTTrigPhase2Prod::primitives_

Definition at line 105 of file DTTrigPhase2Prod.cc.

◆ qmap_

const std::unordered_map<int, int> DTTrigPhase2Prod::qmap_
private

Definition at line 152 of file DTTrigPhase2Prod.cc.

Referenced by assignQualityOrder().

◆ rpc_integrator_

std::unique_ptr<RPCIntegrator> DTTrigPhase2Prod::rpc_integrator_
private

Definition at line 145 of file DTTrigPhase2Prod.cc.

Referenced by endRun(), and produce().

◆ rpcRecHitsLabel_

edm::EDGetTokenT<RPCRecHitCollection> DTTrigPhase2Prod::rpcRecHitsLabel_
private

Definition at line 125 of file DTTrigPhase2Prod.cc.

Referenced by produce().

◆ scenario_

int DTTrigPhase2Prod::scenario_
private

Definition at line 119 of file DTTrigPhase2Prod.cc.

Referenced by produce().

◆ superCellhalfspacewidth_

int DTTrigPhase2Prod::superCellhalfspacewidth_
private

Definition at line 138 of file DTTrigPhase2Prod.cc.

Referenced by processDigi().

◆ superCelltimewidth_

float DTTrigPhase2Prod::superCelltimewidth_
private

Definition at line 139 of file DTTrigPhase2Prod.cc.

Referenced by processDigi().

◆ useRPC_

bool DTTrigPhase2Prod::useRPC_
private

Definition at line 146 of file DTTrigPhase2Prod.cc.

Referenced by produce().

DTChamber::id
DTChamberId id() const
Return the DTChamberId of this chamber.
Definition: DTChamber.cc:32
DTTrigPhase2Prod::inner
bool inner(const metaPrimitive &mp) const
Definition: DTTrigPhase2Prod.cc:604
cmsdt::metaPrimitive
Definition: constants.h:49
DTSuperLayerId
Definition: DTSuperLayerId.h:12
counter
Definition: counter.py:1
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
mps_fire.i
i
Definition: mps_fire.py:428
DTTrigPhase2Prod::debug_
bool debug_
Definition: DTTrigPhase2Prod.cc:115
cmsdt::metaPrimitive::rawId
uint32_t rawId
Definition: constants.h:119
DTTrigPhase2Prod::printmP
void printmP(const std::string &ss, const metaPrimitive &mP) const
Definition: DTTrigPhase2Prod.cc:611
cmsdt::metaPrimitive::x
double x
Definition: constants.h:121
DTTrigPhase2Prod::mpathanalyzer_
std::unique_ptr< MuonPathAnalyzer > mpathanalyzer_
Definition: DTTrigPhase2Prod.cc:130
DTTrigPhase2Prod::activateBuffer_
bool activateBuffer_
Definition: DTTrigPhase2Prod.cc:137
DTTrigPhase2Prod::mpathqualityenhancer_
std::unique_ptr< MPFilter > mpathqualityenhancer_
Definition: DTTrigPhase2Prod.cc:131
cmsdt::metaPrimitive::lat8
int lat8
Definition: constants.h:150
DTTrigPhase2Prod::globalcoordsobtainer_
std::shared_ptr< GlobalCoordsObtainer > globalcoordsobtainer_
Definition: DTTrigPhase2Prod.cc:134
DTChamber
Definition: DTChamber.h:24
cmsdt::metaPrimitive::wi1
int wi1
Definition: constants.h:127
cmsdt::metaPrimitive::wi8
int wi8
Definition: constants.h:148
DTTrigPhase2Prod::superCelltimewidth_
float superCelltimewidth_
Definition: DTTrigPhase2Prod.cc:139
DTTrigPhase2Prod::rango
int rango(const metaPrimitive &mp) const
Definition: DTTrigPhase2Prod.cc:638
cmsdt::metaPrimitive::lat4
int lat4
Definition: constants.h:138
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
DTTrigPhase2Prod::geometry_tag_
std::string geometry_tag_
Definition: DTTrigPhase2Prod.cc:121
edm::Handle< DTDigiCollection >
cmsdt::metaPrimitive::tdc8
int tdc8
Definition: constants.h:149
MuonPathPtrs
std::vector< MuonPathPtr > MuonPathPtrs
Definition: MuonPath.h:122
cmsdt::KRES_CONV
constexpr float KRES_CONV
Definition: constants.h:223
DTTrigPhase2Prod::assignQualityOrder
int assignQualityOrder(const metaPrimitive &mP) const
Definition: DTTrigPhase2Prod.cc:693
cmsdt::CHIGHQ
Definition: constants.h:42
MuonDigiCollection::const_iterator
std::vector< DigiType >::const_iterator const_iterator
Definition: MuonDigiCollection.h:94
L1Phase2MuDTThContainer
Definition: L1Phase2MuDTThContainer.h:34
cmsdt::metaPrimitive::tdc1
int tdc1
Definition: constants.h:128
DTTrigPhase2Prod::mpathredundantfilter_
std::unique_ptr< MPFilter > mpathredundantfilter_
Definition: DTTrigPhase2Prod.cc:132
cmsdt::ZRES_CONV
constexpr float ZRES_CONV
Definition: constants.h:222
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
DTTrigPhase2Prod::assignIndexPerBX
void assignIndexPerBX(std::vector< metaPrimitive > &inMPaths)
Definition: DTTrigPhase2Prod.cc:660
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
cmsdt::metaPrimitive::quality
int quality
Definition: constants.h:126
L1Phase2MuDTThDigi
Definition: L1Phase2MuDTThDigi.h:4
cmsdt::metaPrimitive::lat5
int lat5
Definition: constants.h:141
Abs
T Abs(T a)
Definition: MathUtil.h:49
DTTrigPhase2Prod::DTDigiMap
std::map< DTChamberId, DTDigiCollection, std::less< DTChamberId > > DTDigiMap
Definition: DTTrigPhase2Prod.cc:67
DTTrigPhase2Prod::DTDigiMap_iterator
DTDigiMap::iterator DTDigiMap_iterator
Definition: DTTrigPhase2Prod.cc:68
cmsdt::metaPrimitive::lat6
int lat6
Definition: constants.h:144
DTGeometry::chambers
const std::vector< const DTChamber * > & chambers() const
Return a vector of all Chamber.
Definition: DTGeometry.cc:84
cmsdt::metaPrimitive::wi2
int wi2
Definition: constants.h:130
cmsdt::metaPrimitive::tdc7
int tdc7
Definition: constants.h:146
cmsdt::metaPrimitive::lat1
int lat1
Definition: constants.h:129
edm::ESHandle< DTGeometry >
cmsdt::metaPrimitive::wi7
int wi7
Definition: constants.h:145
cmsdt::metaPrimitive::wi6
int wi6
Definition: constants.h:142
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
cmsdt::PHIRES_CONV
constexpr float PHIRES_CONV
Definition: constants.h:218
cmsdt::metaPrimitive::tdc3
int tdc3
Definition: constants.h:134
cmsdt::metaPrimitive::lat7
int lat7
Definition: constants.h:147
DTLayerId
Definition: DTLayerId.h:12
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cmsdt::HoughTrans
Definition: constants.h:165
cmsdt::metaPrimitive::wi5
int wi5
Definition: constants.h:139
cmsdt::LHC_CLK_FREQ
constexpr int LHC_CLK_FREQ
Definition: constants.h:170
cmsdt::Standard
Definition: constants.h:165
cscdqm::DATA
Definition: CSCDQM_Summary.h:47
funct::primitive
Primitive< F, X >::type primitive(const F &f)
Definition: Primitive.h:41
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
cmsdt::SLICE_TEST
Definition: constants.h:167
cmsdt::metaPrimitive::lat2
int lat2
Definition: constants.h:132
DTTrigPhase2Prod::algo_
int algo_
Definition: DTTrigPhase2Prod.cc:128
IntegrityClient_cfi.ChId
ChId
Definition: IntegrityClient_cfi.py:18
cmsdt::metaPrimitive::wi4
int wi4
Definition: constants.h:136
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
DTSuperLayerId::chamberId
DTChamberId chamberId() const
Return the corresponding ChamberId.
Definition: DTSuperLayerId.h:45
DTDigiCollection
DTTrigPhase2Prod::qmap_
const std::unordered_map< int, int > qmap_
Definition: DTTrigPhase2Prod.cc:152
cmsdt::metaPrimitive::tdc5
int tdc5
Definition: constants.h:140
DTTrigPhase2Prod::dtGeo_
DTGeometry const * dtGeo_
Definition: DTTrigPhase2Prod.cc:103
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
cmsdt::metaPrimitive::tdc6
int tdc6
Definition: constants.h:143
cmsdt::MC
Definition: constants.h:167
DTTrigPhase2Prod::dtDigisToken_
edm::EDGetTokenT< DTDigiCollection > dtDigisToken_
Definition: DTTrigPhase2Prod.cc:124
get
#define get
DTTrigPhase2Prod::grouping_obj_
std::unique_ptr< MotherGrouping > grouping_obj_
Definition: DTTrigPhase2Prod.cc:129
cmsdt::metaPrimitive::tanPhi
double tanPhi
Definition: constants.h:122
cmsdt::PHIBRES_CONV
constexpr float PHIBRES_CONV
Definition: constants.h:219
fileinputsource_cfi.sec
sec
Definition: fileinputsource_cfi.py:87
DTTrigPhase2Prod::distribDigis
std::vector< DTDigiCollection * > distribDigis(std::queue< std::pair< DTLayerId, DTDigi >> &inQ)
Definition: DTTrigPhase2Prod.cc:700
cmsdt::metaPrimitive::tdc4
int tdc4
Definition: constants.h:137
cmsdt::metaPrimitive::chi2
double chi2
Definition: constants.h:125
eostools.move
def move(src, dest)
Definition: eostools.py:511
DTTrigPhase2Prod::processDigi
void processDigi(std::queue< std::pair< DTLayerId, DTDigi >> &inQ, std::vector< std::queue< std::pair< DTLayerId, DTDigi >> * > &vec)
Definition: DTTrigPhase2Prod.cc:719
DTTrigPhase2Prod::superCellhalfspacewidth_
int superCellhalfspacewidth_
Definition: DTTrigPhase2Prod.cc:138
dqmiodatasetharvest.inf
inf
Definition: dqmiodatasetharvest.py:38
dtTriggerPhase2PrimitiveDigis_cfi.rpcRecHits
rpcRecHits
Definition: dtTriggerPhase2PrimitiveDigis_cfi.py:45
L1Phase2MuDTPhDigi
Definition: L1Phase2MuDTPhDigi.h:32
DTTrigPhase2Prod::useRPC_
bool useRPC_
Definition: DTTrigPhase2Prod.cc:146
cmsdt::PseudoBayes
Definition: constants.h:165
DTTrigPhase2Prod::dump_
bool dump_
Definition: DTTrigPhase2Prod.cc:116
DTLayerId::superlayerId
DTSuperLayerId superlayerId() const
Return the corresponding SuperLayerId.
Definition: DTLayerId.h:45
DTTrigPhase2Prod::cmssw_for_global_
bool cmssw_for_global_
Definition: DTTrigPhase2Prod.cc:120
cmsdt::metaPrimitive::tdc2
int tdc2
Definition: constants.h:131
MuonDigiCollection::Range
std::pair< const_iterator, const_iterator > Range
Definition: MuonDigiCollection.h:95
or
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
Definition: Activities.doc:12
L1TStage2uGTEmulatorClient_cff.BX
BX
Definition: L1TStage2uGTEmulatorClient_cff.py:9
cmsdt::CHI2RES_CONV
constexpr int CHI2RES_CONV
Definition: constants.h:220
DTTrigPhase2Prod::printmPC
void printmPC(const std::string &ss, const metaPrimitive &mP) const
Definition: DTTrigPhase2Prod.cc:621
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
DTChamberId
Definition: DTChamberId.h:14
cmsdt::LOWLOWQ
Definition: constants.h:42
DTTrigPhase2Prod::rpc_integrator_
std::unique_ptr< RPCIntegrator > rpc_integrator_
Definition: DTTrigPhase2Prod.cc:145
DTTrigPhase2Prod::do_correlation_
bool do_correlation_
Definition: DTTrigPhase2Prod.cc:118
DigiContainerIterator
Definition: MuonDigiCollection.h:30
DTTrigPhase2Prod::assignIndex
void assignIndex(std::vector< metaPrimitive > &inMPaths)
Definition: DTTrigPhase2Prod.cc:646
cmsdt::metaPrimitive::lat3
int lat3
Definition: constants.h:135
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
DTTrigPhase2Prod::dtGeomH
edm::ESGetToken< DTGeometry, MuonGeometryRecord > dtGeomH
Definition: DTTrigPhase2Prod.cc:104
edm::InputTag
Definition: InputTag.h:15
DTTrigPhase2Prod::rpcRecHitsLabel_
edm::EDGetTokenT< RPCRecHitCollection > rpcRecHitsLabel_
Definition: DTTrigPhase2Prod.cc:125
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
cmsdt::metaPrimitive::wi3
int wi3
Definition: constants.h:133
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
cmsdt::metaPrimitive::t0
double t0
Definition: constants.h:120
DTTrigPhase2Prod::mpathassociator_
std::unique_ptr< MuonPathAssociator > mpathassociator_
Definition: DTTrigPhase2Prod.cc:133
DTTrigPhase2Prod::scenario_
int scenario_
Definition: DTTrigPhase2Prod.cc:119