CMS 3D CMS Logo

L1FPGATrackProducer.cc
Go to the documentation of this file.
1 // Producer by Anders //
3 // and Emmanuele //
4 // july 2012 @ CU //
6 
8 // FRAMEWORK HEADERS
11 //
18 //
22 
24 // DATA FORMATS HEADERS
27 //
32 //
35 
45 //
48 //
56 //
59 //
64 
66 // DETECTOR GEOMETRY HEADERS
77 //
79 
81 // Tracklet emulation
86 
88 // PHYSICS TOOLS
91 
94 
97 
99 // STD HEADERS
100 #include <memory>
101 #include <string>
102 #include <iostream>
103 #include <fstream>
104 
106 // NAMESPACES
107 using namespace edm;
108 using namespace std;
109 
111 // //
112 // CLASS DEFINITION //
113 // //
115 
117 // this class is needed to make a map
118 // between different types of stubs
120 public:
121  bool operator()(const trklet::L1TStub& a, const trklet::L1TStub& b) const {
122  if (a.x() != b.x())
123  return (b.x() > a.x());
124  else {
125  if (a.y() != b.y())
126  return (b.y() > a.y());
127  else
128  return (a.z() > b.z());
129  }
130  }
131 };
132 
133 class L1FPGATrackProducer : public edm::one::EDProducer<edm::one::WatchRuns> {
134 public:
136  explicit L1FPGATrackProducer(const edm::ParameterSet& iConfig);
137  ~L1FPGATrackProducer() override;
138 
139 private:
140  int eventnum;
141 
144 
146 
152 
155 
157  std::ofstream asciiEventOut_;
158 
159  // settings containing various constants for the tracklet processing
161 
162  // event processor for the tracklet track finding
164 
165  unsigned int nHelixPar_;
166  bool extended_;
167 
169  std::unique_ptr<TrackQuality> trackQualityModel_;
170 
171  std::map<string, vector<int>> dtclayerdisk;
172 
176 
178 
182 
183  // helper class to store DTC configuration
185 
186  // Setup token
189 
192 
195  void beginRun(const edm::Run& run, const edm::EventSetup& iSetup) override;
196  void endRun(edm::Run const&, edm::EventSetup const&) override;
197  void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
198 };
199 
201 // CONSTRUCTOR
203  : config(iConfig),
204  readMoreMcTruth_(iConfig.getParameter<bool>("readMoreMcTruth")),
205  MCTruthClusterInputTag(readMoreMcTruth_ ? config.getParameter<edm::InputTag>("MCTruthClusterInputTag")
206  : edm::InputTag()),
207  MCTruthStubInputTag(readMoreMcTruth_ ? config.getParameter<edm::InputTag>("MCTruthStubInputTag")
208  : edm::InputTag()),
209  TrackingParticleInputTag(readMoreMcTruth_ ? iConfig.getParameter<edm::InputTag>("TrackingParticleInputTag")
210  : edm::InputTag()),
211  bsToken_(consumes<reco::BeamSpot>(config.getParameter<edm::InputTag>("BeamSpotSource"))),
212  tokenDTC_(consumes<TTDTC>(edm::InputTag(iConfig.getParameter<edm::InputTag>("InputTagTTDTC")))),
213  magneticFieldToken_(esConsumes<edm::Transition::BeginRun>()),
214  tGeomToken_(esConsumes()),
215  tTopoToken_(esConsumes()) {
216  if (readMoreMcTruth_) {
217  ttClusterMCTruthToken_ = consumes<TTClusterAssociationMap<Ref_Phase2TrackerDigi_>>(MCTruthClusterInputTag);
218  TrackingParticleToken_ = consumes<std::vector<TrackingParticle>>(TrackingParticleInputTag);
219  }
220 
221  produces<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>>("Level1TTTracks").setBranchAlias("Level1TTTracks");
222 
223  asciiEventOutName_ = iConfig.getUntrackedParameter<string>("asciiFileName", "");
224 
225  fitPatternFile = iConfig.getParameter<edm::FileInPath>("fitPatternFile");
226  processingModulesFile = iConfig.getParameter<edm::FileInPath>("processingModulesFile");
227  memoryModulesFile = iConfig.getParameter<edm::FileInPath>("memoryModulesFile");
228  wiresFile = iConfig.getParameter<edm::FileInPath>("wiresFile");
229 
230  extended_ = iConfig.getParameter<bool>("Extended");
231  nHelixPar_ = iConfig.getParameter<unsigned int>("Hnpar");
232 
233  if (extended_) {
234  tableTEDFile = iConfig.getParameter<edm::FileInPath>("tableTEDFile");
235  tableTREFile = iConfig.getParameter<edm::FileInPath>("tableTREFile");
236  }
237 
238  // book ES product
239  esGetToken_ = esConsumes<trackerDTC::Setup, trackerDTC::SetupRcd, edm::Transition::BeginRun>();
240 
241  // --------------------------------------------------------------------------------
242  // set options in Settings based on inputs from configuration files
243  // --------------------------------------------------------------------------------
244 
247 
252 
253  if (extended_) {
256 
257  //FIXME: The TED and TRE tables are currently disabled by default, so we
258  //need to allow for the additional tracklets that will eventually be
259  //removed by these tables, once they are finalized
261  }
262 
263  eventnum = 0;
264  if (not asciiEventOutName_.empty()) {
265  asciiEventOut_.open(asciiEventOutName_.c_str());
266  }
267 
268  if (settings.debugTracklet()) {
269  edm::LogVerbatim("Tracklet") << "fit pattern : " << fitPatternFile.fullPath()
270  << "\n process modules : " << processingModulesFile.fullPath()
271  << "\n memory modules : " << memoryModulesFile.fullPath()
272  << "\n wires : " << wiresFile.fullPath();
273  if (extended_) {
274  edm::LogVerbatim("Tracklet") << "table_TED : " << tableTEDFile.fullPath()
275  << "\n table_TRE : " << tableTREFile.fullPath();
276  }
277  }
278 
279  trackQuality_ = iConfig.getParameter<bool>("TrackQuality");
280  if (trackQuality_) {
281  trackQualityModel_ = std::make_unique<TrackQuality>(iConfig.getParameter<edm::ParameterSet>("TrackQualityPSet"));
282  }
283 }
284 
286 // DESTRUCTOR
288  if (asciiEventOut_.is_open()) {
289  asciiEventOut_.close();
290  }
291 }
292 
294 //
296 
298 // BEGIN JOB
301  // GET MAGNETIC FIELD //
302  const MagneticField* theMagneticField = &iSetup.getData(magneticFieldToken_);
303  double mMagneticFieldStrength = theMagneticField->inTesla(GlobalPoint(0, 0, 0)).z();
304  settings.setBfield(mMagneticFieldStrength);
305 
306  setup_ = iSetup.getData(esGetToken_);
307 
308  // initialize the tracklet event processing (this sets all the processing & memory modules, wiring, etc)
310 }
311 
313 // PRODUCE
315  typedef std::map<trklet::L1TStub,
318  stubMapType;
320  TTClusterRef;
321 
323  auto L1TkTracksForOutput = std::make_unique<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>>();
324 
325  stubMapType stubMap;
326 
328  // GET BS //
329  edm::Handle<reco::BeamSpot> beamSpotHandle;
330  iEvent.getByToken(bsToken_, beamSpotHandle);
331  math::XYZPoint bsPosition = beamSpotHandle->position();
332 
333  eventnum++;
335  ev.setEventNum(eventnum);
336  ev.setIP(bsPosition.x(), bsPosition.y());
337 
338  // tracking particles
339  edm::Handle<std::vector<TrackingParticle>> TrackingParticleHandle;
340  if (readMoreMcTruth_)
341  iEvent.getByToken(TrackingParticleToken_, TrackingParticleHandle);
342 
343  // tracker topology
344  const TrackerTopology* const tTopo = &iSetup.getData(tTopoToken_);
345  const TrackerGeometry* const theTrackerGeom = &iSetup.getData(tGeomToken_);
346 
348  // GET THE PRIMITIVES //
349  edm::Handle<TTDTC> handleDTC;
350  iEvent.getByToken<TTDTC>(tokenDTC_, handleDTC);
351 
352  // must be defined for code to compile, even if it's not used unless readMoreMcTruth_ is true
353  map<edm::Ptr<TrackingParticle>, int> translateTP;
354 
355  // MC truth association maps
357  if (readMoreMcTruth_) {
358  iEvent.getByToken(ttClusterMCTruthToken_, MCTruthTTClusterHandle);
359 
362 
363  int ntps = 1; //count from 1 ; 0 will mean invalid
364 
365  int this_tp = 0;
366  for (const auto& iterTP : *TrackingParticleHandle) {
367  edm::Ptr<TrackingParticle> tp_ptr(TrackingParticleHandle, this_tp);
368  this_tp++;
369 
370  // only keep TPs producing a cluster
371  if (MCTruthTTClusterHandle->findTTClusterRefs(tp_ptr).empty())
372  continue;
373 
374  if (iterTP.g4Tracks().empty()) {
375  continue;
376  }
377 
378  int sim_eventid = iterTP.g4Tracks().at(0).eventId().event();
379  int sim_type = iterTP.pdgId();
380  float sim_pt = iterTP.pt();
381  float sim_eta = iterTP.eta();
382  float sim_phi = iterTP.phi();
383 
384  float vx = iterTP.vertex().x();
385  float vy = iterTP.vertex().y();
386  float vz = iterTP.vertex().z();
387 
388  if (sim_pt < 1.0 || std::abs(vz) > 100.0 || hypot(vx, vy) > 50.0)
389  continue;
390 
391  ev.addL1SimTrack(sim_eventid, ntps, sim_type, sim_pt, sim_eta, sim_phi, vx, vy, vz);
392 
393  translateTP[tp_ptr] = ntps;
394  ntps++;
395 
396  } //end loop over TPs
397 
398  } // end if (readMoreMcTruth_)
399 
403 
404  // Process stubs in each region and channel within that region
405  for (const int& region : handleDTC->tfpRegions()) {
406  for (const int& channel : handleDTC->tfpChannels()) {
407  // Get the DTC name form the channel
408 
409  static string dtcbasenames[12] = {
410  "PS10G_1", "PS10G_2", "PS10G_3", "PS10G_4", "PS_1", "PS_2", "2S_1", "2S_2", "2S_3", "2S_4", "2S_5", "2S_6"};
411 
412  string dtcname = dtcbasenames[channel % 12];
413 
414  if (channel % 24 >= 12)
415  dtcname = "neg" + dtcname;
416 
417  dtcname += (channel < 24) ? "_A" : "_B";
418 
419  // Get the stubs from the DTC
420  const TTDTC::Stream& streamFromDTC{handleDTC->stream(region, channel)};
421 
422  // Prepare the DTC stubs for the IR
423  for (size_t stubIndex = 0; stubIndex < streamFromDTC.size(); ++stubIndex) {
424  const TTDTC::Frame& stub{streamFromDTC[stubIndex]};
425 
426  if (stub.first.isNull()) {
427  continue;
428  }
429 
430  const GlobalPoint& ttPos = setup_.stubPos(stub.first);
431 
432  //Get the 2 bits for the layercode
433  string layerword = stub.second.to_string().substr(61, 2);
434  unsigned int layercode = 2 * (layerword[0] - '0') + layerword[1] - '0';
435  assert(layercode < 4);
436 
437  //translation from the two bit layercode to the layer/disk number of each of the
438  //12 channels (dtcs)
439  static int layerdisktab[12][4] = {{0, 6, 8, 10},
440  {0, 7, 9, -1},
441  {1, 7, -1, -1},
442  {6, 8, 10, -1},
443  {2, 7, -1, -1},
444  {2, 9, -1, -1},
445  {3, 4, -1, -1},
446  {4, -1, -1, -1},
447  {5, -1, -1, -1},
448  {5, 8, -1, -1},
449  {6, 9, -1, -1},
450  {7, 10, -1, -1}};
451 
452  int layerdisk = layerdisktab[channel % 12][layercode];
453  assert(layerdisk != -1);
454 
455  //Get the 36 bit word - skip the lowest 3 buts (status and layer code)
456  constexpr int DTCLinkWordSize = 64;
457  constexpr int StubWordSize = 36;
458  constexpr int LayerandStatusCodeSize = 3;
459  string stubword =
460  stub.second.to_string().substr(DTCLinkWordSize - StubWordSize - LayerandStatusCodeSize, StubWordSize);
461  string stubwordhex = "";
462 
463  //Loop over the 9 words in the 36 bit stub word
464  for (unsigned int i = 0; i < 9; i++) {
465  bitset<4> bits(stubword.substr(i * 4, 4));
466  ulong val = bits.to_ulong();
467  stubwordhex += ((val < 10) ? ('0' + val) : ('A' + val - 10));
468  }
469 
472  innerCluster = stub.first->clusterRef(0);
474  outerCluster = stub.first->clusterRef(1);
475 
476  // -----------------------------------------------------
477  // check module orientation, if flipped, need to store that information for track fit
478  // -----------------------------------------------------
479 
480  const DetId innerDetId = innerCluster->getDetId();
481  const GeomDetUnit* det_inner = theTrackerGeom->idToDetUnit(innerDetId);
482  const auto* theGeomDet_inner = dynamic_cast<const PixelGeomDetUnit*>(det_inner);
483  const PixelTopology* topol_inner = dynamic_cast<const PixelTopology*>(&(theGeomDet_inner->specificTopology()));
484 
485  MeasurementPoint coords_inner = innerCluster->findAverageLocalCoordinatesCentered();
486  LocalPoint clustlp_inner = topol_inner->localPosition(coords_inner);
487  GlobalPoint posStub_inner = theGeomDet_inner->surface().toGlobal(clustlp_inner);
488 
489  const DetId outerDetId = outerCluster->getDetId();
490  const GeomDetUnit* det_outer = theTrackerGeom->idToDetUnit(outerDetId);
491  const auto* theGeomDet_outer = dynamic_cast<const PixelGeomDetUnit*>(det_outer);
492  const PixelTopology* topol_outer = dynamic_cast<const PixelTopology*>(&(theGeomDet_outer->specificTopology()));
493 
494  MeasurementPoint coords_outer = outerCluster->findAverageLocalCoordinatesCentered();
495  LocalPoint clustlp_outer = topol_outer->localPosition(coords_outer);
496  GlobalPoint posStub_outer = theGeomDet_outer->surface().toGlobal(clustlp_outer);
497 
498  bool isFlipped = (posStub_outer.mag() < posStub_inner.mag());
499 
500  vector<int> assocTPs;
501 
502  for (unsigned int iClus = 0; iClus <= 1; iClus++) { // Loop over both clusters that make up stub.
503 
504  const TTClusterRef& ttClusterRef = stub.first->clusterRef(iClus);
505 
506  // Now identify all TP's contributing to either cluster in stub.
507  vector<edm::Ptr<TrackingParticle>> vecTpPtr = MCTruthTTClusterHandle->findTrackingParticlePtrs(ttClusterRef);
508 
509  for (const edm::Ptr<TrackingParticle>& tpPtr : vecTpPtr) {
510  if (translateTP.find(tpPtr) != translateTP.end()) {
511  if (iClus == 0) {
512  assocTPs.push_back(translateTP.at(tpPtr));
513  } else {
514  assocTPs.push_back(-translateTP.at(tpPtr));
515  }
516  // N.B. Since not all tracking particles are stored in InputData::vTPs_, sometimes no match will be found.
517  } else {
518  assocTPs.push_back(0);
519  }
520  }
521  }
522 
523  double stubbend = stub.first->bendFE(); //stub.first->rawBend()
524  if (ttPos.z() < -120) {
525  stubbend = -stubbend;
526  }
527 
528  ev.addStub(dtcname,
529  region,
530  layerdisk,
531  stubwordhex,
532  setup_.psModule(setup_.dtcId(region, channel)),
533  isFlipped,
534  ttPos.x(),
535  ttPos.y(),
536  ttPos.z(),
537  stubbend,
538  stub.first->innerClusterPosition(),
539  assocTPs);
540 
541  const trklet::L1TStub& lastStub = ev.lastStub();
542  stubMap[lastStub] = stub.first;
543  }
544  }
545  }
546 
548  // NOW RUN THE L1 tracking
549 
550  if (!asciiEventOutName_.empty()) {
551  ev.write(asciiEventOut_);
552  }
553 
554  const std::vector<trklet::Track>& tracks = eventProcessor.tracks();
555 
556  // this performs the actual tracklet event processing
558 
559  int ntracks = 0;
560 
561  for (const auto& track : tracks) {
562  if (track.duplicate())
563  continue;
564 
565  ntracks++;
566 
567  // this is where we create the TTTrack object
568  double tmp_rinv = track.rinv(settings);
569  double tmp_phi = track.phi0(settings);
570  double tmp_tanL = track.tanL(settings);
571  double tmp_z0 = track.z0(settings);
572  double tmp_d0 = track.d0(settings);
573  double tmp_chi2rphi = track.chisqrphi();
574  double tmp_chi2rz = track.chisqrz();
575  unsigned int tmp_hit = track.hitpattern();
576 
577  TTTrack<Ref_Phase2TrackerDigi_> aTrack(tmp_rinv,
578  tmp_phi,
579  tmp_tanL,
580  tmp_z0,
581  tmp_d0,
582  tmp_chi2rphi,
583  tmp_chi2rz,
584  0,
585  0,
586  0,
587  tmp_hit,
589  settings.bfield());
590 
591  unsigned int trksector = track.sector();
592  unsigned int trkseed = (unsigned int)abs(track.seed());
593 
594  aTrack.setPhiSector(trksector);
595  aTrack.setTrackSeedType(trkseed);
596 
597  const vector<trklet::L1TStub>& stubptrs = track.stubs();
598  vector<trklet::L1TStub> stubs;
599 
600  stubs.reserve(stubptrs.size());
601  for (const auto& stubptr : stubptrs) {
602  stubs.push_back(stubptr);
603  }
604 
605  stubMapType::const_iterator it;
606  for (const auto& itstubs : stubs) {
607  it = stubMap.find(itstubs);
608  if (it != stubMap.end()) {
609  aTrack.addStubRef(it->second);
610  } else {
611  // could not find stub in stub map
612  }
613  }
614 
615  // pt consistency
616  aTrack.setStubPtConsistency(
617  StubPtConsistency::getConsistency(aTrack, theTrackerGeom, tTopo, settings.bfield(), settings.nHelixPar()));
618 
619  // set TTTrack word
620  aTrack.setTrackWordBits();
621 
622  if (trackQuality_) {
623  trackQualityModel_->setTrackQuality(aTrack);
624  }
625 
626  // test track word
627  //aTrack.testTrackWordBits();
628 
629  L1TkTracksForOutput->push_back(aTrack);
630  }
631 
632  iEvent.put(std::move(L1TkTracksForOutput), "Level1TTTracks");
633 
634 }
635 
636 // ///////////////////////////
637 // // DEFINE THIS AS A PLUG-IN
Settings.h
trklet::Settings::setWiresFile
void setWiresFile(std::string wiresFileName)
Definition: Settings.h:78
L1FPGATrackProducer::tokenDTC_
edm::EDGetTokenT< TTDTC > tokenDTC_
Definition: L1FPGATrackProducer.cc:181
L1FPGATrackProducer::processingModulesFile
edm::FileInPath processingModulesFile
Definition: L1FPGATrackProducer.cc:150
L1TrackObjectNtupleMaker_cfg.MCTruthStubInputTag
MCTruthStubInputTag
Definition: L1TrackObjectNtupleMaker_cfg.py:145
Point2DBase
Definition: Point2DBase.h:9
Ecal2004TBTDCRanges_v1_cff.endRun
endRun
Definition: Ecal2004TBTDCRanges_v1_cff.py:4
L1TStub.h
trklet::TrackletEventProcessor::event
void event(SLHCEvent &ev)
Definition: TrackletEventProcessor.cc:176
Handle.h
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
TTDTC
Class to store hardware like structured TTStub Collection used by Track Trigger emulators.
Definition: TTDTC.h:17
electrons_cff.bool
bool
Definition: electrons_cff.py:366
mps_fire.i
i
Definition: mps_fire.py:428
L1FPGATrackProducer::settings
trklet::Settings settings
Definition: L1FPGATrackProducer.cc:160
EDProducer.h
FreeTrajectoryState.h
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
MessageLogger.h
L1FPGATrackProducer::esGetToken_
edm::ESGetToken< trackerDTC::Setup, trackerDTC::SetupRcd > esGetToken_
Definition: L1FPGATrackProducer.cc:187
TrackerGeometry.h
GeomDet
Definition: GeomDet.h:27
FastHelix.h
L1FPGATrackProducer::produce
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: L1FPGATrackProducer.cc:314
ESHandle.h
align::BeamSpot
Definition: StructureType.h:95
RectangularPixelTopology.h
TTTypes.h
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
trklet::Settings::setTableTEDFile
void setTableTEDFile(std::string tableTEDFileName)
Definition: Settings.h:79
L1FPGATrackProducer::trackQualityModel_
std::unique_ptr< TrackQuality > trackQualityModel_
Definition: L1FPGATrackProducer.cc:169
edm::Run
Definition: Run.h:45
L1FPGATrackProducer::TrackingParticleInputTag
edm::InputTag TrackingParticleInputTag
Definition: L1FPGATrackProducer.cc:175
edm::EDGetTokenT< reco::BeamSpot >
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology
Definition: TrackerTopology.h:16
L1FPGATrackProducer
Definition: L1FPGATrackProducer.cc:133
trklet::TrackletEventProcessor::init
void init(Settings const &theSettings)
Definition: TrackletEventProcessor.cc:27
TTDTC.h
PSimHitContainer.h
trklet::Settings
Definition: Settings.h:52
trklet::L1TStub
Definition: L1TStub.h:14
L1TStubCompare::operator()
bool operator()(const trklet::L1TStub &a, const trklet::L1TStub &b) const
Definition: L1FPGATrackProducer.cc:121
GeomDetType.h
L1FPGATrackProducer::~L1FPGATrackProducer
~L1FPGATrackProducer() override
Definition: L1FPGATrackProducer.cc:287
cms::cuda::assert
assert(be >=bs)
TTTrack
Class to store the L1 Track Trigger tracks.
Definition: TTTrack.h:29
L1FPGATrackProducer::L1FPGATrackProducer
L1FPGATrackProducer(const edm::ParameterSet &iConfig)
Constructor/destructor.
Definition: L1FPGATrackProducer.cc:202
PixelChannelIdentifier.h
Topology::localPosition
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
edm::one::EDProducer
Definition: EDProducer.h:30
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
L1FPGATrackProducer::memoryModulesFile
edm::FileInPath memoryModulesFile
Definition: L1FPGATrackProducer.cc:149
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
L1FPGATrackProducer::ttClusterMCTruthToken_
edm::EDGetTokenT< TTClusterAssociationMap< Ref_Phase2TrackerDigi_ > > ttClusterMCTruthToken_
Definition: L1FPGATrackProducer.cc:179
TTTrack_TrackWord.h
vertices_cff.ntracks
ntracks
Definition: vertices_cff.py:34
trackerDTC::Setup
Class to process and provide run-time constants used by Track Trigger emulators.
Definition: Setup.h:41
StubPtConsistency.h
edm::Handle< reco::BeamSpot >
TTClusterAssociationMap.h
trklet::Settings::bfield
double bfield() const
Definition: Settings.h:253
edm::Ref
Definition: AssociativeIterator.h:58
GenParticle.h
TrackerGeometry::idToDetUnit
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Definition: TrackerGeometry.cc:183
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
L1FPGATrackProducer::endRun
void endRun(edm::Run const &, edm::EventSetup const &) override
Definition: L1FPGATrackProducer.cc:295
L1FPGATrackProducer::bsToken_
const edm::EDGetTokenT< reco::BeamSpot > bsToken_
Definition: L1FPGATrackProducer.cc:177
Sector.h
L1FPGATrackProducer::readMoreMcTruth_
bool readMoreMcTruth_
Definition: L1FPGATrackProducer.cc:145
config
Definition: config.py:1
DetId
Definition: DetId.h:17
TTDTC::tfpChannels
const std::vector< int > & tfpChannels() const
Definition: TTDTC.h:35
edm::FileInPath
Definition: FileInPath.h:61
L1FPGATrackProducer::fitPatternFile
edm::FileInPath fitPatternFile
File path for configuration files.
Definition: L1FPGATrackProducer.cc:148
MakerMacros.h
L1FPGATrackProducer::nHelixPar_
unsigned int nHelixPar_
Definition: L1FPGATrackProducer.cc:165
PSimHit.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
BeamSpot.h
L1FPGATrackProducer::config
edm::ParameterSet config
Containers of parameters passed by python configuration file.
Definition: L1FPGATrackProducer.cc:143
L1FPGATrackProducer::setup_
trackerDTC::Setup setup_
Definition: L1FPGATrackProducer.cc:184
Service.h
L1FPGATrackProducer::tableTREFile
edm::FileInPath tableTREFile
Definition: L1FPGATrackProducer.cc:154
TTDTC::Stream
std::vector< Frame > Stream
Definition: TTDTC.h:24
SimVertex.h
TTStub
Class to store the L1 Track Trigger stubs.
Definition: TTStub.h:22
L1TrackObjectNtupleMaker_cfg.TrackingParticleInputTag
TrackingParticleInputTag
Definition: L1TrackObjectNtupleMaker_cfg.py:146
IdealMagneticFieldRecord.h
L1FPGATrackProducer::eventnum
int eventnum
Definition: L1FPGATrackProducer.cc:140
StackedTrackerGeometryRecord.h
SLHCEvent.h
L1FPGATrackProducer::dtclayerdisk
std::map< string, vector< int > > dtclayerdisk
Definition: L1FPGATrackProducer.cc:171
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
reco::BeamSpot::position
const Point & position() const
position
Definition: BeamSpot.h:59
TTDTC::tfpRegions
const std::vector< int > & tfpRegions() const
Definition: TTDTC.h:33
TTTrack.h
Point3DBase< float, GlobalTag >
PixelTopology
Definition: PixelTopology.h:10
b
double b
Definition: hdecay.h:118
MeasurementVector.h
trackerDTC::Setup::dtcId
int dtcId(int tklId) const
Definition: Setup.cc:272
FileInPath.h
TTDTC::stream
const Stream & stream(int tfpRegion, int tfpChannel) const
Definition: TTDTC.cc:47
TrackerDigiGeometryRecord.h
trklet::TrackletEventProcessor::tracks
const std::vector< Track > & tracks() const
Definition: TrackletEventProcessor.h:33
HelixArbitraryPlaneCrossing.h
edm::ParameterSet
Definition: ParameterSet.h:47
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
edm::Transition
Transition
Definition: Transition.h:12
L1FPGATrackProducer::MCTruthStubInputTag
edm::InputTag MCTruthStubInputTag
Definition: L1FPGATrackProducer.cc:174
a
double a
Definition: hdecay.h:119
Event.h
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:176
L1FPGATrackProducer::eventProcessor
trklet::TrackletEventProcessor eventProcessor
Definition: L1FPGATrackProducer.cc:163
trklet::Settings::nHelixPar
unsigned int nHelixPar() const
Definition: Settings.h:245
L1FPGATrackProducer::beginRun
void beginRun(const edm::Run &run, const edm::EventSetup &iSetup) override
Definition: L1FPGATrackProducer.cc:299
trklet::SLHCEvent
Definition: SLHCEvent.h:17
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
LorentzVector.h
trklet::TrackletEventProcessor
Definition: TrackletEventProcessor.h:21
HLT_FULL_cff.region
region
Definition: HLT_FULL_cff.py:88286
ModuleDef.h
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
PixelGeomDetUnit.h
TTStubAssociationMap.h
L1TStubCompare
Definition: L1FPGATrackProducer.cc:119
MeasurementPoint.h
L1FPGATrackProducer::tGeomToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tGeomToken_
Definition: L1FPGATrackProducer.cc:190
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:58
trklet::Settings::setBfield
void setBfield(double bfield)
Definition: Settings.h:254
DetSetVector.h
TTClusterRef
TTClusterRefT< Ref_Phase2TrackerDigi_ > TTClusterRef
Definition: TTTypes.h:44
PixelGeomDetType.h
trklet::Settings::setNHelixPar
void setNHelixPar(unsigned int nHelixPar)
Definition: Settings.h:246
TTCluster.h
edm::ESGetToken< trackerDTC::Setup, trackerDTC::SetupRcd >
InputTag.h
edm::Ptr< TrackingParticle >
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
trklet::Settings::setTableTREFile
void setTableTREFile(std::string tableTREFileName)
Definition: Settings.h:80
Setup.h
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
L1FPGATrackProducer::MCTruthClusterInputTag
edm::InputTag MCTruthClusterInputTag
Definition: L1FPGATrackProducer.cc:173
TrackletEventProcessor.h
TrackingParticle.h
GeomDet.h
heppy_batch.val
val
Definition: heppy_batch.py:351
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
Ref.h
trklet::Settings::setExtended
void setExtended(bool extended)
Definition: Settings.h:249
Track.h
DetId.h
trackerDTC::Setup::psModule
bool psModule(int dtcId) const
Definition: Setup.cc:300
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
edm::Transition::BeginRun
L1FPGATrackProducer::asciiEventOutName_
string asciiEventOutName_
Definition: L1FPGATrackProducer.cc:156
ev
bool ev
Definition: Hydjet2Hadronizer.cc:97
L1FPGATrackProducer::extended_
bool extended_
Definition: L1FPGATrackProducer.cc:166
trackerDTC::Setup::stubPos
GlobalPoint stubPos(bool hybrid, const TTDTC::Frame &frame, int tfpRegion, int tfpChannel) const
Definition: Setup.cc:615
trklet::Settings::setMemoryModulesFile
void setMemoryModulesFile(std::string memoryModulesFileName)
Definition: Settings.h:77
TTDTC::Frame
std::pair< TTStubRef, BV > Frame
Definition: TTDTC.h:22
EventSetup.h
trklet::Settings::debugTracklet
bool debugTracklet() const
Definition: Settings.h:182
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
L1TrackObjectNtupleMaker_cfg.MCTruthClusterInputTag
MCTruthClusterInputTag
Definition: L1TrackObjectNtupleMaker_cfg.py:144
TTCluster
NOTE: this is needed even if it seems not.
Definition: TTCluster.h:27
BoundPlane.h
TTStub.h
StubPtConsistency::getConsistency
float getConsistency(TTTrack< Ref_Phase2TrackerDigi_ > aTrack, const TrackerGeometry *theTrackerGeom, const TrackerTopology *tTopo, double mMagneticFieldStrength, int nPar)
Definition: StubPtConsistency.cc:9
L1FPGATrackProducer::tableTEDFile
edm::FileInPath tableTEDFile
Definition: L1FPGATrackProducer.cc:153
TrackQuality.h
Candidate.h
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
genParticles_cff.map
map
Definition: genParticles_cff.py:11
SimTrack.h
ParameterSet.h
PXBDetId.h
L1FPGATrackProducer::TrackingParticleToken_
edm::EDGetTokenT< std::vector< TrackingParticle > > TrackingParticleToken_
Definition: L1FPGATrackProducer.cc:180
PXFDetId.h
trklet::Settings::setProcessingModulesFile
void setProcessingModulesFile(std::string processingModulesFileName)
Definition: Settings.h:74
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::Event
Definition: Event.h:73
trklet::Settings::setFitPatternFile
void setFitPatternFile(std::string fitPatternFileName)
Definition: Settings.h:73
L1FPGATrackProducer::asciiEventOut_
std::ofstream asciiEventOut_
Definition: L1FPGATrackProducer.cc:157
L1FPGATrackProducer::wiresFile
edm::FileInPath wiresFile
Definition: L1FPGATrackProducer.cc:151
Vector3D.h
MagneticField
Definition: MagneticField.h:19
L1FPGATrackProducer::magneticFieldToken_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
Definition: L1FPGATrackProducer.cc:188
SimTrackContainer.h
edm::InputTag
Definition: InputTag.h:15
SimVertexContainer.h
PixelTopologyBuilder.h
edm::FileInPath::fullPath
std::string fullPath() const
Definition: FileInPath.cc:161
L1FPGATrackProducer::trackQuality_
bool trackQuality_
Definition: L1FPGATrackProducer.cc:168
L1FPGATrackProducer::tTopoToken_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
Definition: L1FPGATrackProducer.cc:191
trklet::Settings::setNbitstrackletindex
void setNbitstrackletindex(unsigned int nbitstrackletindex)
Definition: Settings.h:272
TrackerGeometry
Definition: TrackerGeometry.h:14