CMS 3D CMS Logo

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

#include <HitPairGeneratorFromLayerPair.h>

Public Types

typedef SeedingLayerSetsHits::SeedingLayer Layer
 
typedef LayerHitMapCache LayerCacheType
 
typedef SeedingLayerSetsHits::SeedingLayerSet Layers
 

Public Member Functions

HitDoublets doublets (const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
 
HitDoublets doublets (const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, const Layer &innerLayer, const Layer &outerLayer)
 
HitDoublets doublets (const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers, LayerCacheType &layerCache)
 
HitDoublets doublets (const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, const Layer &innerLayer, const Layer &outerLayer, LayerCacheType &layerCache)
 
 HitPairGeneratorFromLayerPair (unsigned int inner, unsigned int outer, LayerCacheType *layerCache, unsigned int max=0)
 
void hitPairs (const TrackingRegion &reg, OrderedHitPairs &prs, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
 
Layer innerLayer (const Layers &layers) const
 
Layer outerLayer (const Layers &layers) const
 
 ~HitPairGeneratorFromLayerPair ()
 

Static Public Member Functions

static void doublets (const TrackingRegion &region, const DetLayer &innerHitDetLayer, const DetLayer &outerHitDetLayer, const RecHitsSortedInPhi &innerHitsMap, const RecHitsSortedInPhi &outerHitsMap, const edm::EventSetup &iSetup, const unsigned int theMaxElement, HitDoublets &result)
 

Private Attributes

const unsigned int theInnerLayer
 
LayerCacheTypetheLayerCache
 
const unsigned int theMaxElement
 
const unsigned int theOuterLayer
 

Detailed Description

Definition at line 11 of file HitPairGeneratorFromLayerPair.h.

Member Typedef Documentation

Definition at line 15 of file HitPairGeneratorFromLayerPair.h.

Definition at line 13 of file HitPairGeneratorFromLayerPair.h.

Definition at line 14 of file HitPairGeneratorFromLayerPair.h.

Constructor & Destructor Documentation

HitPairGeneratorFromLayerPair::HitPairGeneratorFromLayerPair ( unsigned int  inner,
unsigned int  outer,
LayerCacheType layerCache,
unsigned int  max = 0 
)
HitPairGeneratorFromLayerPair::~HitPairGeneratorFromLayerPair ( )

Member Function Documentation

HitDoublets HitPairGeneratorFromLayerPair::doublets ( const TrackingRegion reg,
const edm::Event ev,
const edm::EventSetup es,
Layers  layers 
)
inline

Definition at line 24 of file HitPairGeneratorFromLayerPair.h.

References theLayerCache.

Referenced by doublets(), hitPairs(), and SeedFinderSelector::pass().

24  {
25  assert(theLayerCache);
26  return doublets(reg, ev, es, layers, *theLayerCache);
27  }
HitDoublets doublets(const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
HitDoublets HitPairGeneratorFromLayerPair::doublets ( const TrackingRegion reg,
const edm::Event ev,
const edm::EventSetup es,
const Layer innerLayer,
const Layer outerLayer 
)
inline

Definition at line 28 of file HitPairGeneratorFromLayerPair.h.

References doublets(), and theLayerCache.

32  {
33  assert(theLayerCache);
34  return doublets(reg, ev, es, innerLayer, outerLayer, *theLayerCache);
35  }
Layer innerLayer(const Layers &layers) const
HitDoublets doublets(const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
Layer outerLayer(const Layers &layers) const
HitDoublets HitPairGeneratorFromLayerPair::doublets ( const TrackingRegion reg,
const edm::Event ev,
const edm::EventSetup es,
Layers  layers,
LayerCacheType layerCache 
)
inline

Definition at line 36 of file HitPairGeneratorFromLayerPair.h.

References doublets(), ev, hitPairs(), innerLayer(), hgcalTopologyTester_cfi::layers, outerLayer(), HLT_2018_cff::region, mps_fire::result, and theMaxElement.

40  {
41  Layer innerLayerObj = innerLayer(layers);
42  Layer outerLayerObj = outerLayer(layers);
43  return doublets(reg, ev, es, innerLayerObj, outerLayerObj, layerCache);
44  }
Layer innerLayer(const Layers &layers) const
HitDoublets doublets(const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
SeedingLayerSetsHits::SeedingLayer Layer
Layer outerLayer(const Layers &layers) const
HitDoublets HitPairGeneratorFromLayerPair::doublets ( const TrackingRegion reg,
const edm::Event ev,
const edm::EventSetup es,
const Layer innerLayer,
const Layer outerLayer,
LayerCacheType layerCache 
)

Definition at line 87 of file HitPairGeneratorFromLayerPair.cc.

References SeedingLayerSetsHits::SeedingLayer::detLayer(), doublets(), RecHitsSortedInPhi::empty(), SiStripPI::max, HitDoublets::reserve(), mps_fire::result, RecHitsSortedInPhi::size(), and theMaxElement.

92  {
93  const RecHitsSortedInPhi& innerHitsMap = layerCache(innerLayer, region, iSetup);
94  if (innerHitsMap.empty())
95  return HitDoublets(innerHitsMap, innerHitsMap);
96 
97  const RecHitsSortedInPhi& outerHitsMap = layerCache(outerLayer, region, iSetup);
98  if (outerHitsMap.empty())
99  return HitDoublets(innerHitsMap, outerHitsMap);
100  HitDoublets result(innerHitsMap, outerHitsMap);
101  result.reserve(std::max(innerHitsMap.size(), outerHitsMap.size()));
102  doublets(
103  region, *innerLayer.detLayer(), *outerLayer.detLayer(), innerHitsMap, outerHitsMap, iSetup, theMaxElement, result);
104 
105  return result;
106 }
Layer innerLayer(const Layers &layers) const
HitDoublets doublets(const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
std::size_t size() const
Layer outerLayer(const Layers &layers) const
const DetLayer * detLayer() const
void HitPairGeneratorFromLayerPair::doublets ( const TrackingRegion region,
const DetLayer innerHitDetLayer,
const DetLayer outerHitDetLayer,
const RecHitsSortedInPhi innerHitsMap,
const RecHitsSortedInPhi outerHitsMap,
const edm::EventSetup iSetup,
const unsigned int  theMaxElement,
HitDoublets result 
)
static

Definition at line 108 of file HitPairGeneratorFromLayerPair.cc.

References HitDoublets::add(), HitRZCompatibility::algo(), b, TrackingRegion::checkRZ(), HitDoublets::clear(), constexpr, SiPixelRawToDigiRegional_cfi::deltaPhi, RecHitsSortedInPhi::doubleRange(), RecHitsSortedInPhi::drphi, RecHitsSortedInPhi::du, RecHitsSortedInPhi::dv, MillePedeFileConverter_cfg::e, PixelRecoRange< T >::empty(), HitRZCompatibility::etaAlgo, mps_fire::i, createfilelist::int, RecHitsSortedInPhi::isBarrel, dqmiolumiharvest::j, LogDebug, PixelRecoRange< T >::max(), PixelRecoRange< T >::min(), nSigmaPhi, convertSQLiteXML::ok, InnerDeltaPhi::prefilter(), HitRZCompatibility::rAlgo, RecHitsSortedInPhi::rv(), HitDoublets::shrink_to_fit(), HitDoublets::size(), RecHitsSortedInPhi::theHits, theMaxElement, RecHitsSortedInPhi::x, RecHitsSortedInPhi::y, RecHitsSortedInPhi::z, and HitRZCompatibility::zAlgo.

115  {
116  // HitDoublets result(innerHitsMap,outerHitsMap); result.reserve(std::max(innerHitsMap.size(),outerHitsMap.size()));
118  InnerDeltaPhi deltaPhi(outerHitDetLayer, innerHitDetLayer, region, iSetup);
119 
120  // std::cout << "layers " << theInnerLayer.detLayer()->seqNum() << " " << outerLayer.detLayer()->seqNum() << std::endl;
121 
122  // constexpr float nSigmaRZ = std::sqrt(12.f);
123  constexpr float nSigmaPhi = 3.f;
124  for (int io = 0; io != int(outerHitsMap.theHits.size()); ++io) {
125  if (!deltaPhi.prefilter(outerHitsMap.x[io], outerHitsMap.y[io]))
126  continue;
127  Hit const& ohit = outerHitsMap.theHits[io].hit();
128  PixelRecoRange<float> phiRange =
129  deltaPhi(outerHitsMap.x[io], outerHitsMap.y[io], outerHitsMap.z[io], nSigmaPhi * outerHitsMap.drphi[io]);
130 
131  if (phiRange.empty())
132  continue;
133 
134  const HitRZCompatibility* checkRZ =
135  region.checkRZ(&innerHitDetLayer,
136  ohit,
137  iSetup,
138  &outerHitDetLayer,
139  outerHitsMap.rv(io),
140  outerHitsMap.z[io],
141  outerHitsMap.isBarrel ? outerHitsMap.du[io] : outerHitsMap.dv[io],
142  outerHitsMap.isBarrel ? outerHitsMap.dv[io] : outerHitsMap.du[io]);
143  if (!checkRZ)
144  continue;
145 
146  Kernels<HitZCheck, HitRCheck, HitEtaCheck> kernels;
147 
148  auto innerRange = innerHitsMap.doubleRange(phiRange.min(), phiRange.max());
149  LogDebug("HitPairGeneratorFromLayerPair")
150  << "preparing for combination of: " << innerRange[1] - innerRange[0] + innerRange[3] - innerRange[2]
151  << " inner and: " << outerHitsMap.theHits.size() << " outter";
152  for (int j = 0; j < 3; j += 2) {
153  auto b = innerRange[j];
154  auto e = innerRange[j + 1];
155  if (e == b)
156  continue;
157  bool ok[e - b];
158  switch (checkRZ->algo()) {
160  std::get<0>(kernels).set(checkRZ);
161  std::get<0>(kernels)(b, e, innerHitsMap, ok);
162  break;
164  std::get<1>(kernels).set(checkRZ);
165  std::get<1>(kernels)(b, e, innerHitsMap, ok);
166  break;
168  std::get<2>(kernels).set(checkRZ);
169  std::get<2>(kernels)(b, e, innerHitsMap, ok);
170  break;
171  }
172  for (int i = 0; i != e - b; ++i) {
173  if (!ok[i])
174  continue;
175  if (theMaxElement != 0 && result.size() >= theMaxElement) {
176  result.clear();
177  edm::LogError("TooManyPairs") << "number of pairs exceed maximum, no pairs produced";
178  delete checkRZ;
179  return;
180  }
181  result.add(b + i, io);
182  }
183  }
184  delete checkRZ;
185  }
186  LogDebug("HitPairGeneratorFromLayerPair") << " total number of pairs provided back: " << result.size();
187  result.shrink_to_fit();
188 }
#define LogDebug(id)
std::vector< HitWithPhi > theHits
std::size_t size() const
std::vector< float > drphi
T max() const
std::vector< float > z
bool empty() const
T min() const
std::vector< float > x
DoubleRange doubleRange(float phiMin, float phiMax) const
virtual HitRZCompatibility * checkRZ(const DetLayer *layer, const Hit &outerHit, const edm::EventSetup &iSetup, const DetLayer *outerlayer=0, float lr=0, float gz=0, float dr=0, float dz=0) const =0
std::vector< float > y
SeedingHitSet::ConstRecHitPointer Hit
BaseTrackerRecHit const * Hit
double b
Definition: hdecay.h:118
std::vector< float > dv
float rv(int i) const
std::vector< float > du
void add(int il, int ol)
#define constexpr
void HitPairGeneratorFromLayerPair::hitPairs ( const TrackingRegion reg,
OrderedHitPairs prs,
const edm::Event ev,
const edm::EventSetup es,
Layers  layers 
)

Definition at line 72 of file HitPairGeneratorFromLayerPair.cc.

References doublets(), mps_fire::i, HitDoublets::inner, HitDoublets::outer, OrderedHitPairs::size(), and theMaxElement.

Referenced by doublets().

76  {
77  auto const& ds = doublets(region, iEvent, iSetup, layers);
78  for (std::size_t i = 0; i != ds.size(); ++i) {
79  result.push_back(OrderedHitPair(ds.hit(i, HitDoublets::inner), ds.hit(i, HitDoublets::outer)));
80  }
81  if (theMaxElement != 0 && result.size() >= theMaxElement) {
82  result.clear();
83  edm::LogError("TooManyPairs") << "number of pairs exceed maximum, no pairs produced";
84  }
85 }
int iEvent
Definition: GenABIO.cc:224
HitDoublets doublets(const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
Layer HitPairGeneratorFromLayerPair::innerLayer ( const Layers layers) const
inline

Definition at line 63 of file HitPairGeneratorFromLayerPair.h.

References theInnerLayer.

Referenced by doublets().

Layer HitPairGeneratorFromLayerPair::outerLayer ( const Layers layers) const
inline

Definition at line 64 of file HitPairGeneratorFromLayerPair.h.

References theOuterLayer.

Referenced by doublets().

Member Data Documentation

const unsigned int HitPairGeneratorFromLayerPair::theInnerLayer
private

Definition at line 69 of file HitPairGeneratorFromLayerPair.h.

Referenced by innerLayer().

LayerCacheType* HitPairGeneratorFromLayerPair::theLayerCache
private

Definition at line 67 of file HitPairGeneratorFromLayerPair.h.

Referenced by doublets().

const unsigned int HitPairGeneratorFromLayerPair::theMaxElement
private

Definition at line 70 of file HitPairGeneratorFromLayerPair.h.

Referenced by doublets(), and hitPairs().

const unsigned int HitPairGeneratorFromLayerPair::theOuterLayer
private

Definition at line 68 of file HitPairGeneratorFromLayerPair.h.

Referenced by outerLayer().