CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
ClusterCompatibilityProducer Class Reference
Inheritance diagram for ClusterCompatibilityProducer:
edm::stream::EDProducer<>

Classes

struct  ContainedHits
 
struct  VertexHit
 

Public Member Functions

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

Private Member Functions

ContainedHits getContainedHits (const std::vector< VertexHit > &hits, double z0) const
 

Private Attributes

edm::InputTag inputTag_
 
edm::EDGetTokenT< SiPixelRecHitCollectioninputToken_
 
double maxZ_
 
double minZ_
 
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtrackerToken_
 
double zStep_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 37 of file ClusterCompatibilityProducer.cc.

Constructor & Destructor Documentation

◆ ClusterCompatibilityProducer()

ClusterCompatibilityProducer::ClusterCompatibilityProducer ( const edm::ParameterSet config)
explicit

Definition at line 67 of file ClusterCompatibilityProducer.cc.

68  : inputTag_(config.getParameter<edm::InputTag>("inputTag")),
69  minZ_(config.getParameter<double>("minZ")),
70  maxZ_(config.getParameter<double>("maxZ")),
71  zStep_(config.getParameter<double>("zStep")) {
72  inputToken_ = consumes<SiPixelRecHitCollection>(inputTag_);
73  trackerToken_ = esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>();
74  LogDebug("") << "Using the " << inputTag_ << " input collection";
75  produces<reco::ClusterCompatibility>();
76 }

References inputTag_, inputToken_, LogDebug, and trackerToken_.

◆ ~ClusterCompatibilityProducer()

ClusterCompatibilityProducer::~ClusterCompatibilityProducer ( )
override

Definition at line 78 of file ClusterCompatibilityProducer.cc.

78 {}

Member Function Documentation

◆ getContainedHits()

ClusterCompatibilityProducer::ContainedHits ClusterCompatibilityProducer::getContainedHits ( const std::vector< VertexHit > &  hits,
double  z0 
) const
private

Definition at line 140 of file ClusterCompatibilityProducer.cc.

141  {
142  // Calculate number of hits contained in v-shaped window in cluster y-width vs. z-position.
143  int n = 0;
144  double chi = 0.;
145 
146  for (std::vector<VertexHit>::const_iterator hit = hits.begin(); hit != hits.end(); hit++) {
147  // the calculation of the predicted cluster width p was
148  // marked 'FIXME' in the HLTPixelClusterShapeFilter. It should
149  // be revisited but is retained as it was for compatibility with the
150  // older filter.
151  double p = 2 * fabs(hit->z - z0) / hit->r + 0.5;
152  if (fabs(p - hit->w) <= 1.) {
153  chi += fabs(p - hit->w);
154  n++;
155  }
156  }
158  output.z0 = z0;
159  output.nHit = n;
160  output.chi = chi;
161  return output;
162 }

References hfClusterShapes_cfi::hits, dqmiodumpmetadata::n, convertSQLitetoXML_cfg::output, AlCaHLTBitMon_ParallelJobs::p, hit::z, and HLTMuonOfflineAnalyzer_cfi::z0.

Referenced by produce().

◆ produce()

void ClusterCompatibilityProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 80 of file ClusterCompatibilityProducer.cc.

80  {
81  auto creco = std::make_unique<reco::ClusterCompatibility>();
82 
83  // get hold of products from Event
85  iEvent.getByToken(inputToken_, hRecHits);
86 
87  // get tracker geometry
88  if (hRecHits.isValid()) {
90  const TrackerGeometry *tgeo = trackerHandle.product();
91  const SiPixelRecHitCollection *hits = hRecHits.product();
92 
93  // loop over pixel rechits
94  int nPxlHits = 0;
95  std::vector<VertexHit> vhits;
96  for (SiPixelRecHitCollection::DataContainer::const_iterator hit = hits->data().begin(), end = hits->data().end();
97  hit != end;
98  ++hit) {
99  if (!hit->isValid())
100  continue;
101  ++nPxlHits;
102  DetId id(hit->geographicalId());
103  if (id.subdetId() != int(PixelSubdetector::PixelBarrel))
104  continue;
105  const PixelGeomDetUnit *pgdu = static_cast<const PixelGeomDetUnit *>(tgeo->idToDet(id));
106  const PixelTopology *pixTopo = &(pgdu->specificTopology());
107  std::vector<SiPixelCluster::Pixel> pixels(hit->cluster()->pixels());
108  bool pixelOnEdge = false;
109  for (std::vector<SiPixelCluster::Pixel>::const_iterator pixel = pixels.begin(); pixel != pixels.end(); ++pixel) {
110  int pixelX = pixel->x;
111  int pixelY = pixel->y;
112  if (pixTopo->isItEdgePixelInX(pixelX) || pixTopo->isItEdgePixelInY(pixelY)) {
113  pixelOnEdge = true;
114  break;
115  }
116  }
117  if (pixelOnEdge)
118  continue;
119 
120  LocalPoint lpos = LocalPoint(hit->localPosition().x(), hit->localPosition().y(), hit->localPosition().z());
121  GlobalPoint gpos = pgdu->toGlobal(lpos);
122  VertexHit vh;
123  vh.z = gpos.z();
124  vh.r = gpos.perp();
125  vh.w = hit->cluster()->sizeY();
126  vhits.push_back(vh);
127  }
128 
129  creco->setNValidPixelHits(nPxlHits);
130 
131  // append cluster compatibility for each z-position
132  for (double z0 = minZ_; z0 <= maxZ_; z0 += zStep_) {
133  ContainedHits c = getContainedHits(vhits, z0);
134  creco->append(c.z0, c.nHit, c.chi);
135  }
136  }
137  iEvent.put(std::move(creco));
138 }

References c, mps_fire::end, getContainedHits(), edm::EventSetup::getHandle(), hfClusterShapes_cfi::hits, triggerObjects_cff::id, TrackerGeometry::idToDet(), iEvent, inputToken_, createfilelist::int, edm::HandleBase::isValid(), maxZ_, minZ_, eostools::move(), muonClassificationByHits_cfi::pixel, PixelSubdetector::PixelBarrel, edm::Handle< T >::product(), edm::ESHandle< T >::product(), PixelGeomDetUnit::specificTopology(), GeomDet::toGlobal(), trackerToken_, vh, hit::x, hit::y, hit::z, HLTMuonOfflineAnalyzer_cfi::z0, and zStep_.

Member Data Documentation

◆ inputTag_

edm::InputTag ClusterCompatibilityProducer::inputTag_
private

Definition at line 47 of file ClusterCompatibilityProducer.cc.

Referenced by ClusterCompatibilityProducer().

◆ inputToken_

edm::EDGetTokenT<SiPixelRecHitCollection> ClusterCompatibilityProducer::inputToken_
private

Definition at line 45 of file ClusterCompatibilityProducer.cc.

Referenced by ClusterCompatibilityProducer(), and produce().

◆ maxZ_

double ClusterCompatibilityProducer::maxZ_
private

Definition at line 49 of file ClusterCompatibilityProducer.cc.

Referenced by produce().

◆ minZ_

double ClusterCompatibilityProducer::minZ_
private

Definition at line 48 of file ClusterCompatibilityProducer.cc.

Referenced by produce().

◆ trackerToken_

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> ClusterCompatibilityProducer::trackerToken_
private

Definition at line 46 of file ClusterCompatibilityProducer.cc.

Referenced by ClusterCompatibilityProducer(), and produce().

◆ zStep_

double ClusterCompatibilityProducer::zStep_
private

Definition at line 50 of file ClusterCompatibilityProducer.cc.

Referenced by produce().

TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
edm::Handle::product
T const * product() const
Definition: Handle.h:70
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
hit::y
double y
Definition: SiStripHitEffFromCalibTree.cc:90
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
vh
ValidHit vh
Definition: classes.h:14
edmNew::DetSetVector::const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetSetVectorNew.h:197
ClusterCompatibilityProducer::inputTag_
edm::InputTag inputTag_
Definition: ClusterCompatibilityProducer.cc:47
muonClassificationByHits_cfi.pixel
pixel
Definition: muonClassificationByHits_cfi.py:9
ClusterCompatibilityProducer::zStep_
double zStep_
Definition: ClusterCompatibilityProducer.cc:50
align::LocalPoint
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
edm::Handle
Definition: AssociativeIterator.h:50
ClusterCompatibilityProducer::maxZ_
double maxZ_
Definition: ClusterCompatibilityProducer.cc:49
hit::x
double x
Definition: SiStripHitEffFromCalibTree.cc:89
config
Definition: config.py:1
DetId
Definition: DetId.h:17
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
mps_fire.end
end
Definition: mps_fire.py:242
ClusterCompatibilityProducer::getContainedHits
ContainedHits getContainedHits(const std::vector< VertexHit > &hits, double z0) const
Definition: ClusterCompatibilityProducer.cc:140
edm::ESHandle< TrackerGeometry >
HLTMuonOfflineAnalyzer_cfi.z0
z0
Definition: HLTMuonOfflineAnalyzer_cfi.py:98
Point3DBase< float, LocalTag >
PixelTopology
Definition: PixelTopology.h:10
ClusterCompatibilityProducer::ContainedHits
Definition: ClusterCompatibilityProducer.cc:58
hit::z
double z
Definition: SiStripHitEffFromCalibTree.cc:91
ClusterCompatibilityProducer::inputToken_
edm::EDGetTokenT< SiPixelRecHitCollection > inputToken_
Definition: ClusterCompatibilityProducer.cc:45
GeomDet::toGlobal
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
PixelGeomDetUnit::specificTopology
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
Definition: PixelGeomDetUnit.cc:17
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
ClusterCompatibilityProducer::trackerToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerToken_
Definition: ClusterCompatibilityProducer.cc:46
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
edmNew::DetSetVector
Definition: DetSetNew.h:13
eostools.move
def move(src, dest)
Definition: eostools.py:511
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
ClusterCompatibilityProducer::minZ_
double minZ_
Definition: ClusterCompatibilityProducer.cc:48
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::InputTag
Definition: InputTag.h:15
hit
Definition: SiStripHitEffFromCalibTree.cc:88
TrackerGeometry
Definition: TrackerGeometry.h:14