CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes
MkFitGeometryESProducer Class Reference
Inheritance diagram for MkFitGeometryESProducer:
edm::ESProducer edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

Classes

struct  GapCollector
 

Public Member Functions

 MkFitGeometryESProducer (const edm::ParameterSet &iConfig)
 
std::unique_ptr< MkFitGeometryproduce (const TrackerRecoGeometryRecord &iRecord)
 
- Public Member Functions inherited from edm::ESProducer
 ESProducer ()
 
 ESProducer (const ESProducer &)=delete
 
 ESProducer (ESProducer &&)=delete
 
ESProxyIndex const * getTokenIndices (unsigned int iIndex) const
 
ESRecordIndex const * getTokenRecordIndices (unsigned int iIndex) const
 
bool hasMayConsumes () const noexcept
 
size_t numberOfTokenIndices (unsigned int iIndex) const
 
ESProduceroperator= (const ESProducer &)=delete
 
ESProduceroperator= (ESProducer &&)=delete
 
SerialTaskQueueChainqueue ()
 
template<typename Record >
std::optional< std::vector< ESProxyIndex > > updateFromMayConsumes (unsigned int iIndex, const Record &iRecord) const
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &) final
 
 ~ESProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::ESProxyFactoryProducer
 ESProxyFactoryProducer ()
 
 ESProxyFactoryProducer (const ESProxyFactoryProducer &)=delete
 
const ESProxyFactoryProduceroperator= (const ESProxyFactoryProducer &)=delete
 
 ~ESProxyFactoryProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::eventsetup::DataProxyProvider
void createKeyedProxies (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
 DataProxyProvider ()
 
 DataProxyProvider (const DataProxyProvider &)=delete
 
const ComponentDescriptiondescription () const
 
void fillRecordsNotAllowingConcurrentIOVs (std::set< EventSetupRecordKey > &recordsNotAllowingConcurrentIOVs) const
 
virtual void initConcurrentIOVs (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
bool isUsingRecord (const EventSetupRecordKey &key) const
 
KeyedProxieskeyedProxies (const EventSetupRecordKey &iRecordKey, unsigned int iovIndex=0)
 
const DataProxyProvideroperator= (const DataProxyProvider &)=delete
 
void setAppendToDataLabel (const edm::ParameterSet &)
 
void setDescription (const ComponentDescription &iDescription)
 
std::set< EventSetupRecordKeyusingRecords () const
 
virtual ~DataProxyProvider () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::eventsetup::DataProxyProvider
static void prevalidate (ConfigurationDescriptions &)
 

Private Types

typedef std::unordered_map< int, GapCollectorlayer_gap_map_t
 

Private Member Functions

void addPixBGeometry (mkfit::TrackerInfo &trk_info)
 
void addPixEGeometry (mkfit::TrackerInfo &trk_info)
 
void addTECGeometry (mkfit::TrackerInfo &trk_info)
 
void addTIBGeometry (mkfit::TrackerInfo &trk_info)
 
void addTIDGeometry (mkfit::TrackerInfo &trk_info)
 
void addTOBGeometry (mkfit::TrackerInfo &trk_info)
 
void considerPoint (const GlobalPoint &gp, mkfit::LayerInfo &lay_info)
 
void fillShapeAndPlacement (const GeomDet *det, mkfit::TrackerInfo &trk_info, layer_gap_map_t *lgc_map=nullptr)
 

Private Attributes

edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordgeomToken_
 
mkfit::LayerNumberConverter layerNrConv_ = {mkfit::TkLayout::phase1}
 
const TrackerGeometrytrackerGeom_ = nullptr
 
edm::ESGetToken< GeometricSearchTracker, TrackerRecoGeometryRecordtrackerToken_
 
const TrackerTopologytrackerTopo_ = nullptr
 
edm::ESGetToken< TrackerTopology, TrackerTopologyRcdttopoToken_
 

Additional Inherited Members

- Protected Types inherited from edm::ESProxyFactoryProducer
using EventSetupRecordKey = eventsetup::EventSetupRecordKey
 
- Protected Types inherited from edm::eventsetup::DataProxyProvider
using KeyedProxiesVector = std::vector< std::pair< DataKey, std::shared_ptr< DataProxy > >>
 
- Protected Member Functions inherited from edm::ESProducer
ESConsumesInfoconsumesInfoPushBackNew ()
 
unsigned int consumesInfoSize () const
 
template<typename CallbackT , typename TList , typename TRecord >
void registerProducts (std::shared_ptr< std::pair< unsigned int, std::shared_ptr< CallbackT >>> iCallback, const TList *, const TRecord *iRecord, const es::Label &iLabel)
 
template<typename CallbackT , typename TRecord >
void registerProducts (std::shared_ptr< std::pair< unsigned int, std::shared_ptr< CallbackT >>>, const eventsetup::produce::Null *, const TRecord *, const es::Label &)
 
template<typename T >
auto setWhatProduced (T *iThis, const es::Label &iLabel={})
 
template<typename T >
auto setWhatProduced (T *iThis, const char *iLabel)
 
template<typename T >
auto setWhatProduced (T *iThis, const std::string &iLabel)
 
template<typename T , typename TDecorator >
auto setWhatProduced (T *iThis, const TDecorator &iDec, const es::Label &iLabel={})
 
template<typename T , typename TReturn , typename TRecord >
auto setWhatProduced (T *iThis, TReturn(T::*iMethod)(const TRecord &), const es::Label &iLabel={})
 
template<typename T , typename TReturn , typename TRecord , typename TDecorator >
auto setWhatProduced (T *iThis, TReturn(T ::*iMethod)(const TRecord &), const TDecorator &iDec, const es::Label &iLabel={})
 
template<typename TFunc >
auto setWhatProduced (TFunc &&func, const es::Label &iLabel={})
 
template<typename TReturn , typename TRecord , typename TFunc , typename TDecorator >
ESConsumesCollectorT< TRecord > setWhatProduced (TFunc &&func, TDecorator &&iDec, const es::Label &iLabel={})
 
void usesResources (std::vector< std::string > const &)
 
- Protected Member Functions inherited from edm::ESProxyFactoryProducer
template<class TFactory >
void registerFactory (std::unique_ptr< TFactory > iFactory, const std::string &iLabel=std::string())
 
virtual void registerFactoryWithKey (const EventSetupRecordKey &iRecord, std::unique_ptr< eventsetup::ProxyFactoryBase > iFactory, const std::string &iLabel=std::string())
 
KeyedProxiesVector registerProxies (const EventSetupRecordKey &, unsigned int iovIndex) override
 
- Protected Member Functions inherited from edm::eventsetup::DataProxyProvider
template<class T >
void usingRecord ()
 
void usingRecordWithKey (const EventSetupRecordKey &key)
 

Detailed Description

Definition at line 28 of file MkFitGeometryESProducer.cc.

Member Typedef Documentation

◆ layer_gap_map_t

typedef std::unordered_map<int, GapCollector> MkFitGeometryESProducer::layer_gap_map_t
private

Definition at line 58 of file MkFitGeometryESProducer.cc.

Constructor & Destructor Documentation

◆ MkFitGeometryESProducer()

MkFitGeometryESProducer::MkFitGeometryESProducer ( const edm::ParameterSet iConfig)

Definition at line 78 of file MkFitGeometryESProducer.cc.

References gpuPixelDoublets::cc, geomToken_, edm::ESProducer::setWhatProduced(), trackerToken_, and ttopoToken_.

78  {
79  auto cc = setWhatProduced(this);
80  geomToken_ = cc.consumes();
81  ttopoToken_ = cc.consumes();
82  trackerToken_ = cc.consumes();
83 }
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:165
uint32_t cc[maxCellsPerHit]
Definition: gpuFishbone.h:49
edm::ESGetToken< GeometricSearchTracker, TrackerRecoGeometryRecord > trackerToken_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > ttopoToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_

Member Function Documentation

◆ addPixBGeometry()

void MkFitGeometryESProducer::addPixBGeometry ( mkfit::TrackerInfo trk_info)
private

Definition at line 278 of file MkFitGeometryESProducer.cc.

References TrackerGeometry::detsPXB(), fillShapeAndPlacement(), and trackerGeom_.

Referenced by produce().

278  {
279 #ifdef DUMP_MKF_GEO
280  printf("\n*** addPixBGeometry\n\n");
281 #endif
282  for (auto &det : trackerGeom_->detsPXB()) {
283  fillShapeAndPlacement(det, trk_info);
284  }
285 }
const DetContainer & detsPXB() const
const TrackerGeometry * trackerGeom_
void fillShapeAndPlacement(const GeomDet *det, mkfit::TrackerInfo &trk_info, layer_gap_map_t *lgc_map=nullptr)

◆ addPixEGeometry()

void MkFitGeometryESProducer::addPixEGeometry ( mkfit::TrackerInfo trk_info)
private

Definition at line 287 of file MkFitGeometryESProducer.cc.

References TrackerGeometry::detsPXF(), fillShapeAndPlacement(), and trackerGeom_.

Referenced by produce().

287  {
288 #ifdef DUMP_MKF_GEO
289  printf("\n*** addPixEGeometry\n\n");
290 #endif
291  for (auto &det : trackerGeom_->detsPXF()) {
292  fillShapeAndPlacement(det, trk_info);
293  }
294 }
const DetContainer & detsPXF() const
const TrackerGeometry * trackerGeom_
void fillShapeAndPlacement(const GeomDet *det, mkfit::TrackerInfo &trk_info, layer_gap_map_t *lgc_map=nullptr)

◆ addTECGeometry()

void MkFitGeometryESProducer::addTECGeometry ( mkfit::TrackerInfo trk_info)
private

Definition at line 323 of file MkFitGeometryESProducer.cc.

References TrackerGeometry::detsTEC(), fillShapeAndPlacement(), pixelTopology::layer, mkfit::TrackerInfo::layer_nc(), mkfit::LayerInfo::set_r_hole_range(), trackerGeom_, MkFitGeometryESProducer::GapCollector::Interval::x, and MkFitGeometryESProducer::GapCollector::Interval::y.

Referenced by produce().

323  {
324 #ifdef DUMP_MKF_GEO
325  printf("\n*** addTECGeometry\n\n");
326 #endif
327  // For TEC we also need to discover hole in radial extents.
328  layer_gap_map_t lgc_map;
329  for (auto &det : trackerGeom_->detsTEC()) {
330  fillShapeAndPlacement(det, trk_info, &lgc_map);
331  }
332  // Now loop over the GapCollectors and see if there is a coverage gap.
333  std::ostringstream ostr;
334  ostr << "addTECGeometry() gap report:\n";
335  GapCollector::Interval itvl;
336  for (auto &[layer, gcol] : lgc_map) {
337  gcol.sqrt_elements();
338  if (gcol.find_gap(itvl, 0.5)) {
339  ostr << " layer: " << layer << ", gap: " << itvl.x << " -> " << itvl.y << " width = " << itvl.y - itvl.x << "\n";
340  ostr << " all gaps: ";
341  gcol.print_gaps(ostr);
342  ostr << "\n";
343  trk_info.layer_nc(layer).set_r_hole_range(itvl.x, itvl.y);
344  }
345  }
346  edm::LogVerbatim("MkFitGeometryESProducer") << ostr.str();
347 }
Log< level::Info, true > LogVerbatim
void set_r_hole_range(float rh1, float rh2)
Definition: TrackerInfo.cc:31
LayerInfo & layer_nc(int l)
Definition: TrackerInfo.h:163
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
const TrackerGeometry * trackerGeom_
void fillShapeAndPlacement(const GeomDet *det, mkfit::TrackerInfo &trk_info, layer_gap_map_t *lgc_map=nullptr)
const DetContainer & detsTEC() const
std::unordered_map< int, GapCollector > layer_gap_map_t

◆ addTIBGeometry()

void MkFitGeometryESProducer::addTIBGeometry ( mkfit::TrackerInfo trk_info)
private

Definition at line 296 of file MkFitGeometryESProducer.cc.

References TrackerGeometry::detsTIB(), fillShapeAndPlacement(), and trackerGeom_.

Referenced by produce().

296  {
297 #ifdef DUMP_MKF_GEO
298  printf("\n*** addTIBGeometry\n\n");
299 #endif
300  for (auto &det : trackerGeom_->detsTIB()) {
301  fillShapeAndPlacement(det, trk_info);
302  }
303 }
const DetContainer & detsTIB() const
const TrackerGeometry * trackerGeom_
void fillShapeAndPlacement(const GeomDet *det, mkfit::TrackerInfo &trk_info, layer_gap_map_t *lgc_map=nullptr)

◆ addTIDGeometry()

void MkFitGeometryESProducer::addTIDGeometry ( mkfit::TrackerInfo trk_info)
private

Definition at line 314 of file MkFitGeometryESProducer.cc.

References TrackerGeometry::detsTID(), fillShapeAndPlacement(), and trackerGeom_.

Referenced by produce().

314  {
315 #ifdef DUMP_MKF_GEO
316  printf("\n*** addTIDGeometry\n\n");
317 #endif
318  for (auto &det : trackerGeom_->detsTID()) {
319  fillShapeAndPlacement(det, trk_info);
320  }
321 }
const TrackerGeometry * trackerGeom_
void fillShapeAndPlacement(const GeomDet *det, mkfit::TrackerInfo &trk_info, layer_gap_map_t *lgc_map=nullptr)
const DetContainer & detsTID() const

◆ addTOBGeometry()

void MkFitGeometryESProducer::addTOBGeometry ( mkfit::TrackerInfo trk_info)
private

Definition at line 305 of file MkFitGeometryESProducer.cc.

References TrackerGeometry::detsTOB(), fillShapeAndPlacement(), and trackerGeom_.

Referenced by produce().

305  {
306 #ifdef DUMP_MKF_GEO
307  printf("\n*** addTOBGeometry\n\n");
308 #endif
309  for (auto &det : trackerGeom_->detsTOB()) {
310  fillShapeAndPlacement(det, trk_info);
311  }
312 }
const DetContainer & detsTOB() const
const TrackerGeometry * trackerGeom_
void fillShapeAndPlacement(const GeomDet *det, mkfit::TrackerInfo &trk_info, layer_gap_map_t *lgc_map=nullptr)

◆ considerPoint()

void MkFitGeometryESProducer::considerPoint ( const GlobalPoint gp,
mkfit::LayerInfo lay_info 
)
private

Definition at line 169 of file MkFitGeometryESProducer.cc.

References mkfit::LayerInfo::extend_limits(), runTauDisplay::gp, alignCSCRings::r, and z.

Referenced by fillShapeAndPlacement().

169  {
170  // Use radius squared during bounding-region search.
171  float r = gp.perp2(), z = gp.z();
172  li.extend_limits(r, z);
173 }

◆ fillDescriptions()

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

◆ fillShapeAndPlacement()

void MkFitGeometryESProducer::fillShapeAndPlacement ( const GeomDet det,
mkfit::TrackerInfo trk_info,
layer_gap_map_t lgc_map = nullptr 
)
private

Definition at line 175 of file MkFitGeometryESProducer.cc.

References b, b2, considerPoint(), mkfit::LayerNumberConverter::convertLayerNumber(), PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, Exception, GeomDet::geographicalId(), mps_fire::i, TrackerTopology::isStereo(), TrackerTopology::layer(), mkfit::TrackerInfo::layer_nc(), layerNrConv_, AlCaHLTBitMon_ParallelJobs::p, PV3DBase< T, PVType, FrameType >::perp2(), PosEndcap, GeomDet::position(), DetId::rawId(), GeomDet::rotation(), TrackerTopology::side(), DetId::subdetId(), GeomDet::surface(), Surface::toGlobal(), trackerTopo_, useMatched, x, TkRotation< T >::x(), geometryCSVtoXML::xy, z, and TkRotation< T >::z().

Referenced by addPixBGeometry(), addPixEGeometry(), addTECGeometry(), addTIBGeometry(), addTIDGeometry(), and addTOBGeometry().

177  {
178  DetId detid = det->geographicalId();
179 
180  float xy[4][2];
181  float dz;
182  const Bounds *b = &((det->surface()).bounds());
183 
184  if (const TrapezoidalPlaneBounds *b2 = dynamic_cast<const TrapezoidalPlaneBounds *>(b)) {
185  // See sec. "TrapezoidalPlaneBounds parameters" in doc/reco-geom-notes.txt
186  std::array<const float, 4> const &par = b2->parameters();
187  xy[0][0] = -par[0];
188  xy[0][1] = -par[3];
189  xy[1][0] = -par[1];
190  xy[1][1] = par[3];
191  xy[2][0] = par[1];
192  xy[2][1] = par[3];
193  xy[3][0] = par[0];
194  xy[3][1] = -par[3];
195  dz = par[2];
196 
197 #ifdef DUMP_MKF_GEO
198  printf("TRAP 0x%x %f %f %f %f ", detid.rawId(), par[0], par[1], par[2], par[3]);
199 #endif
200  } else if (const RectangularPlaneBounds *b2 = dynamic_cast<const RectangularPlaneBounds *>(b)) {
201  // Rectangular
202  float dx = b2->width() * 0.5; // half width
203  float dy = b2->length() * 0.5; // half length
204  xy[0][0] = -dx;
205  xy[0][1] = -dy;
206  xy[1][0] = -dx;
207  xy[1][1] = dy;
208  xy[2][0] = dx;
209  xy[2][1] = dy;
210  xy[3][0] = dx;
211  xy[3][1] = -dy;
212  dz = b2->thickness() * 0.5; // half thickness
213 
214 #ifdef DUMP_MKF_GEO
215  printf("RECT 0x%x %f %f %f ", detid.rawId(), dx, dy, dz);
216 #endif
217  } else {
218  throw cms::Exception("UnimplementedFeature") << "unsupported Bounds class";
219  }
220 
221  const bool useMatched = false;
222  int lay =
224  trackerTopo_->layer(detid),
225  useMatched,
226  trackerTopo_->isStereo(detid),
227  trackerTopo_->side(detid) == static_cast<unsigned>(TrackerDetSide::PosEndcap));
228 #ifdef DUMP_MKF_GEO
229  printf(" subdet=%d layer=%d side=%d is_stereo=%d --> mkflayer=%d\n",
230  detid.subdetId(),
231  trackerTopo_->layer(detid),
232  trackerTopo_->side(detid),
233  trackerTopo_->isStereo(detid),
234  lay);
235 #endif
236 
237  mkfit::LayerInfo &layer_info = trk_info.layer_nc(lay);
238  if (lgc_map) {
239  (*lgc_map)[lay].reset_current();
240  }
241  for (int i = 0; i < 4; ++i) {
242  Local3DPoint lp1(xy[i][0], xy[i][1], -dz);
243  Local3DPoint lp2(xy[i][0], xy[i][1], dz);
244  GlobalPoint gp1 = det->surface().toGlobal(lp1);
245  GlobalPoint gp2 = det->surface().toGlobal(lp2);
246  considerPoint(gp1, layer_info);
247  considerPoint(gp2, layer_info);
248  if (lgc_map) {
249  (*lgc_map)[lay].extend_current(gp1.perp2());
250  (*lgc_map)[lay].extend_current(gp2.perp2());
251  }
252  }
253  if (lgc_map) {
254  (*lgc_map)[lay].add_current();
255  }
256  // Module information
257  const auto &p = det->position();
258  auto z = det->rotation().z();
259  auto x = det->rotation().x();
260  layer_info.register_module({{p.x(), p.y(), p.z()}, {z.x(), z.y(), z.z()}, {x.x(), x.y(), x.z()}, detid.rawId()});
261  // Set some layer parameters (repeatedly, would require hard-coding otherwise)
262  layer_info.set_subdet(detid.subdetId());
263  layer_info.set_is_pixel(detid.subdetId() <= 2);
264  layer_info.set_is_stereo(trackerTopo_->isStereo(detid));
265 }
bool isStereo(const DetId &id) const
const TrackerTopology * trackerTopo_
unsigned int side(const DetId &id) const
LayerInfo & layer_nc(int l)
Definition: TrackerInfo.h:163
constexpr bool useMatched
unsigned int layer(const DetId &id) const
const Surface::RotationType & rotation() const
The rotation defining the local R.F.
Definition: GeomDet.h:46
Basic3DVector< T > x() const
Basic3DVector< T > z() const
void considerPoint(const GlobalPoint &gp, mkfit::LayerInfo &lay_info)
weight_default_t b2[10]
Definition: b2.h:9
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:64
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
Definition: DetId.h:17
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
double b
Definition: hdecay.h:118
T perp2() const
Definition: PV3DBase.h:68
const Surface::PositionType & position() const
The position (origin of the R.F.)
Definition: GeomDet.h:43
mkfit::LayerNumberConverter layerNrConv_
Definition: Bounds.h:18
int convertLayerNumber(int det, int lay, bool useMatched, int isStereo, bool posZ) const

◆ produce()

std::unique_ptr< MkFitGeometry > MkFitGeometryESProducer::produce ( const TrackerRecoGeometryRecord iRecord)

Definition at line 373 of file MkFitGeometryESProducer.cc.

References addPixBGeometry(), addPixEGeometry(), addTECGeometry(), addTIBGeometry(), addTIDGeometry(), addTOBGeometry(), cms::cuda::assert(), Exception, geomToken_, edm::eventsetup::DependentRecordImplementation< RecordT, ListT >::get(), mps_fire::i, TrackerGeometry::isThere(), layerNrConv_, SiStripPI::max, eostools::move(), GeomDetEnumerators::P1PXB, GeomDetEnumerators::P1PXEC, GeomDetEnumerators::P2OTB, GeomDetEnumerators::P2OTEC, GeomDetEnumerators::P2PXB, GeomDetEnumerators::P2PXEC, mkfit::phase2, mkfit::LayerNumberConverter::reset(), mathSSE::sqrt(), trackerGeom_, trackerToken_, trackerTopo_, and ttopoToken_.

373  {
374  auto trackerInfo = std::make_unique<mkfit::TrackerInfo>();
375 
376  trackerGeom_ = &iRecord.get(geomToken_);
377  trackerTopo_ = &iRecord.get(ttopoToken_);
378 
379  const float *qBinDefaults = nullptr;
380 
381  // std::string path = "Geometry/TrackerCommonData/data/";
383  edm::LogInfo("MkFitGeometryESProducer") << "Extracting PhaseI geometry";
384  trackerInfo->create_layers(18, 27, 27);
385  qBinDefaults = phase1QBins;
388  edm::LogInfo("MkFitGeometryESProducer") << "Extracting PhaseII geometry";
390  trackerInfo->create_layers(16, 22, 22);
391  qBinDefaults = phase2QBins;
392  } else {
393  throw cms::Exception("UnimplementedFeature") << "unsupported / unknowen geometry version";
394  }
395 
396  // Prepare layer boundaries for bounding-box search
397  for (int i = 0; i < trackerInfo->n_layers(); ++i) {
398  auto &li = trackerInfo->layer_nc(i);
399  li.set_limits(
401  li.reserve_modules(256);
402  }
403  // This is sort of CMS-phase1 specific ... but fireworks code uses it for PhaseII as well.
404  addPixBGeometry(*trackerInfo);
405  addPixEGeometry(*trackerInfo);
406  addTIBGeometry(*trackerInfo);
407  addTIDGeometry(*trackerInfo);
408  addTOBGeometry(*trackerInfo);
409  addTECGeometry(*trackerInfo);
410 
411  // r_in/out kept as squares until here, root them
412  unsigned int n_mod = 0;
413  for (int i = 0; i < trackerInfo->n_layers(); ++i) {
414  auto &li = trackerInfo->layer_nc(i);
415  li.set_r_in_out(std::sqrt(li.rin()), std::sqrt(li.rout()));
416  li.set_propagate_to(li.is_barrel() ? li.r_mean() : li.z_mean());
417  li.set_q_bin(qBinDefaults[i]);
418  unsigned int maxsid = li.shrink_modules();
419 
420  n_mod += maxsid;
421 
422  // Make sure the short id fits in the 14 bits...
423  assert(maxsid < 1u << 13);
424  assert(n_mod > 0);
425  }
426 #ifdef DUMP_MKF_GEO
427  printf("Total number of modules %u, 14-bits fit up to %u modules\n", n_mod, 1u << 13);
428 #endif
429 
430  return std::make_unique<MkFitGeometry>(iRecord.get(geomToken_),
431  iRecord.get(trackerToken_),
432  iRecord.get(ttopoToken_),
433  std::move(trackerInfo),
434  layerNrConv_);
435 }
void addPixBGeometry(mkfit::TrackerInfo &trk_info)
void addTOBGeometry(mkfit::TrackerInfo &trk_info)
edm::ESGetToken< GeometricSearchTracker, TrackerRecoGeometryRecord > trackerToken_
const TrackerTopology * trackerTopo_
assert(be >=bs)
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > ttopoToken_
const TrackerGeometry * trackerGeom_
bool isThere(GeomDetEnumerators::SubDetector subdet) const
void addTIDGeometry(mkfit::TrackerInfo &trk_info)
T sqrt(T t)
Definition: SSEVec.h:19
Log< level::Info, false > LogInfo
void addPixEGeometry(mkfit::TrackerInfo &trk_info)
mkfit::LayerNumberConverter layerNrConv_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
def move(src, dest)
Definition: eostools.py:511
void addTIBGeometry(mkfit::TrackerInfo &trk_info)
void addTECGeometry(mkfit::TrackerInfo &trk_info)

Member Data Documentation

◆ geomToken_

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> MkFitGeometryESProducer::geomToken_
private

Definition at line 69 of file MkFitGeometryESProducer.cc.

Referenced by MkFitGeometryESProducer(), and produce().

◆ layerNrConv_

mkfit::LayerNumberConverter MkFitGeometryESProducer::layerNrConv_ = {mkfit::TkLayout::phase1}
private

Definition at line 75 of file MkFitGeometryESProducer.cc.

Referenced by fillShapeAndPlacement(), and produce().

◆ trackerGeom_

const TrackerGeometry* MkFitGeometryESProducer::trackerGeom_ = nullptr
private

◆ trackerToken_

edm::ESGetToken<GeometricSearchTracker, TrackerRecoGeometryRecord> MkFitGeometryESProducer::trackerToken_
private

Definition at line 71 of file MkFitGeometryESProducer.cc.

Referenced by MkFitGeometryESProducer(), and produce().

◆ trackerTopo_

const TrackerTopology* MkFitGeometryESProducer::trackerTopo_ = nullptr
private

Definition at line 73 of file MkFitGeometryESProducer.cc.

Referenced by fillShapeAndPlacement(), and produce().

◆ ttopoToken_

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> MkFitGeometryESProducer::ttopoToken_
private

Definition at line 70 of file MkFitGeometryESProducer.cc.

Referenced by MkFitGeometryESProducer(), and produce().