File indexing completed on 2023-10-25 09:46:12
0001 #include "FastSimulation/TrackingRecHitProducer/interface/TrackingRecHitAlgorithm.h"
0002 #include "FastSimulation/TrackingRecHitProducer/interface/TrackingRecHitAlgorithmFactory.h"
0003 #include "FastSimulation/TrackingRecHitProducer/interface/TrackingRecHitProduct.h"
0004
0005 #include "DataFormats/DetId/interface/DetId.h"
0006 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0007 #include "DataFormats/TrackerRecHit2D/interface/FastSingleTrackerRecHit.h"
0008
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010
0011 #include <string>
0012 #include <iostream>
0013
0014 class TrackingRecHitNoSmearingPlugin : public TrackingRecHitAlgorithm {
0015 private:
0016 double _errorXX;
0017 double _errorXY;
0018 double _errorYY;
0019
0020 public:
0021 TrackingRecHitNoSmearingPlugin(const std::string& name,
0022 const edm::ParameterSet& config,
0023 edm::ConsumesCollector& consumesCollector)
0024 : TrackingRecHitAlgorithm(name, config, consumesCollector),
0025 _errorXX(0.001 * 0.001),
0026 _errorXY(0.0),
0027 _errorYY(0.001 * 0.001) {
0028 if (config.exists("errorXX")) {
0029 _errorXX = config.getParameter<double>("errorXX");
0030 }
0031
0032 if (config.exists("errorXY")) {
0033 _errorXY = config.getParameter<double>("errorXY");
0034 }
0035
0036 if (config.exists("errorYY")) {
0037 _errorYY = config.getParameter<double>("errorYY");
0038 }
0039 }
0040
0041 TrackingRecHitProductPtr process(TrackingRecHitProductPtr product) const override {
0042 for (const std::pair<unsigned int, const PSimHit*>& simHitIdPair : product->getSimHitIdPairs()) {
0043 const PSimHit* simHit = simHitIdPair.second;
0044 const Local3DPoint& position = simHit->localPosition();
0045 LocalError error(_errorXX, _errorXY, _errorYY);
0046 const GeomDet* geomDet = getTrackerGeometry().idToDetUnit(product->getDetId());
0047
0048
0049 FastSingleTrackerRecHit recHit(
0050 position,
0051 error,
0052 *geomDet,
0053 fastTrackerRecHitType::
0054 siPixel
0055 );
0056 product->addRecHit(recHit, {simHitIdPair});
0057 }
0058
0059 return product;
0060 }
0061 };
0062
0063 DEFINE_EDM_PLUGIN(TrackingRecHitAlgorithmFactory, TrackingRecHitNoSmearingPlugin, "TrackingRecHitNoSmearingPlugin");