CMS 3D CMS Logo

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

#include <DQM/SiStripCommissioningSources/plugins/tracking/SiStripFineDelayHit.cc>

Inheritance diagram for SiStripFineDelayHit:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 SiStripFineDelayHit (const edm::ParameterSet &)
 
 ~SiStripFineDelayHit () override
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Types

using DeviceMask = std::pair< uint32_t, uint32_t >
 

Private Member Functions

void beginRun (const edm::Run &, const edm::EventSetup &) override
 
std::pair< const SiStripCluster *, double > closestCluster (const TrackerGeometry &tracker, const reco::Track *tk, const uint32_t &detId, const edmNew::DetSetVector< SiStripCluster > &clusters, const edm::DetSetVector< SiStripDigi > &hits)
 
std::vector< std::pair< uint32_t, std::pair< double, double > > > detId (const TrackerGeometry &tracker, const TrackerTopology *tkrTopo, const reco::Track *tk, const std::vector< Trajectory > &trajVec, const StripSubdetector::SubDetector subdet=StripSubdetector::TIB, const int substructure=0xff)
 
std::vector< std::pair< uint32_t, std::pair< double, double > > > detId (const TrackerGeometry &tracker, const TrackerTopology *tkrTopo, const reco::Track *tk, const std::vector< Trajectory > &trajVec, const uint32_t &maskDetId, const uint32_t &rootDetId)
 
DeviceMask deviceMask (const StripSubdetector::SubDetector subdet, const int substructure, const TrackerTopology *tkrTopo)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
virtual void produceNoTracking (edm::Event &, const edm::EventSetup &)
 
bool rechit (reco::Track *tk, uint32_t detId)
 

Private Attributes

SiStripFineDelayTLAanglefinder_
 
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clustersToken_
 
std::map< uint32_t, uint32_t > connectionMap_
 
bool cosmic_
 
edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > digiToken_
 
const edm::Eventevent_
 
int explorationWindow_
 
edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcdfedCablingToken_
 
bool field_
 
bool homeMadeClusters_
 
edm::EDGetTokenT< SiStripEventSummaryinputModuleToken_
 
double maxAngle_
 
double maxClusterDistance_
 
double minTrackP2_
 
int mode_
 
edm::ESGetToken< SiStripNoises, SiStripNoisesRcdnoiseToken_
 
bool noTracking_
 
edm::EDGetTokenT< TrajectorySeedCollectionseedcollToken_
 
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtkGeomToken_
 
edm::EDGetTokenT< reco::TrackCollectiontrackCollectionToken_
 
edm::EDGetTokenT< std::vector< Trajectory > > trackToken_
 
edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtTopoToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsInputProcessBlocks ()
 
static bool wantsProcessBlocks ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 43 of file SiStripFineDelayHit.h.

Member Typedef Documentation

◆ DeviceMask

using SiStripFineDelayHit::DeviceMask = std::pair<uint32_t, uint32_t>
private

Definition at line 52 of file SiStripFineDelayHit.h.

Constructor & Destructor Documentation

◆ SiStripFineDelayHit()

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

Definition at line 70 of file SiStripFineDelayHit.cc.

70  : event_(nullptr) {
71  //register your products
72  produces<edm::DetSetVector<SiStripRawDigi> >("FineDelaySelection");
73  //now do what ever other initialization is needed
75  cosmic_ = iConfig.getParameter<bool>("cosmic");
76  field_ = iConfig.getParameter<bool>("MagneticField");
77  maxAngle_ = iConfig.getParameter<double>("MaxTrackAngle");
78  minTrackP2_ = iConfig.getParameter<double>("MinTrackMomentum") * iConfig.getParameter<double>("MinTrackMomentum");
79  maxClusterDistance_ = iConfig.getParameter<double>("MaxClusterDistance");
80  /*
81  clusterLabel_ = iConfig.getParameter<edm::InputTag>("ClustersLabel");
82  trackLabel_ = iConfig.getParameter<edm::InputTag>("TracksLabel");
83  seedLabel_ = iConfig.getParameter<edm::InputTag>("SeedsLabel");
84  inputModuleLabel_ = iConfig.getParameter<edm::InputTag>( "InputModuleLabel" ) ;
85  digiLabel_ = iConfig.getParameter<edm::InputTag>("DigiLabel");
86  */
88  consumes<edmNew::DetSetVector<SiStripCluster> >(iConfig.getParameter<edm::InputTag>("ClustersLabel"));
89  trackToken_ = consumes<std::vector<Trajectory> >(iConfig.getParameter<edm::InputTag>("TracksLabel"));
90  trackCollectionToken_ = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("TracksLabel"));
91  seedcollToken_ = consumes<TrajectorySeedCollection>(iConfig.getParameter<edm::InputTag>("SeedsLabel"));
92  inputModuleToken_ = consumes<SiStripEventSummary>(iConfig.getParameter<edm::InputTag>("InputModuleLabel"));
93  digiToken_ = consumes<edm::DetSetVector<SiStripDigi> >(iConfig.getParameter<edm::InputTag>("DigiLabel"));
94 
95  homeMadeClusters_ = iConfig.getParameter<bool>("NoClustering");
96  explorationWindow_ = iConfig.getParameter<uint32_t>("ExplorationWindow");
97  noTracking_ = iConfig.getParameter<bool>("NoTracking");
98  mode_ = 0;
99 
102  fedCablingToken_ = esConsumes<edm::Transition::BeginRun>();
104 }

References anglefinder_, clustersToken_, edm::EDConsumerBase::consumesCollector(), cosmic_, digiToken_, edm::EDConsumerBase::esConsumes(), explorationWindow_, fedCablingToken_, field_, edm::ParameterSet::getParameter(), homeMadeClusters_, inputModuleToken_, maxAngle_, maxClusterDistance_, minTrackP2_, mode_, noiseToken_, noTracking_, seedcollToken_, tkGeomToken_, trackCollectionToken_, trackToken_, and tTopoToken_.

◆ ~SiStripFineDelayHit()

SiStripFineDelayHit::~SiStripFineDelayHit ( )
override

Definition at line 106 of file SiStripFineDelayHit.cc.

106  {
107  // do anything here that needs to be done at desctruction time
108  // (e.g. close files, deallocate resources etc.)
109  delete anglefinder_;
110 }

References anglefinder_.

Member Function Documentation

◆ beginRun()

void SiStripFineDelayHit::beginRun ( const edm::Run run,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Reimplemented from edm::EDProducer.

Definition at line 610 of file SiStripFineDelayHit.cc.

610  {
611  // Retrieve FED cabling object
612  const auto& cabling = iSetup.getData(fedCablingToken_);
613  auto feds = cabling.fedIds();
614  for (auto fedid = feds.begin(); fedid < feds.end(); ++fedid) {
615  auto connections = cabling.fedConnections(*fedid);
616  for (std::vector<FedChannelConnection>::const_iterator conn = connections.begin(); conn < connections.end();
617  ++conn) {
618  /*
619  SiStripFedKey key(conn->fedId(),
620  SiStripFedKey::feUnit(conn->fedCh()),
621  SiStripFedKey::feChan(conn->fedCh()));
622  connectionMap_[conn->detId()] = key.key();
623  */
624  // the key is computed using an alternate formula for performance reasons.
625  connectionMap_[conn->detId()] = ((conn->fedId() & sistrip::invalid_) << 16) | (conn->fedCh() & sistrip::invalid_);
626  }
627  }
628 }

References SiStripCommissioningClient_cfg::conn, connectionMap_, fedCablingToken_, PixelSLinkDataInputSource_cfi::fedid, l1tstage2emulator_dqm_sourceclient-live_cfg::feds, edm::EventSetup::getData(), and sistrip::invalid_.

◆ closestCluster()

std::pair< const SiStripCluster *, double > SiStripFineDelayHit::closestCluster ( const TrackerGeometry tracker,
const reco::Track tk,
const uint32_t &  detId,
const edmNew::DetSetVector< SiStripCluster > &  clusters,
const edm::DetSetVector< SiStripDigi > &  hits 
)
private

Definition at line 260 of file SiStripFineDelayHit.cc.

265  {
266  std::pair<const SiStripCluster*, double> result(nullptr, 0.);
267  double hitStrip = -1;
268  int nstrips = -1;
269  // localize the crossing point of the track on the module
270  for (trackingRecHit_iterator it = tk->recHitsBegin(); it != tk->recHitsEnd(); it++) {
271  LogDebug("closestCluster") << "(*it)->geographicalId().rawId() vs det_id" << (*it)->geographicalId().rawId() << " "
272  << det_id;
273  //handle the mono rechits
274  if ((*it)->geographicalId().rawId() == det_id) {
275  if (!(*it)->isValid())
276  continue;
277  LogDebug("closestCluster") << " using the single mono hit";
278  LocalPoint lp = (*it)->localPosition();
279  const GeomDetUnit* gdu = static_cast<const GeomDetUnit*>(tracker.idToDet((*it)->geographicalId()));
281  hitStrip = p.x();
282  nstrips = (dynamic_cast<const StripTopology*>(&(gdu->topology())))->nstrips();
283  break;
284  }
285  /* FIXME: local position is not there anymore...
286  //handle stereo part of matched hits
287  //one could try to cast to SiStripMatchedRecHit2D but it is faster to look at the detid
288  else if((det_id - (*it)->geographicalId().rawId())==1) {
289  const SiStripMatchedRecHit2D* hit2D = dynamic_cast<const SiStripMatchedRecHit2D*>(&(**it));
290  if(!hit2D) continue; // this is a security that should never trigger
291  const SiStripRecHit2D* stereo = hit2D->stereoHit();
292  if(!stereo) continue; // this is a security that should never trigger
293  if(!stereo->isValid()) continue;
294  LogDebug("closestCluster") << " using the stereo hit";
295  LocalPoint lp = stereo->localPosition();
296  const GeomDetUnit* gdu = static_cast<const GeomDetUnit*>(tracker.idToDet(stereo->geographicalId()));
297  MeasurementPoint p = gdu->topology().measurementPosition(lp);
298  hitStrip = p.x();
299  nstrips = (dynamic_cast<const StripTopology*>(&(gdu->topology())))->nstrips();
300  break;
301  }
302  //handle mono part of matched hits
303  //one could try to cast to SiStripMatchedRecHit2D but it is faster to look at the detid
304  else if((det_id - (*it)->geographicalId().rawId())==2) {
305  const SiStripMatchedRecHit2D* hit2D = dynamic_cast<const SiStripMatchedRecHit2D*>(&(**it));
306  if(!hit2D) continue; // this is a security that should never trigger
307  const SiStripRecHit2D* mono = hit2D->monoHit();
308  if(!mono) continue; // this is a security that should never trigger
309  if(!mono->isValid()) continue;
310  LogDebug("closestCluster") << " using the mono hit";
311  LocalPoint lp = mono->localPosition();
312  const GeomDetUnit* gdu = static_cast<const GeomDetUnit*>(tracker.idToDet(mono->geographicalId()));
313  MeasurementPoint p = gdu->topology().measurementPosition(lp);
314  hitStrip = p.x();
315  nstrips = (dynamic_cast<const StripTopology*>(&(gdu->topology())))->nstrips();
316  break;
317  }
318  */
319  }
320  LogDebug("closestCluster") << " hit strip = " << hitStrip;
321  if (hitStrip < 0)
322  return result;
323  if (homeMadeClusters_) {
324  // take the list of digis on the module
325  for (edm::DetSetVector<SiStripDigi>::const_iterator DSViter = hits.begin(); DSViter != hits.end(); DSViter++) {
326  if (DSViter->id == det_id) {
327  // loop from hitstrip-n to hitstrip+n (explorationWindow_) and select the highest strip
328  int minStrip = int(round(hitStrip)) - explorationWindow_;
329  minStrip = minStrip < 0 ? 0 : minStrip;
330  int maxStrip = int(round(hitStrip)) + explorationWindow_ + 1;
331  maxStrip = maxStrip >= nstrips ? nstrips - 1 : maxStrip;
332  edm::DetSet<SiStripDigi>::const_iterator rangeStart = DSViter->end();
333  edm::DetSet<SiStripDigi>::const_iterator rangeStop = DSViter->end();
334  for (edm::DetSet<SiStripDigi>::const_iterator digiIt = DSViter->begin(); digiIt != DSViter->end(); ++digiIt) {
335  if (digiIt->strip() >= minStrip && rangeStart == DSViter->end())
336  rangeStart = digiIt;
337  if (digiIt->strip() <= maxStrip)
338  rangeStop = digiIt;
339  }
340  if (rangeStart != DSViter->end()) {
341  if (rangeStop != DSViter->end())
342  ++rangeStop;
343  // build a fake cluster
344  LogDebug("closestCluster") << "build a fake cluster ";
345  SiStripCluster* newCluster =
346  new SiStripCluster(SiStripCluster::SiStripDigiRange(rangeStart, rangeStop)); // /!\ ownership transfered
347  result.first = newCluster;
348  result.second = fabs(newCluster->barycenter() - hitStrip);
349  }
350  break;
351  }
352  }
353  } else {
354  // loop on the detsetvector<cluster> to find the right one
355  for (edmNew::DetSetVector<SiStripCluster>::const_iterator DSViter = clusters.begin(); DSViter != clusters.end();
356  DSViter++)
357  if (DSViter->id() == det_id) {
358  LogDebug("closestCluster") << " detset with the right detid. ";
359  edmNew::DetSet<SiStripCluster>::const_iterator begin = DSViter->begin();
361  //find the cluster close to the hitStrip
362  result.second = 1000.;
363  for (edmNew::DetSet<SiStripCluster>::const_iterator iter = begin; iter != end; ++iter) {
364  double dist = fabs(iter->barycenter() - hitStrip);
365  if (dist < result.second) {
366  result.second = dist;
367  result.first = &(*iter);
368  }
369  }
370  break;
371  }
372  }
373  return result;
374 }

References SiStripCluster::barycenter(), bsc_activity_cfg::clusters, edm::DetSet< T >::end(), mps_fire::end, explorationWindow_, hfClusterShapes_cfi::hits, homeMadeClusters_, createfilelist::int, LogDebug, Topology::measurementPosition(), AlCaHLTBitMon_ParallelJobs::p, reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), mps_fire::result, GeomDet::topology(), and PbPb_ZMuSkimMuonDPG_cff::tracker.

Referenced by produce().

◆ detId() [1/2]

std::vector< std::pair< uint32_t, std::pair< double, double > > > SiStripFineDelayHit::detId ( const TrackerGeometry tracker,
const TrackerTopology tkrTopo,
const reco::Track tk,
const std::vector< Trajectory > &  trajVec,
const StripSubdetector::SubDetector  subdet = StripSubdetector::TIB,
const int  substructure = 0xff 
)
private

Definition at line 148 of file SiStripFineDelayHit.cc.

154  {
155  if (substructure == 0xff)
156  return detId(tracker, tkrTopo, tk, trajVec, 0, 0);
157  // first determine the root detId we are looking for
158  DeviceMask mask = deviceMask(subdet, substructure, tkrTopo);
159  // then call the method that loops on recHits
160  return detId(tracker, tkrTopo, tk, trajVec, mask.first, mask.second);
161 }

References deviceMask(), and PbPb_ZMuSkimMuonDPG_cff::tracker.

Referenced by produce().

◆ detId() [2/2]

std::vector< std::pair< uint32_t, std::pair< double, double > > > SiStripFineDelayHit::detId ( const TrackerGeometry tracker,
const TrackerTopology tkrTopo,
const reco::Track tk,
const std::vector< Trajectory > &  trajVec,
const uint32_t &  maskDetId,
const uint32_t &  rootDetId 
)
private

Definition at line 163 of file SiStripFineDelayHit.cc.

169  {
170  bool onDisk = ((maskDetId == tkrTopo->tidDetId(3, 15, 0, 0, 0, 0).rawId()) ||
171  (maskDetId == tkrTopo->tecDetId(3, 15, 0, 0, 0, 0, 0).rawId()));
172  std::vector<std::pair<uint32_t, std::pair<double, double> > > result;
173  std::vector<uint32_t> usedDetids;
174  // now loop on recHits to find the right detId plus the track local angle
175  std::vector<std::pair<std::pair<DetId, LocalPoint>, float> > hitangle;
176  if (!cosmic_) {
177  // use trajectories in event.
178  // we have first to find the right trajectory for the considered track.
179  for (std::vector<Trajectory>::const_iterator traj = trajVec.begin(); traj < trajVec.end(); ++traj) {
180  if (((traj->lastMeasurement().recHit()->geographicalId().rawId() ==
181  (*(tk->recHitsEnd() - 1))->geographicalId().rawId()) &&
182  (traj->lastMeasurement().recHit()->localPosition().x() == (*(tk->recHitsEnd() - 1))->localPosition().x())) ||
183  ((traj->firstMeasurement().recHit()->geographicalId().rawId() ==
184  (*(tk->recHitsEnd() - 1))->geographicalId().rawId()) &&
185  (traj->firstMeasurement().recHit()->localPosition().x() == (*(tk->recHitsEnd() - 1))->localPosition().x()))) {
186  hitangle = anglefinder_->findtrackangle(*traj);
187  break;
188  }
189  }
190  } else {
192  // event_->getByLabel(seedLabel_,seedcoll);
193  event_->getByToken(seedcollToken_, seedcoll);
194  // use trajectories in event.
195  hitangle = anglefinder_->findtrackangle(trajVec);
196  }
197  LogDebug("DetId") << "number of hits for the track: " << hitangle.size();
198  std::vector<std::pair<std::pair<DetId, LocalPoint>, float> >::iterator iter;
199  // select the interesting DetIds, based on the ID and TLA
200  for (iter = hitangle.begin(); iter != hitangle.end(); iter++) {
201  // check the detId.
202  // if substructure was 0xff, then maskDetId and rootDetId == 0
203  // this implies all detids are accepted. (also if maskDetId=rootDetId=0 explicitely).
204  // That "unusual" mode of operation allows to analyze also Latency scans
205  LogDebug("DetId") << "check the detid: " << std::hex << (iter->first.first.rawId()) << " vs " << rootDetId
206  << " with a mask of " << maskDetId << std::dec << std::endl;
207 
208  if (((iter->first.first.rawId() & maskDetId) != rootDetId))
209  continue;
210  if (std::find(usedDetids.begin(), usedDetids.end(), iter->first.first.rawId()) != usedDetids.end())
211  continue;
212  // check the local angle (extended to the equivalent angle correction)
213  LogDebug("DetId") << "check the angle: " << fabs((iter->second));
214  if (1 - fabs(fabs(iter->second) - 1) < cos(maxAngle_ / 180. * TMath::Pi()))
215  continue;
216  // returns the detid + the time of flight to there
217  std::pair<uint32_t, std::pair<double, double> > el;
218  std::pair<double, double> subel;
219  el.first = iter->first.first.rawId();
220  // here, we compute the TOF.
221  // For cosmics, some track parameters are missing. Parameters are recomputed.
222  // for our calculation, the track momemtum at any point is enough:
223  // only used without B field or for the sign of Pz.
224  double trackParameters[5];
225  for (int i = 0; i < 5; i++)
226  trackParameters[i] = tk->parameters()[i];
227  if (cosmic_)
228  SiStripFineDelayTOF::trackParameters(*tk, trackParameters);
229  double hit[3];
230  const GeomDetUnit* det(tracker.idToDetUnit(iter->first.first));
231  Surface::GlobalPoint gp = det->surface().toGlobal(iter->first.second);
232  hit[0] = gp.x();
233  hit[1] = gp.y();
234  hit[2] = gp.z();
235  double phit[3];
236  phit[0] = tk->momentum().x();
237  phit[1] = tk->momentum().y();
238  phit[2] = tk->momentum().z();
239  subel.first = SiStripFineDelayTOF::timeOfFlight(cosmic_, field_, trackParameters, hit, phit, onDisk);
240  subel.second = iter->second;
241  el.second = subel;
242  // returns the detid + TOF
243  result.push_back(el);
244  usedDetids.push_back(el.first);
245  }
246  return result;
247 }

References anglefinder_, funct::cos(), cosmic_, TauDecayModes::dec, event_, field_, spr::find(), SiStripFineDelayTLA::findtrackangle(), edm::Event::getByToken(), runTauDisplay::gp, mps_fire::i, LogDebug, maxAngle_, reco::TrackBase::momentum(), reco::TrackBase::parameters(), Pi, DetId::rawId(), reco::Track::recHitsEnd(), mps_fire::result, seedcollToken_, TrackerTopology::tecDetId(), TrackerTopology::tidDetId(), SiStripFineDelayTOF::timeOfFlight(), PbPb_ZMuSkimMuonDPG_cff::tracker, and SiStripFineDelayTOF::trackParameters().

◆ deviceMask()

SiStripFineDelayHit::DeviceMask SiStripFineDelayHit::deviceMask ( const StripSubdetector::SubDetector  subdet,
const int  substructure,
const TrackerTopology tkrTopo 
)
private

Definition at line 115 of file SiStripFineDelayHit.cc.

117  {
118  uint32_t rootDetId = 0;
119  uint32_t maskDetId = 0;
120 
121  switch (subdet) {
122  case StripSubdetector::TIB: {
123  rootDetId = tkrTopo->tibDetId(substructure, 0, 0, 0, 0, 0).rawId();
124  maskDetId = tkrTopo->tibDetId(15, 0, 0, 0, 0, 0).rawId();
125  break;
126  }
127  case StripSubdetector::TID: {
128  rootDetId = tkrTopo->tidDetId(substructure > 0 ? 2 : 1, abs(substructure), 0, 0, 0, 0).rawId();
129  maskDetId = tkrTopo->tidDetId(3, 15, 0, 0, 0, 0).rawId();
130  break;
131  }
132  case StripSubdetector::TOB: {
133  rootDetId = tkrTopo->tobDetId(substructure, 0, 0, 0, 0).rawId();
134  maskDetId = tkrTopo->tobDetId(15, 0, 0, 0, 0).rawId();
135  break;
136  }
137  case StripSubdetector::TEC: {
138  rootDetId = tkrTopo->tecDetId(substructure > 0 ? 2 : 1, abs(substructure), 0, 0, 0, 0, 0).rawId();
139  maskDetId = tkrTopo->tecDetId(3, 15, 0, 0, 0, 0, 0).rawId();
140  break;
141  }
142  default:
143  break;
144  }
145  return std::make_pair(maskDetId, rootDetId);
146 }

References funct::abs(), DetId::rawId(), StripSubdetector::TEC, TrackerTopology::tecDetId(), StripSubdetector::TIB, TrackerTopology::tibDetId(), StripSubdetector::TID, TrackerTopology::tidDetId(), StripSubdetector::TOB, and TrackerTopology::tobDetId().

Referenced by detId(), and produceNoTracking().

◆ produce()

void SiStripFineDelayHit::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::EDProducer.

Definition at line 377 of file SiStripFineDelayHit.cc.

377  {
378  using namespace edm;
379  // Retrieve commissioning information from "event summary"
381  // iEvent.getByLabel( inputModuleLabel_, runsummary );
382  iEvent.getByToken(inputModuleToken_, runsummary);
383  if (runsummary->runType() == sistrip::APV_LATENCY)
384  mode_ = 2; // LatencyScan
385  else if (runsummary->runType() == sistrip::FINE_DELAY)
386  mode_ = 1; // DelayScan
387  else {
388  mode_ = 0; //unknown
389  return;
390  }
391 
392  if (noTracking_) {
393  produceNoTracking(iEvent, iSetup);
394  return;
395  }
396  event_ = &iEvent;
397  // container for the selected hits
398  std::vector<edm::DetSet<SiStripRawDigi> > output;
399  output.reserve(100);
400  // access the tracks
402  // iEvent.getByLabel(trackLabel_,trackCollection);
404  const reco::TrackCollection* tracks = trackCollection.product();
405  const auto& tracker = iSetup.getData(tkGeomToken_);
406  if (!tracks->empty()) {
407  anglefinder_->init(iEvent, iSetup);
408  LogDebug("produce") << "Found " << tracks->size() << " tracks.";
409  // look at the hits if one needs them
411  const edm::DetSetVector<SiStripDigi>* hitSet = nullptr;
412  if (homeMadeClusters_) {
413  // iEvent.getByLabel(digiLabel_,hits);
414  iEvent.getByToken(digiToken_, hits);
415  hitSet = hits.product();
416  }
417  // look at the clusters
419  // iEvent.getByLabel(clusterLabel_, clusters);
420  iEvent.getByToken(clustersToken_, clusters);
421  const edmNew::DetSetVector<SiStripCluster>* clusterSet = clusters.product();
422  // look at the trajectories if they are in the event
423  std::vector<Trajectory> trajVec;
425  // iEvent.getByLabel(trackLabel_,TrajectoryCollection);
427  trajVec = *(TrajectoryCollection.product());
428  // Get TrackerTopology
429  const auto tTopo = &iSetup.getData(tTopoToken_);
430  // loop on tracks
431  for (reco::TrackCollection::const_iterator itrack = tracks->begin(); itrack < tracks->end(); itrack++) {
432  // first check the track Pt
433  if ((itrack->px() * itrack->px() + itrack->py() * itrack->py() + itrack->pz() * itrack->pz()) < minTrackP2_)
434  continue;
435  // check that we have something in the layer we are interested in
436  std::vector<std::pair<uint32_t, std::pair<double, double> > > intersections;
437  if (mode_ == 1) {
438  // Retrieve and decode commissioning information from "event summary"
440  // iEvent.getByLabel( inputModuleLabel_, summary );
441  iEvent.getByToken(inputModuleToken_, summary);
442  uint32_t layerCode = (const_cast<SiStripEventSummary*>(summary.product())->layerScanned()) >> 16;
444  if (((layerCode >> 6) & 0x3) == 0)
445  subdet = StripSubdetector::TIB;
446  else if (((layerCode >> 6) & 0x3) == 1)
447  subdet = StripSubdetector::TOB;
448  else if (((layerCode >> 6) & 0x3) == 2)
449  subdet = StripSubdetector::TID;
450  else if (((layerCode >> 6) & 0x3) == 3)
451  subdet = StripSubdetector::TEC;
452  int32_t layerIdx = (layerCode & 0xF) * (((layerCode >> 4) & 0x3) ? -1 : 1);
453  intersections = detId(tracker, tTopo, &(*itrack), trajVec, subdet, layerIdx);
454  } else {
455  // for latency scans, no layer is specified -> no cut on detid
456  intersections = detId(tracker, tTopo, &(*itrack), trajVec);
457  }
458  LogDebug("produce") << " Found " << intersections.size() << " interesting intersections." << std::endl;
459  for (std::vector<std::pair<uint32_t, std::pair<double, double> > >::iterator it = intersections.begin();
460  it < intersections.end();
461  it++) {
462  std::pair<const SiStripCluster*, double> candidateCluster =
463  closestCluster(tracker, &(*itrack), it->first, *clusterSet, *hitSet);
464  if (candidateCluster.first) {
465  LogDebug("produce") << " Found a cluster." << std::endl;
466  // cut on the distance
467  if (candidateCluster.second > maxClusterDistance_)
468  continue;
469  LogDebug("produce") << " The cluster is close enough." << std::endl;
470  // build the rawdigi corresponding to the leading strip and save it
471  // here, only the leading strip is retained. All other rawdigis in the module are set to 0.
472  const auto& amplitudes = candidateCluster.first->amplitudes();
473  uint8_t leadingCharge = 0;
474  uint8_t leadingStrip = candidateCluster.first->firstStrip();
475  uint8_t leadingPosition = 0;
476  for (auto amplit = amplitudes.begin(); amplit < amplitudes.end(); amplit++, leadingStrip++) {
477  if (leadingCharge < *amplit) {
478  leadingCharge = *amplit;
479  leadingPosition = leadingStrip;
480  }
481  }
482 
483  // look for an existing detset
484  std::vector<edm::DetSet<SiStripRawDigi> >::iterator newdsit = output.begin();
485  for (; newdsit != output.end() && newdsit->detId() != connectionMap_[it->first]; ++newdsit) {
486  }
487  // if there is no detset yet, create it.
488  if (newdsit == output.end()) {
490  output.push_back(newds);
491  newdsit = output.end() - 1;
492  }
493 
494  LogDebug("produce") << " New Hit... TOF:" << it->second.first << ", charge: " << int(leadingCharge)
495  << " at " << int(leadingPosition) << "." << std::endl
496  << "Angular correction: " << it->second.second << " giving a final value of "
497  << int(leadingCharge * fabs(it->second.second))
498  << " for fed key = " << connectionMap_[it->first] << " (detid=" << it->first << ")";
499  // apply corrections to the leading charge, but only if it has not saturated.
500  if (leadingCharge < 255) {
501  // correct the leading charge for the crossing angle
502  leadingCharge = uint8_t(leadingCharge * fabs(it->second.second));
503  // correct for module thickness for TEC and TOB
504  if ((((it->first >> 25) & 0x7f) == 0xd) ||
505  ((((it->first >> 25) & 0x7f) == 0xe) && (((it->first >> 5) & 0x7) > 4)))
506  leadingCharge = uint8_t((leadingCharge * 0.64));
507  }
508  //code the time of flight in the digi
509  unsigned int tof = abs(int(round(it->second.first * 10)));
510  tof = tof > 255 ? 255 : tof;
511  SiStripRawDigi newSiStrip(leadingCharge + (tof << 8));
512  newdsit->push_back(newSiStrip);
513  LogDebug("produce") << "New edm::DetSet<SiStripRawDigi> added.";
514  }
515  if (homeMadeClusters_)
516  delete candidateCluster.first; // we are owner of home-made clusters
517  }
518  }
519  }
520  // add the selected hits to the event.
521  LogDebug("produce") << "Putting " << output.size() << " new hits in the event.";
522  std::unique_ptr<edm::DetSetVector<SiStripRawDigi> > formatedOutput(new edm::DetSetVector<SiStripRawDigi>(output));
523  iEvent.put(std::move(formatedOutput), "FineDelaySelection");
524 }

References funct::abs(), anglefinder_, sistrip::APV_LATENCY, closestCluster(), bsc_activity_cfg::clusters, clustersToken_, connectionMap_, detId(), digiToken_, event_, sistrip::FINE_DELAY, edm::EventSetup::getData(), hfClusterShapes_cfi::hits, homeMadeClusters_, iEvent, SiStripFineDelayTLA::init(), inputModuleToken_, createfilelist::int, LogDebug, maxClusterDistance_, minTrackP2_, mode_, eostools::move(), noTracking_, convertSQLitetoXML_cfg::output, produceNoTracking(), SiStripEventSummary::runType(), edmLumisInFiles::summary, StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, tkGeomToken_, StripSubdetector::TOB, duplicaterechits_cfi::trackCollection, trackCollectionToken_, PbPb_ZMuSkimMuonDPG_cff::tracker, tracks, trackToken_, tTopoToken_, and trackerHitRTTI::vector.

◆ produceNoTracking()

void SiStripFineDelayHit::produceNoTracking ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Definition at line 527 of file SiStripFineDelayHit.cc.

527  {
528  event_ = &iEvent;
529  // Get TrackerTopology
530  const auto tTopo = &iSetup.getData(tTopoToken_);
531  // container for the selected hits
532  std::vector<edm::DetSet<SiStripRawDigi> > output;
533  output.reserve(100);
534  // Retrieve and decode commissioning information from "event summary"
536  // iEvent.getByLabel( inputModuleLabel_, summary );
537  iEvent.getByToken(inputModuleToken_, summary);
538  uint32_t layerCode = (const_cast<SiStripEventSummary*>(summary.product())->layerScanned()) >> 16;
540  if (((layerCode >> 6) & 0x3) == 0)
541  subdet = StripSubdetector::TIB;
542  else if (((layerCode >> 6) & 0x3) == 1)
543  subdet = StripSubdetector::TOB;
544  else if (((layerCode >> 6) & 0x3) == 2)
545  subdet = StripSubdetector::TID;
546  else if (((layerCode >> 6) & 0x3) == 3)
547  subdet = StripSubdetector::TEC;
548  int32_t layerIdx = (layerCode & 0xF) * (((layerCode >> 4) & 0x3) ? -1 : 1);
549  DeviceMask mask = deviceMask(subdet, layerIdx, tTopo);
550  // look at the clusters
552  // iEvent.getByLabel(clusterLabel_,clusters);
553  iEvent.getByToken(clustersToken_, clusters);
554  for (edmNew::DetSetVector<SiStripCluster>::const_iterator DSViter = clusters->begin(); DSViter != clusters->end();
555  DSViter++) {
556  // check that we are in the layer of interest
557  if (mode_ == 1 && ((DSViter->id() & mask.first) != mask.second))
558  continue;
559  // iterate over clusters
560  edmNew::DetSet<SiStripCluster>::const_iterator begin = DSViter->begin();
562  edm::DetSet<SiStripRawDigi> newds(connectionMap_[DSViter->id()]);
563  for (edmNew::DetSet<SiStripCluster>::const_iterator iter = begin; iter != end; ++iter) {
564  // build the rawdigi corresponding to the leading strip and save it
565  // here, only the leading strip is retained. All other rawdigis in the module are set to 0.
566  auto const& amplitudes = iter->amplitudes();
567  uint8_t leadingCharge = 0;
568  uint8_t leadingStrip = iter->firstStrip();
569  uint8_t leadingPosition = 0;
570  for (auto amplit = amplitudes.begin(); amplit < amplitudes.end(); amplit++, leadingStrip++) {
571  if (leadingCharge < *amplit) {
572  leadingCharge = *amplit;
573  leadingPosition = leadingStrip;
574  }
575  }
576  // apply some sanity cuts. This is needed since we don't use tracking to clean clusters
577  // 1.5< noise <8
578  // charge<250
579  // 50 > s/n > 10
580  const auto& noises = iSetup.getData(noiseToken_);
581  SiStripNoises::Range detNoiseRange = noises.getRange(DSViter->id());
582  float noise = noises.getNoise(leadingPosition, detNoiseRange);
583  if (noise < 1.5)
584  continue;
585  if (leadingCharge >= 250 || noise >= 8 || leadingCharge / noise > 50 || leadingCharge / noise < 10)
586  continue;
587  // apply some correction to the leading charge, but only if it has not saturated.
588  if (leadingCharge < 255) {
589  // correct for modulethickness for TEC and TOB
590  if ((((((DSViter->id()) >> 25) & 0x7f) == 0xd) || ((((DSViter->id()) >> 25) & 0x7f) == 0xe)) &&
591  ((((DSViter->id()) >> 5) & 0x7) > 4))
592  leadingCharge = uint8_t((leadingCharge * 0.64));
593  }
594  //code the time of flight == 0 in the digi
595  SiStripRawDigi newSiStrip(leadingCharge);
596  newds.push_back(newSiStrip);
597  }
598  //store into the detsetvector
599  output.push_back(newds);
600  LogDebug("produce") << "New edm::DetSet<SiStripRawDigi> added with fedkey = " << std::hex << std::setfill('0')
601  << std::setw(8) << connectionMap_[DSViter->id()] << std::dec;
602  }
603  // add the selected hits to the event.
604  LogDebug("produce") << "Putting " << output.size() << " new hits in the event.";
605  std::unique_ptr<edm::DetSetVector<SiStripRawDigi> > formatedOutput(new edm::DetSetVector<SiStripRawDigi>(output));
606  iEvent.put(std::move(formatedOutput), "FineDelaySelection");
607 }

References bsc_activity_cfg::clusters, clustersToken_, connectionMap_, TauDecayModes::dec, deviceMask(), mps_fire::end, event_, edm::EventSetup::getData(), iEvent, inputModuleToken_, LogDebug, mode_, eostools::move(), gpuVertexFinder::noise, HLTEgPhaseIITestSequence_cff::noises, noiseToken_, convertSQLitetoXML_cfg::output, edmLumisInFiles::summary, StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, and tTopoToken_.

Referenced by produce().

◆ rechit()

bool SiStripFineDelayHit::rechit ( reco::Track tk,
uint32_t  detId 
)
private

Definition at line 249 of file SiStripFineDelayHit.cc.

249  {
250  for (trackingRecHit_iterator it = tk->recHitsBegin(); it != tk->recHitsEnd(); it++)
251  if ((*it)->geographicalId().rawId() == det_id) {
252  return (*it)->isValid();
253  break;
254  }
255  return false;
256 }

References reco::Track::recHitsBegin(), and reco::Track::recHitsEnd().

Member Data Documentation

◆ anglefinder_

SiStripFineDelayTLA* SiStripFineDelayHit::anglefinder_
private

Definition at line 77 of file SiStripFineDelayHit.h.

Referenced by detId(), produce(), SiStripFineDelayHit(), and ~SiStripFineDelayHit().

◆ clustersToken_

edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > SiStripFineDelayHit::clustersToken_
private

Definition at line 88 of file SiStripFineDelayHit.h.

Referenced by produce(), produceNoTracking(), and SiStripFineDelayHit().

◆ connectionMap_

std::map<uint32_t, uint32_t> SiStripFineDelayHit::connectionMap_
private

Definition at line 90 of file SiStripFineDelayHit.h.

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

◆ cosmic_

bool SiStripFineDelayHit::cosmic_
private

Definition at line 79 of file SiStripFineDelayHit.h.

Referenced by detId(), and SiStripFineDelayHit().

◆ digiToken_

edm::EDGetTokenT<edm::DetSetVector<SiStripDigi> > SiStripFineDelayHit::digiToken_
private

Definition at line 87 of file SiStripFineDelayHit.h.

Referenced by produce(), and SiStripFineDelayHit().

◆ event_

const edm::Event* SiStripFineDelayHit::event_
private

Definition at line 78 of file SiStripFineDelayHit.h.

Referenced by detId(), produce(), and produceNoTracking().

◆ explorationWindow_

int SiStripFineDelayHit::explorationWindow_
private

Definition at line 82 of file SiStripFineDelayHit.h.

Referenced by closestCluster(), and SiStripFineDelayHit().

◆ fedCablingToken_

edm::ESGetToken<SiStripFedCabling, SiStripFedCablingRcd> SiStripFineDelayHit::fedCablingToken_
private

Definition at line 94 of file SiStripFineDelayHit.h.

Referenced by beginRun(), and SiStripFineDelayHit().

◆ field_

bool SiStripFineDelayHit::field_
private

Definition at line 79 of file SiStripFineDelayHit.h.

Referenced by detId(), and SiStripFineDelayHit().

◆ homeMadeClusters_

bool SiStripFineDelayHit::homeMadeClusters_
private

Definition at line 79 of file SiStripFineDelayHit.h.

Referenced by closestCluster(), produce(), and SiStripFineDelayHit().

◆ inputModuleToken_

edm::EDGetTokenT<SiStripEventSummary> SiStripFineDelayHit::inputModuleToken_
private

Definition at line 85 of file SiStripFineDelayHit.h.

Referenced by produce(), produceNoTracking(), and SiStripFineDelayHit().

◆ maxAngle_

double SiStripFineDelayHit::maxAngle_
private

Definition at line 80 of file SiStripFineDelayHit.h.

Referenced by detId(), and SiStripFineDelayHit().

◆ maxClusterDistance_

double SiStripFineDelayHit::maxClusterDistance_
private

Definition at line 80 of file SiStripFineDelayHit.h.

Referenced by produce(), and SiStripFineDelayHit().

◆ minTrackP2_

double SiStripFineDelayHit::minTrackP2_
private

Definition at line 80 of file SiStripFineDelayHit.h.

Referenced by produce(), and SiStripFineDelayHit().

◆ mode_

int SiStripFineDelayHit::mode_
private

Definition at line 81 of file SiStripFineDelayHit.h.

Referenced by produce(), produceNoTracking(), and SiStripFineDelayHit().

◆ noiseToken_

edm::ESGetToken<SiStripNoises, SiStripNoisesRcd> SiStripFineDelayHit::noiseToken_
private

Definition at line 95 of file SiStripFineDelayHit.h.

Referenced by produceNoTracking(), and SiStripFineDelayHit().

◆ noTracking_

bool SiStripFineDelayHit::noTracking_
private

Definition at line 79 of file SiStripFineDelayHit.h.

Referenced by produce(), and SiStripFineDelayHit().

◆ seedcollToken_

edm::EDGetTokenT<TrajectorySeedCollection> SiStripFineDelayHit::seedcollToken_
private

Definition at line 84 of file SiStripFineDelayHit.h.

Referenced by detId(), and SiStripFineDelayHit().

◆ tkGeomToken_

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> SiStripFineDelayHit::tkGeomToken_
private

Definition at line 92 of file SiStripFineDelayHit.h.

Referenced by produce(), and SiStripFineDelayHit().

◆ trackCollectionToken_

edm::EDGetTokenT<reco::TrackCollection> SiStripFineDelayHit::trackCollectionToken_
private

Definition at line 86 of file SiStripFineDelayHit.h.

Referenced by produce(), and SiStripFineDelayHit().

◆ trackToken_

edm::EDGetTokenT<std::vector<Trajectory> > SiStripFineDelayHit::trackToken_
private

Definition at line 89 of file SiStripFineDelayHit.h.

Referenced by produce(), and SiStripFineDelayHit().

◆ tTopoToken_

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> SiStripFineDelayHit::tTopoToken_
private

Definition at line 93 of file SiStripFineDelayHit.h.

Referenced by produce(), produceNoTracking(), and SiStripFineDelayHit().

edm::DetSetVector< SiStripDigi >
Point2DBase
Definition: Point2DBase.h:9
l1tstage2emulator_dqm_sourceclient-live_cfg.feds
feds
Definition: l1tstage2emulator_dqm_sourceclient-live_cfg.py:153
SiStripFineDelayTOF::trackParameters
static void trackParameters(const reco::Track &tk, double *trackParameters)
Definition: SiStripFineDelayTOF.cc:140
mps_fire.i
i
Definition: mps_fire.py:428
SiStripCluster::barycenter
float barycenter() const
Definition: SiStripCluster.cc:25
SiStripFineDelayTLA::init
void init(const edm::Event &e, const edm::EventSetup &c)
Definition: SiStripFineDelayTLA.cc:27
GeomDet
Definition: GeomDet.h:27
SiStripFineDelayHit::minTrackP2_
double minTrackP2_
Definition: SiStripFineDelayHit.h:80
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
reco::Track::recHitsBegin
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:88
SiStripFineDelayHit::noiseToken_
edm::ESGetToken< SiStripNoises, SiStripNoisesRcd > noiseToken_
Definition: SiStripFineDelayHit.h:95
edm::DetSet
Definition: DetSet.h:23
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
edm
HLT enums.
Definition: AlignableModifier.h:19
SiStripFineDelayHit::noTracking_
bool noTracking_
Definition: SiStripFineDelayHit.h:79
SiStripEventSummary::runType
const sistrip::RunType & runType() const
Definition: SiStripEventSummary.h:218
SiStripFineDelayTLA::findtrackangle
std::vector< std::pair< std::pair< DetId, LocalPoint >, float > > findtrackangle(const std::vector< Trajectory > &traj)
Definition: SiStripFineDelayTLA.cc:32
SiStripFineDelayTOF::timeOfFlight
static double timeOfFlight(bool cosmics, bool field, double *trackParameters, double *hit, double *phit, bool onDisk)
Definition: SiStripFineDelayTOF.cc:10
SiStripFineDelayHit::cosmic_
bool cosmic_
Definition: SiStripFineDelayHit.h:79
edmNew::DetSetVector::const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetSetVectorNew.h:197
SiStripCommissioningClient_cfg.conn
conn
Definition: SiStripCommissioningClient_cfg.py:5
edm::EDConsumerBase::consumesCollector
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
Definition: EDConsumerBase.cc:47
GeomDet::topology
virtual const Topology & topology() const
Definition: GeomDet.cc:67
SiStripFineDelayHit::field_
bool field_
Definition: SiStripFineDelayHit.h:79
SiStripFineDelayHit::fedCablingToken_
edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcd > fedCablingToken_
Definition: SiStripFineDelayHit.h:94
TrackerTopology::tecDetId
DetId tecDetId(uint32_t side, uint32_t wheel, uint32_t petal_fw_bw, uint32_t petal, uint32_t ring, uint32_t module, uint32_t ster) const
Definition: TrackerTopology.h:475
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
edm::Handle
Definition: AssociativeIterator.h:50
SiStripFineDelayHit::maxClusterDistance_
double maxClusterDistance_
Definition: SiStripFineDelayHit.h:80
sistrip::FINE_DELAY
Definition: ConstantsForRunType.h:85
SiStripRawDigi
A Digi for the silicon strip detector, containing only adc information, and suitable for storing raw ...
Definition: SiStripRawDigi.h:15
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
TrackerTopology::tibDetId
DetId tibDetId(uint32_t layer, uint32_t str_fw_bw, uint32_t str_int_ext, uint32_t str, uint32_t module, uint32_t ster) const
Definition: TrackerTopology.h:495
SiStripNoises::Range
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripNoises.h:47
SiStripFineDelayHit::explorationWindow_
int explorationWindow_
Definition: SiStripFineDelayHit.h:82
reco::Track::recHitsEnd
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:91
mps_fire.end
end
Definition: mps_fire.py:242
SiStripFineDelayHit::deviceMask
DeviceMask deviceMask(const StripSubdetector::SubDetector subdet, const int substructure, const TrackerTopology *tkrTopo)
Definition: SiStripFineDelayHit.cc:115
SiStripFineDelayHit::closestCluster
std::pair< const SiStripCluster *, double > closestCluster(const TrackerGeometry &tracker, const reco::Track *tk, const uint32_t &detId, const edmNew::DetSetVector< SiStripCluster > &clusters, const edm::DetSetVector< SiStripDigi > &hits)
Definition: SiStripFineDelayHit.cc:260
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
SiStripFineDelayHit::clustersToken_
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clustersToken_
Definition: SiStripFineDelayHit.h:88
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
Point3DBase< float, LocalTag >
SiStripFineDelayHit::detId
std::vector< std::pair< uint32_t, std::pair< double, double > > > detId(const TrackerGeometry &tracker, const TrackerTopology *tkrTopo, const reco::Track *tk, const std::vector< Trajectory > &trajVec, const StripSubdetector::SubDetector subdet=StripSubdetector::TIB, const int substructure=0xff)
Definition: SiStripFineDelayHit.cc:148
SiStripFineDelayHit::homeMadeClusters_
bool homeMadeClusters_
Definition: SiStripFineDelayHit.h:79
edm::OwnVector::const_iterator
Definition: OwnVector.h:41
SiStripFineDelayHit::inputModuleToken_
edm::EDGetTokenT< SiStripEventSummary > inputModuleToken_
Definition: SiStripFineDelayHit.h:85
TrackerTopology::tobDetId
DetId tobDetId(uint32_t layer, uint32_t rod_fw_bw, uint32_t rod, uint32_t module, uint32_t ster) const
Definition: TrackerTopology.h:521
bsc_activity_cfg.clusters
clusters
Definition: bsc_activity_cfg.py:36
PbPb_ZMuSkimMuonDPG_cff.tracker
tracker
Definition: PbPb_ZMuSkimMuonDPG_cff.py:60
runTauDisplay.gp
gp
Definition: runTauDisplay.py:431
SiStripFineDelayHit::seedcollToken_
edm::EDGetTokenT< TrajectorySeedCollection > seedcollToken_
Definition: SiStripFineDelayHit.h:84
SiStripFineDelayHit::digiToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > digiToken_
Definition: SiStripFineDelayHit.h:87
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:176
SiStripFineDelayHit::tTopoToken_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
Definition: SiStripFineDelayHit.h:93
edm::DetSetVector::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
SiStripFineDelayHit::DeviceMask
std::pair< uint32_t, uint32_t > DeviceMask
Definition: SiStripFineDelayHit.h:52
SiStripFineDelayHit::mode_
int mode_
Definition: SiStripFineDelayHit.h:81
SiStripFineDelayTLA
Definition: SiStripFineDelayTLA.h:22
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
edmLumisInFiles.summary
summary
Definition: edmLumisInFiles.py:39
SiStripFineDelayHit::anglefinder_
SiStripFineDelayTLA * anglefinder_
Definition: SiStripFineDelayHit.h:77
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
Topology::measurementPosition
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
sistrip::invalid_
static const uint16_t invalid_
Definition: Constants.h:16
TrackerTopology::tidDetId
DetId tidDetId(uint32_t side, uint32_t wheel, uint32_t ring, uint32_t module_fw_bw, uint32_t module, uint32_t ster) const
Definition: TrackerTopology.h:508
gpuVertexFinder::noise
__shared__ int noise
Definition: gpuFitVertices.h:50
PixelSLinkDataInputSource_cfi.fedid
fedid
Definition: PixelSLinkDataInputSource_cfi.py:6
reco::TrackBase::parameters
ParameterVector parameters() const
Track parameters with one-to-one correspondence to the covariance matrix.
Definition: TrackBase.h:711
SiStripFineDelayHit::trackToken_
edm::EDGetTokenT< std::vector< Trajectory > > trackToken_
Definition: SiStripFineDelayHit.h:89
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
SiStripFineDelayHit::produceNoTracking
virtual void produceNoTracking(edm::Event &, const edm::EventSetup &)
Definition: SiStripFineDelayHit.cc:527
edmNew::DetSetVector
Definition: DetSetNew.h:13
SiStripCluster::SiStripDigiRange
std::pair< SiStripDigiIter, SiStripDigiIter > SiStripDigiRange
Definition: SiStripCluster.h:11
eostools.move
def move(src, dest)
Definition: eostools.py:511
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
SiStripFineDelayHit::event_
const edm::Event * event_
Definition: SiStripFineDelayHit.h:78
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
SiStripFineDelayHit::trackCollectionToken_
edm::EDGetTokenT< reco::TrackCollection > trackCollectionToken_
Definition: SiStripFineDelayHit.h:86
sistrip::APV_LATENCY
Definition: ConstantsForRunType.h:76
SiStripFineDelayHit::maxAngle_
double maxAngle_
Definition: SiStripFineDelayHit.h:80
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
Pi
const double Pi
Definition: CosmicMuonParameters.h:18
edm::EDConsumerBase::esConsumes
auto esConsumes()
Definition: EDConsumerBase.h:206
mps_fire.result
result
Definition: mps_fire.py:311
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::DetSet::end
iterator end()
Definition: DetSet.h:58
SiStripFineDelayHit::connectionMap_
std::map< uint32_t, uint32_t > connectionMap_
Definition: SiStripFineDelayHit.h:90
reco::TrackBase::momentum
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:664
SiStripSubdetector::Subdetector
Subdetector
Definition: SiStripEnums.h:5
TrajectoryCollection
std::vector< Trajectory > TrajectoryCollection
Definition: TrajectoryToSeedMap.h:17
SiStripCluster
Definition: SiStripCluster.h:8
TauDecayModes.dec
dec
Definition: TauDecayModes.py:142
edm::InputTag
Definition: InputTag.h:15
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
HLTEgPhaseIITestSequence_cff.noises
noises
Definition: HLTEgPhaseIITestSequence_cff.py:1348
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
hit
Definition: SiStripHitEffFromCalibTree.cc:88
SiStripFineDelayHit::tkGeomToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tkGeomToken_
Definition: SiStripFineDelayHit.h:92
edmNew::DetSet::const_iterator
const data_type * const_iterator
Definition: DetSetNew.h:31
edm::DetSet::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSet.h:31