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
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

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_
 
double zStep_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 36 of file ClusterCompatibilityProducer.cc.

Constructor & Destructor Documentation

◆ ClusterCompatibilityProducer()

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

Definition at line 65 of file ClusterCompatibilityProducer.cc.

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

References inputTag_, inputToken_, and LogDebug.

◆ ~ClusterCompatibilityProducer()

ClusterCompatibilityProducer::~ClusterCompatibilityProducer ( )
override

Definition at line 75 of file ClusterCompatibilityProducer.cc.

75 {}

Member Function Documentation

◆ getContainedHits()

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

Definition at line 138 of file ClusterCompatibilityProducer.cc.

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

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 77 of file ClusterCompatibilityProducer.cc.

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

References HltBtagPostValidation_cff::c, end, edm::EventSetup::get(), get, getContainedHits(), 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(), ClusterCompatibilityProducer::VertexHit::r, PixelGeomDetUnit::specificTopology(), GeomDet::toGlobal(), ClusterCompatibilityProducer::VertexHit::w, hit::x, hit::y, ClusterCompatibilityProducer::VertexHit::z, hit::z, HLTMuonOfflineAnalyzer_cfi::z0, and zStep_.

Member Data Documentation

◆ inputTag_

edm::InputTag ClusterCompatibilityProducer::inputTag_
private

Definition at line 45 of file ClusterCompatibilityProducer.cc.

Referenced by ClusterCompatibilityProducer().

◆ inputToken_

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

Definition at line 44 of file ClusterCompatibilityProducer.cc.

Referenced by ClusterCompatibilityProducer(), and produce().

◆ maxZ_

double ClusterCompatibilityProducer::maxZ_
private

Definition at line 47 of file ClusterCompatibilityProducer.cc.

Referenced by produce().

◆ minZ_

double ClusterCompatibilityProducer::minZ_
private

Definition at line 46 of file ClusterCompatibilityProducer.cc.

Referenced by produce().

◆ zStep_

double ClusterCompatibilityProducer::zStep_
private

Definition at line 48 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:32
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edmNew::DetSetVector::const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetSetVectorNew.h:231
ClusterCompatibilityProducer::inputTag_
edm::InputTag inputTag_
Definition: ClusterCompatibilityProducer.cc:45
muonClassificationByHits_cfi.pixel
pixel
Definition: muonClassificationByHits_cfi.py:9
ClusterCompatibilityProducer::zStep_
double zStep_
Definition: ClusterCompatibilityProducer.cc:48
align::LocalPoint
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
edm::Handle
Definition: AssociativeIterator.h:50
end
#define end
Definition: vmac.h:39
ClusterCompatibilityProducer::maxZ_
double maxZ_
Definition: ClusterCompatibilityProducer.cc:47
hit::x
double x
Definition: SiStripHitEffFromCalibTree.cc:89
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
config
Definition: config.py:1
DetId
Definition: DetId.h:17
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
ClusterCompatibilityProducer::getContainedHits
ContainedHits getContainedHits(const std::vector< VertexHit > &hits, double z0) const
Definition: ClusterCompatibilityProducer.cc:138
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:56
hit::z
double z
Definition: SiStripHitEffFromCalibTree.cc:91
ClusterCompatibilityProducer::inputToken_
edm::EDGetTokenT< SiPixelRecHitCollection > inputToken_
Definition: ClusterCompatibilityProducer.cc:44
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:670
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
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
get
#define get
edmNew::DetSetVector
Definition: DetSetNew.h:13
eostools.move
def move(src, dest)
Definition: eostools.py:511
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
ClusterCompatibilityProducer::minZ_
double minZ_
Definition: ClusterCompatibilityProducer.cc:46
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