CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
L1TrackerEtMissEmulatorProducer Class Reference

#include <L1TrackerEtMissEmulatorProducer.cc>

Inheritance diagram for L1TrackerEtMissEmulatorProducer:
edm::stream::EDProducer<>

Public Types

typedef std::vector< L1TTTrackTypeL1TTTrackCollectionType
 
typedef edm::RefVector< L1TTTrackCollectionTypeL1TTTrackRefCollectionType
 
typedef TTTrack< Ref_Phase2TrackerDigi_L1TTTrackType
 
- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Public Member Functions

 L1TrackerEtMissEmulatorProducer (const edm::ParameterSet &)
 
 ~L1TrackerEtMissEmulatorProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

virtual void beginJob ()
 
virtual void endJob ()
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

bool cordicDebug_ = false
 
int cordicSteps_
 
std::vector< l1tmetemu::cos_lut_fixed_tcosLUT_
 
int debug_
 
std::string L1MetCollectionName_
 
std::vector< l1tmetemu::global_phi_tphiQuadrants_
 
std::vector< l1tmetemu::global_phi_tphiShifts_
 
const edm::EDGetTokenT< L1TTTrackRefCollectionTypetrackToken_
 
const edm::EDGetTokenT< L1TTTrackRefCollectionTypevtxAssocTrackToken_
 

Detailed Description

L1Trigger/L1TTrackMatch/plugins/L1TrackerEtMissEmulatorProducer.cc

Description: Takes L1TTTracks and performs a integer emulation of Track-based missing Et, outputting a collection of EtSum

Definition at line 42 of file L1TrackerEtMissEmulatorProducer.cc.

Member Typedef Documentation

◆ L1TTTrackCollectionType

Definition at line 45 of file L1TrackerEtMissEmulatorProducer.cc.

◆ L1TTTrackRefCollectionType

Definition at line 46 of file L1TrackerEtMissEmulatorProducer.cc.

◆ L1TTTrackType

Definition at line 44 of file L1TrackerEtMissEmulatorProducer.cc.

Constructor & Destructor Documentation

◆ L1TrackerEtMissEmulatorProducer()

L1TrackerEtMissEmulatorProducer::L1TrackerEtMissEmulatorProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 75 of file L1TrackerEtMissEmulatorProducer.cc.

References cordicDebug_, cordicSteps_, cosLUT_, debug_, l1tmetemu::generateCosLUT(), l1tmetemu::generatePhiSliceLUT(), edm::ParameterSet::getParameter(), createfilelist::int, l1tmetemu::kNQuadrants, l1tmetemu::kNSector, L1MetCollectionName_, phiQuadrants_, phiShifts_, l1tmetemu::printLUT(), and AlCaHLTBitMon_QueryRunRegistry::string.

76  : trackToken_(consumes<L1TTTrackRefCollectionType>(iConfig.getParameter<edm::InputTag>("L1TrackInputTag"))),
78  consumes<L1TTTrackRefCollectionType>(iConfig.getParameter<edm::InputTag>("L1TrackAssociatedInputTag"))) {
81 
82  // Get Emulator config parameters
83  cordicSteps_ = (int)iConfig.getParameter<int>("nCordicSteps");
84  debug_ = (int)iConfig.getParameter<int>("debug");
85  // Name of output ED Product
86  L1MetCollectionName_ = (std::string)iConfig.getParameter<std::string>("L1MetCollectionName");
87 
88  if (debug_ == 5) {
89  cordicDebug_ = true;
90  }
91 
92  // Compute LUTs
94 
95  // Print LUTs
96  if (debug_ == 1) {
97  l1tmetemu::printLUT(phiQuadrants_, "L1TrackerEtMissEmulatorProducer", "phiQuadrants_");
98  l1tmetemu::printLUT(phiShifts_, "L1TrackerEtMissEmulatorProducer", "phiShifts_");
99  l1tmetemu::printLUT(cosLUT_, "L1TrackerEtMissEmulatorProducer", "cosLUT_");
100  }
101 
102  produces<std::vector<EtSum>>(L1MetCollectionName_);
103 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::vector< l1tmetemu::global_phi_t > phiQuadrants_
void printLUT(std::vector< T > lut, std::string module="", std::string name="")
const unsigned int kNQuadrants
const unsigned int kNSector
const edm::EDGetTokenT< L1TTTrackRefCollectionType > vtxAssocTrackToken_
const edm::EDGetTokenT< L1TTTrackRefCollectionType > trackToken_
std::vector< l1tmetemu::global_phi_t > phiShifts_
std::vector< global_phi_t > generatePhiSliceLUT(unsigned int N)
std::vector< l1tmetemu::cos_lut_fixed_t > cosLUT_
std::vector< cos_lut_fixed_t > generateCosLUT()

◆ ~L1TrackerEtMissEmulatorProducer()

L1TrackerEtMissEmulatorProducer::~L1TrackerEtMissEmulatorProducer ( )
override

Definition at line 105 of file L1TrackerEtMissEmulatorProducer.cc.

105 {}

Member Function Documentation

◆ beginJob()

void L1TrackerEtMissEmulatorProducer::beginJob ( void  )
privatevirtual

Definition at line 294 of file L1TrackerEtMissEmulatorProducer.cc.

294 {}

◆ endJob()

void L1TrackerEtMissEmulatorProducer::endJob ( void  )
privatevirtual

Definition at line 296 of file L1TrackerEtMissEmulatorProducer.cc.

296 {}

◆ fillDescriptions()

void L1TrackerEtMissEmulatorProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 299 of file L1TrackerEtMissEmulatorProducer.cc.

References edm::ConfigurationDescriptions::addDefault(), and submitPVResolutionJobs::desc.

299  {
300  //The following says we do not know what parameters are allowed so do no validation
301  // Please change this to state exactly what you do use, even if it is no parameters
303  desc.setUnknown();
304  descriptions.addDefault(desc);
305 }
void addDefault(ParameterSetDescription const &psetDescription)

◆ produce()

void L1TrackerEtMissEmulatorProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 107 of file L1TrackerEtMissEmulatorProducer.cc.

References cordicDebug_, l1tmhtemu::cordicSqrt(), cordicSteps_, funct::cos(), cosLUT_, debug_, l1tmetemu::EtMiss::Et, spr::find(), mps_fire::i, iEvent, createfilelist::int, edm::HandleBase::isValid(), l1tmetemu::kCosLUTShift, L1Analysis::kMissingEt, l1tmetemu::kNSector, l1tmetemu::kPtMagSize, l1tmetemu::kStepMETwordEt, l1tmetemu::kStepMETwordPhi, L1MetCollectionName_, l1tmetemu::localToGlobalPhi(), eostools::move(), l1tmetemu::EtMiss::Phi, phiQuadrants_, phiShifts_, funct::sin(), HLT_2024v12_cff::track, trackToken_, and vtxAssocTrackToken_.

107  {
108  using namespace edm;
109 
110  std::unique_ptr<std::vector<l1t::EtSum>> METCollection(new std::vector<l1t::EtSum>(0));
111 
113  iEvent.getByToken(trackToken_, L1TTTrackHandle);
114 
115  edm::Handle<L1TTTrackRefCollectionType> L1TTTrackAssociatedHandle;
116  iEvent.getByToken(vtxAssocTrackToken_, L1TTTrackAssociatedHandle);
117 
118  // Initialize cordic class
120 
121  if (!L1TTTrackHandle.isValid()) {
122  LogError("L1TrackerEtMissEmulatorProducer") << "\nWarning: L1TTTrackCollection not found in the event. Exit\n";
123  return;
124  }
125 
126  if (!L1TTTrackAssociatedHandle.isValid()) {
127  LogError("L1TrackerEtMissEmulatorProducer")
128  << "\nWarning: L1TTTrackAssociatedCollection not found in the event. Exit\n";
129  return;
130  }
131 
132  // Initialize sector sums, need 0 initialization in case a sector has no
133  // tracks
134  l1tmetemu::Et_t sumPx[l1tmetemu::kNSector * 2] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
135  l1tmetemu::Et_t sumPy[l1tmetemu::kNSector * 2] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
136  int link_totals[l1tmetemu::kNSector * 2] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
137  int sector_totals[l1tmetemu::kNSector] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
138 
139  // Track counters
140  int num_assoc_tracks{0};
141 
142  for (const auto& track : *L1TTTrackHandle) {
143  if (std::find(L1TTTrackAssociatedHandle->begin(), L1TTTrackAssociatedHandle->end(), track) !=
144  L1TTTrackAssociatedHandle->end()) {
145  bool EtaSector = (track->getTanlWord() & (1 << (TTTrack_TrackWord::TrackBitWidths::kTanlSize - 1)));
146 
147  ap_uint<TTTrack_TrackWord::TrackBitWidths::kRinvSize - 1> ptEmulationBits = track->getTrackWord()(
148  TTTrack_TrackWord::TrackBitLocations::kRinvMSB - 1, TTTrack_TrackWord::TrackBitLocations::kRinvLSB);
149  ap_ufixed<TTTrack_TrackWord::TrackBitWidths::kRinvSize - 1, l1tmetemu::kPtMagSize> ptEmulation;
150  ptEmulation.V = ptEmulationBits.range();
151 
152  l1tmetemu::global_phi_t globalPhi =
153  l1tmetemu::localToGlobalPhi(track->getPhiWord(), phiShifts_[track->phiSector()]);
154 
155  num_assoc_tracks++;
156  if (debug_ == 7) {
157  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
158  << "Track to Vertex ID: " << num_assoc_tracks << "\n"
159  << "Phi Sector: " << track->phiSector() << " pT: " << track->getRinvWord()
160  << " Phi: " << track->getPhiWord() << " TanL: " << track->getTanlWord() << " Z0: " << track->getZ0Word()
161  << " Chi2rphi: " << track->getChi2RPhiWord() << " Chi2rz: " << track->getChi2RZWord()
162  << " bendChi2: " << track->getBendChi2Word() << " Emu pT " << ptEmulation.to_double() << "\n"
163  << "--------------------------------------------------------------\n";
164  }
165 
166  if (debug_ == 2) {
167  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
168  << "========================Phi debug=================================\n"
169  << "Emu pT: " << ptEmulation.to_double() << " float pT: " << track->momentum().perp() << "\n"
170  << "Int Phi: " << globalPhi << " Float Phi: " << track->phi() << " Float Cos(Phi): " << cos(track->phi())
171  << " Float Sin(Phi): " << sin(track->phi())
172  << " Float Px: " << track->momentum().perp() * cos(track->phi())
173  << " Float Py: " << track->momentum().perp() * sin(track->phi()) << "\n";
174  }
175 
176  l1tmetemu::Et_t temppx = 0;
177  l1tmetemu::Et_t temppy = 0;
178 
179  // Split tracks in phi quadrants and access cosLUT_, backwards iteration
180  // through cosLUT_ gives sin Sum sector Et -ve when cos or sin phi are -ve
181  sector_totals[track->phiSector()] += 1;
182  if (globalPhi >= phiQuadrants_[0] && globalPhi < phiQuadrants_[1]) {
183  temppx = ((l1tmetemu::Et_t)ptEmulation * cosLUT_[(globalPhi) >> l1tmetemu::kCosLUTShift]);
184  temppy =
185  ((l1tmetemu::Et_t)ptEmulation * cosLUT_[(phiQuadrants_[1] - 1 - globalPhi) >> l1tmetemu::kCosLUTShift]);
186 
187  if (debug_ == 2) {
188  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
189  << "Sector: " << track->phiSector() << " Quadrant: " << 1 << "\n"
190  << "Emu Phi: " << globalPhi << " Emu Cos(Phi): " << cosLUT_[(globalPhi) >> l1tmetemu::kCosLUTShift]
191  << " Emu Sin(Phi): " << cosLUT_[(phiQuadrants_[1] - 1 - globalPhi) >> l1tmetemu::kCosLUTShift] << "\n";
192  }
193  } else if (globalPhi >= phiQuadrants_[1] && globalPhi < phiQuadrants_[2]) {
194  temppx =
195  -((l1tmetemu::Et_t)ptEmulation * cosLUT_[(phiQuadrants_[2] - 1 - globalPhi) >> l1tmetemu::kCosLUTShift]);
196  temppy = ((l1tmetemu::Et_t)ptEmulation * cosLUT_[(globalPhi - phiQuadrants_[1]) >> l1tmetemu::kCosLUTShift]);
197 
198  if (debug_ == 2) {
199  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
200  << "Sector: " << track->phiSector() << " Quadrant: " << 2 << "\n"
201  << "Emu Phi: " << globalPhi << " Emu Cos(Phi): -"
202  << cosLUT_[(phiQuadrants_[2] - 1 - globalPhi) >> l1tmetemu::kCosLUTShift]
203  << " Emu Sin(Phi): " << cosLUT_[(globalPhi - phiQuadrants_[1]) >> l1tmetemu::kCosLUTShift] << "\n";
204  }
205  } else if (globalPhi >= phiQuadrants_[2] && globalPhi < phiQuadrants_[3]) {
206  temppx = -((l1tmetemu::Et_t)ptEmulation * cosLUT_[(globalPhi - phiQuadrants_[2]) >> l1tmetemu::kCosLUTShift]);
207  temppy =
208  -((l1tmetemu::Et_t)ptEmulation * cosLUT_[(phiQuadrants_[3] - 1 - globalPhi) >> l1tmetemu::kCosLUTShift]);
209 
210  if (debug_ == 2) {
211  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
212  << "Sector: " << track->phiSector() << " Quadrant: " << 3 << "\n"
213  << "Emu Phi: " << globalPhi << " Emu Cos(Phi): -"
214  << cosLUT_[(globalPhi - phiQuadrants_[2]) >> l1tmetemu::kCosLUTShift] << " Emu Sin(Phi): -"
215  << cosLUT_[(phiQuadrants_[3] - 1 - globalPhi) >> l1tmetemu::kCosLUTShift] << "\n";
216  }
217 
218  } else if (globalPhi >= phiQuadrants_[3] && globalPhi < phiQuadrants_[4]) {
219  temppx =
220  ((l1tmetemu::Et_t)ptEmulation * cosLUT_[(phiQuadrants_[4] - 1 - globalPhi) >> l1tmetemu::kCosLUTShift]);
221  temppy = -((l1tmetemu::Et_t)ptEmulation * cosLUT_[(globalPhi - phiQuadrants_[3]) >> l1tmetemu::kCosLUTShift]);
222 
223  if (debug_ == 2) {
224  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
225  << "Sector: " << track->phiSector() << " Quadrant: " << 4 << "\n"
226  << " Emu Phi: " << globalPhi
227  << " Emu Cos(Phi): " << cosLUT_[(phiQuadrants_[4] - 1 - globalPhi) >> l1tmetemu::kCosLUTShift]
228  << " Emu Sin(Phi): -" << cosLUT_[(globalPhi - phiQuadrants_[3]) >> l1tmetemu::kCosLUTShift] << "\n";
229  }
230  }
231 
232  int link_number = (track->phiSector() * 2) + ((EtaSector) ? 0 : 1);
233  link_totals[link_number] += 1;
234  sumPx[link_number] += temppx;
235  sumPy[link_number] += temppy;
236 
237  if (debug_ == 4) {
238  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
239  << std::setprecision(8) << "Sector: " << track->phiSector() << " Eta sector: " << EtaSector << "\n"
240  << "Track Ref Pt: " << track->momentum().perp() << " Track Ref Px: " << track->momentum().x()
241  << " Track Ref Py: " << track->momentum().y() << "\n"
242  << "Track Pt: " << ptEmulation << " Track phi: " << globalPhi << " Track Px: " << temppx
243  << " Track Py: " << temppy << "\n"
244  << "Sector Sum Px: " << sumPx[link_number] << " Sector Sum Py: " << sumPy[link_number] << "\n";
245  }
246  }
247  } // end loop over tracks
248 
249  l1tmetemu::Et_t GlobalPx = 0;
250  l1tmetemu::Et_t GlobalPy = 0;
251 
252  // Global Et sum as floats to emulate rounding in HW
253  for (unsigned int i = 0; i < l1tmetemu::kNSector * 2; i++) {
254  GlobalPx += sumPx[i];
255  GlobalPy += sumPy[i];
256  }
257 
258  // Perform cordic sqrt, take x,y and converts to polar coordinate r,phi where
259  // r=sqrt(x**2+y**2) and phi = atan(y/x)
260  l1tmetemu::EtMiss EtMiss = cordicSqrt.toPolar(-GlobalPx, -GlobalPy);
261 
262  if (debug_ == 4 || debug_ == 6) {
263  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer") << "====Sector Pt====\n";
264 
265  for (unsigned int i = 0; i < l1tmetemu::kNSector * 2; i++) {
266  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
267  << "Sector " << i << "\n"
268  << "Px: " << sumPx[i] << " | Py: " << sumPy[i] << " | Link Totals: " << link_totals[i]
269  << " | Sector Totals: " << sector_totals[(int)(i / 2)] << "\n";
270  }
271 
272  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
273  << "====Global Pt====\n"
274  << "Global Px: " << GlobalPx << "| Global Py: " << GlobalPy << "\n";
275 
276  edm::LogVerbatim("L1TrackerEtMissEmulatorProducer")
277  << "====MET===\n"
278  << "MET word Et: " << EtMiss.Et.range() * l1tmetemu::kStepMETwordEt << "| MET word phi: " << EtMiss.Phi << "\n"
279  << "MET: " << EtMiss.Et.to_double() << "| MET phi: " << EtMiss.Phi.to_double() * l1tmetemu::kStepMETwordPhi
280  << "\n"
281  << "Word MET: " << EtMiss.Et.to_string(2) << " | Word MET phi: " << EtMiss.Phi.to_string(2) << "\n"
282  << "# Tracks Associated to Vertex: " << num_assoc_tracks << "\n"
283  << "========================================================\n";
284  }
285 
286  math::XYZTLorentzVector missingEt(-GlobalPx, -GlobalPy, 0, EtMiss.Et);
287  EtSum L1EtSum(missingEt, EtSum::EtSumType::kMissingEt, EtMiss.Et.range(), 0, EtMiss.Phi, num_assoc_tracks);
288 
289  METCollection->push_back(L1EtSum);
290 
292 } // end producer
Log< level::Info, true > LogVerbatim
ap_fixed< kMETSize+kEtExtra, kMETMagSize+kEtExtra, AP_RND_CONV, AP_SAT > Et_t
ap_int< TTTrack_TrackWord::TrackBitWidths::kPhiSize+kGlobalPhiExtra > global_phi_t
std::vector< l1tmetemu::global_phi_t > phiQuadrants_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
EtMiss cordicSqrt(Et_t x, Et_t y, int cordicSteps, std::vector< l1tmhtemu::MHTphi_t > atanLUT, std::vector< Et_t > magNormalisationLUT)
global_phi_t localToGlobalPhi(TTTrack_TrackWord::phi_t local_phi, global_phi_t sector_shift)
const double kStepMETwordEt
Log< level::Error, false > LogError
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
std::vector< reco::MET > METCollection
collection of MET objects
Definition: METCollection.h:22
const unsigned int kNSector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
int iEvent
Definition: GenABIO.cc:224
const edm::EDGetTokenT< L1TTTrackRefCollectionType > vtxAssocTrackToken_
const double kStepMETwordPhi
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
const edm::EDGetTokenT< L1TTTrackRefCollectionType > trackToken_
Definition: Cordic.h:7
Collection of MET.
std::vector< l1tmetemu::global_phi_t > phiShifts_
const unsigned int kCosLUTShift
std::vector< l1tmetemu::cos_lut_fixed_t > cosLUT_
const unsigned int kPtMagSize
bool isValid() const
Definition: HandleBase.h:70
HLT enums.
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

◆ cordicDebug_

bool L1TrackerEtMissEmulatorProducer::cordicDebug_ = false
private

Definition at line 66 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by L1TrackerEtMissEmulatorProducer(), and produce().

◆ cordicSteps_

int L1TrackerEtMissEmulatorProducer::cordicSteps_
private

Definition at line 64 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by L1TrackerEtMissEmulatorProducer(), and produce().

◆ cosLUT_

std::vector<l1tmetemu::cos_lut_fixed_t> L1TrackerEtMissEmulatorProducer::cosLUT_
private

Definition at line 60 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by L1TrackerEtMissEmulatorProducer(), and produce().

◆ debug_

int L1TrackerEtMissEmulatorProducer::debug_
private

Definition at line 65 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by L1TrackerEtMissEmulatorProducer(), and produce().

◆ L1MetCollectionName_

std::string L1TrackerEtMissEmulatorProducer::L1MetCollectionName_
private

Definition at line 68 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by L1TrackerEtMissEmulatorProducer(), and produce().

◆ phiQuadrants_

std::vector<l1tmetemu::global_phi_t> L1TrackerEtMissEmulatorProducer::phiQuadrants_
private

Definition at line 61 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by L1TrackerEtMissEmulatorProducer(), and produce().

◆ phiShifts_

std::vector<l1tmetemu::global_phi_t> L1TrackerEtMissEmulatorProducer::phiShifts_
private

Definition at line 62 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by L1TrackerEtMissEmulatorProducer(), and produce().

◆ trackToken_

const edm::EDGetTokenT<L1TTTrackRefCollectionType> L1TrackerEtMissEmulatorProducer::trackToken_
private

Definition at line 70 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by produce().

◆ vtxAssocTrackToken_

const edm::EDGetTokenT<L1TTTrackRefCollectionType> L1TrackerEtMissEmulatorProducer::vtxAssocTrackToken_
private

Definition at line 71 of file L1TrackerEtMissEmulatorProducer.cc.

Referenced by produce().