CMS 3D CMS Logo

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

An explicit threshold-based clustering algorithm. More...

#include <MTDThresholdClusterizer.h>

Inheritance diagram for MTDThresholdClusterizer:
MTDClusterizerBase

Public Member Functions

void clusterize (const FTLRecHitCollection &input, const MTDGeometry *geom, const MTDTopology *topo, FTLClusterCollection &output) override
 Cluster hits. This method operates on a matrix of hits and finds the largest contiguous cluster around each seed hit. Input and output data stored in DetSet. More...
 
 MTDThresholdClusterizer (edm::ParameterSet const &conf)
 Constructor: More...
 
 ~MTDThresholdClusterizer () override
 
- Public Member Functions inherited from MTDClusterizerBase
virtual ~MTDClusterizerBase ()
 

Static Public Member Functions

static void fillDescriptions (edm::ParameterSetDescription &desc)
 

Private Member Functions

void clear_buffer (RecHitIterator itr)
 Clear the internal buffer array. More...
 
void copy_to_buffer (RecHitIterator itr, const MTDGeometry *geom, const MTDTopology *topo)
 Copy FTLRecHit into the buffer, identify seeds. More...
 
FTLCluster make_cluster (const FTLCluster::FTLHitPos &hit)
 The actual clustering algorithm: group the neighboring hits around the seed. More...
 
bool setup (const MTDGeometry *geometry, const MTDTopology *topo, const DetId &id)
 

Private Attributes

bool bufferAlreadySet
 
MTDArrayBuffer theBuffer
 Data storage. More...
 
std::vector< FTLClustertheClusters
 
const float theClusterThreshold
 
DetId theCurrentId
 
const float theHitThreshold
 Clustering-related quantities: More...
 
int theNumOfCols
 
int theNumOfRows
 Geometry-related information. More...
 
const float thePositionThreshold
 
std::vector< FTLCluster::FTLHitPostheSeeds
 
const float theSeedThreshold
 
const float theTimeThreshold
 

Additional Inherited Members

- Public Types inherited from MTDClusterizerBase
typedef FTLClusterCollection::const_iterator ClusterIterator
 
typedef FTLRecHitCollection::const_iterator RecHitIterator
 

Detailed Description

An explicit threshold-based clustering algorithm.

A threshold-based clustering algorithm which clusters FTLRecHits into FTLClusters for each DetUnit. The algorithm is straightforward and purely topological: the clustering process starts with seed hits and continues by adding adjacent hits above the hit threshold. Once the cluster is made, it has to be above the cluster threshold as well.

The clusterization is performed on a matrix with size equal to the size of the MTD detector, each cell containing the cahrge and time of the corresponding hit The matrix is reset after each clusterization.

The search starts from seed hits, i.e. hits with sufficiently large amplitudes

FTLCluster contains a barycenter, but it should be noted that that information is largely useless. One must use a PositionEstimator class to compute the RecHit position and its error for every given cluster.

Sets the MTDArrayBuffer dimensions and pixel thresholds. Makes clusters and stores them in theCache if the option useCache has been set.

Definition at line 51 of file MTDThresholdClusterizer.h.

Constructor & Destructor Documentation

◆ MTDThresholdClusterizer()

MTDThresholdClusterizer::MTDThresholdClusterizer ( edm::ParameterSet const &  conf)

Constructor:

Definition at line 34 of file MTDThresholdClusterizer.cc.

35  : // Get energy thresholds
36  theHitThreshold(conf.getParameter<double>("HitThreshold")),
37  theSeedThreshold(conf.getParameter<double>("SeedThreshold")),
38  theClusterThreshold(conf.getParameter<double>("ClusterThreshold")),
39  theTimeThreshold(conf.getParameter<double>("TimeThreshold")),
40  thePositionThreshold(conf.getParameter<double>("PositionThreshold")),
41  theNumOfRows(0),
42  theNumOfCols(0),
43  theCurrentId(0),
45  bufferAlreadySet(false) {}

◆ ~MTDThresholdClusterizer()

MTDThresholdClusterizer::~MTDThresholdClusterizer ( )
override

Definition at line 47 of file MTDThresholdClusterizer.cc.

47 {}

Member Function Documentation

◆ clear_buffer()

void MTDThresholdClusterizer::clear_buffer ( RecHitIterator  itr)
private

Clear the internal buffer array.

MTDs which are not part of recognized clusters are NOT ERASED during the cluster finding. Erase them now.

Definition at line 194 of file MTDThresholdClusterizer.cc.

194 { theBuffer.clear(itr->row(), itr->column()); }

References MTDArrayBuffer::clear(), and theBuffer.

Referenced by clusterize().

◆ clusterize()

void MTDThresholdClusterizer::clusterize ( const FTLRecHitCollection input,
const MTDGeometry geom,
const MTDTopology topo,
FTLClusterCollection output 
)
overridevirtual

Cluster hits. This method operates on a matrix of hits and finds the largest contiguous cluster around each seed hit. Input and output data stored in DetSet.

Implements MTDClusterizerBase.

Definition at line 98 of file MTDThresholdClusterizer.cc.

101  {
104 
105  // Do not bother for empty detectors
106  if (begin == end) {
107  edm::LogInfo("MTDThresholdClusterizer") << "No hits to clusterize";
108  return;
109  }
110 
111  DEBUG("Input collection " << input.size());
112  assert(output.empty());
113 
114  std::set<unsigned> geoIds;
115  std::multimap<unsigned, unsigned> geoIdToIdx;
116 
117  unsigned index = 0;
118  for (const auto& hit : input) {
119  MTDDetId mtdId = MTDDetId(hit.detid());
120  if (mtdId.subDetector() != MTDDetId::FastTime) {
121  throw cms::Exception("MTDThresholdClusterizer")
122  << "MTDDetId: " << std::hex << mtdId.rawId() << " is invalid!" << std::dec << std::endl;
123  }
124 
125  if (mtdId.mtdSubDetector() == MTDDetId::BTL) {
126  BTLDetId hitId(hit.detid());
127  //for BTL topology gives different layout id
128  DetId geoId = hitId.geographicalId(MTDTopologyMode::crysLayoutFromTopoMode(topo->getMTDTopologyMode()));
129  geoIdToIdx.emplace(geoId, index);
130  geoIds.emplace(geoId);
131  ++index;
132  } else if (mtdId.mtdSubDetector() == MTDDetId::ETL) {
133  ETLDetId hitId(hit.detid());
134  DetId geoId = hitId.geographicalId();
135  geoIdToIdx.emplace(geoId, index);
136  geoIds.emplace(geoId);
137  ++index;
138  } else {
139  throw cms::Exception("MTDThresholdClusterizer")
140  << "MTDDetId: " << std::hex << mtdId.rawId() << " is invalid!" << std::dec << std::endl;
141  }
142  }
143 
144  //cluster hits within geoIds (modules)
145  for (unsigned id : geoIds) {
146  // Set up the clusterization on this DetId.
147  if (!setup(geom, topo, DetId(id)))
148  return;
149 
150  auto range = geoIdToIdx.equal_range(id);
151  DEBUG("Matching Ids for " << std::hex << id << std::dec << " [" << range.first->second << ","
152  << range.second->second << "]");
153 
154  // Copy MTDRecHits to the buffer array; select the seed hits
155  // on the way, and store them in theSeeds.
156  for (auto itr = range.first; itr != range.second; ++itr) {
157  const unsigned hitidx = itr->second;
158  copy_to_buffer(begin + hitidx, geom, topo);
159  }
160 
161  FTLClusterCollection::FastFiller clustersOnDet(output, id);
162 
163  for (unsigned int i = 0; i < theSeeds.size(); i++) {
164  if (theBuffer.energy(theSeeds[i]) > theSeedThreshold) { // Is this seed still valid?
165  // Make a cluster around this seed
166  const FTLCluster& cluster = make_cluster(theSeeds[i]);
167 
168  // Check if the cluster is above threshold
169  if (cluster.energy() > theClusterThreshold) {
170  DEBUG("putting in this cluster " << i << " #hits:" << cluster.size() << " E:" << cluster.energy()
171  << " T:" << cluster.time() << " X:" << cluster.x() << " Y:" << cluster.y());
172  clustersOnDet.push_back(cluster);
173  }
174  }
175  }
176 
177  // Erase the seeds.
178  theSeeds.clear();
179  // Need to clean unused hits from the buffer array.
180  for (auto itr = range.first; itr != range.second; ++itr) {
181  const unsigned hitidx = itr->second;
182  clear_buffer(begin + hitidx);
183  }
184  }
185 }

References cms::cuda::assert(), MTDDetId::BTL, clear_buffer(), copy_to_buffer(), MTDTopologyMode::crysLayoutFromTopoMode(), DEBUG, TauDecayModes::dec, mps_fire::end, MTDArrayBuffer::energy(), FTLCluster::energy(), MTDDetId::ETL, Exception, MTDDetId::FastTime, relativeConstraints::geom, MTDTopology::getMTDTopologyMode(), mps_fire::i, input, make_cluster(), MTDDetId::mtdSubDetector(), convertSQLitetoXML_cfg::output, edmNew::DetSetVector< T >::FastFiller::push_back(), FastTimerService_cff::range, DetId::rawId(), setup(), FTLCluster::size(), MTDDetId::subDetector(), theBuffer, theClusterThreshold, theSeeds, theSeedThreshold, FTLCluster::time(), FTLCluster::x(), and FTLCluster::y().

◆ copy_to_buffer()

void MTDThresholdClusterizer::copy_to_buffer ( RecHitIterator  itr,
const MTDGeometry geom,
const MTDTopology topo 
)
private

Copy FTLRecHit into the buffer, identify seeds.

Definition at line 199 of file MTDThresholdClusterizer.cc.

199  {
200  MTDDetId mtdId = MTDDetId(itr->detid());
201  int row = itr->row();
202  int col = itr->column();
204  float energy = itr->energy();
205  float time = itr->time();
206  float timeError = itr->timeError();
207  float position = itr->position();
208  // position is the longitudinal offset that should be added into local x for bars in phi geometry
209  LocalError local_error(0, 0, 0);
210  GlobalPoint global_point(0, 0, 0);
211  if (mtdId.mtdSubDetector() == MTDDetId::BTL) {
213  BTLDetId id = itr->id();
214  DetId geoId = id.geographicalId(MTDTopologyMode::crysLayoutFromTopoMode(topo->getMTDTopologyMode()));
215  const auto& det = geom->idToDet(geoId);
216  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(det->topology());
217  const RectangularMTDTopology& topol = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
218  MeasurementPoint mp(row, col);
219  LocalPoint lp_ctr = topol.localPosition(mp);
220  LocalPoint lp(lp_ctr.x() + position + topol.pitch().first * 0.5f, lp_ctr.y(), lp_ctr.z());
221  // local coordinates of BTL module locates RecHits on the left edge of the bar (-9.2, -3.067, 3.067)
222  // (position + topol.pitch().first/2.0) is the distance from the left edge to the Hit point
223  global_point = det->toGlobal(lp);
224  BTLRecHitsErrorEstimatorIM btlError(det, lp);
225  local_error = btlError.localError();
226  } else if (mtdId.mtdSubDetector() == MTDDetId::ETL) {
228  ETLDetId id = itr->id();
229  DetId geoId = id.geographicalId();
230  const auto& det = geom->idToDet(geoId);
231  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(det->topology());
232  const RectangularMTDTopology& topol = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
233 
234  MeasurementPoint mp(row, col);
235  LocalPoint lp = topol.localPosition(mp);
236  global_point = det->toGlobal(lp);
237  }
238 
239  DEBUG("ROW " << row << " COL " << col << " ENERGY " << energy << " TIME " << time);
240  if (energy > theHitThreshold) {
241  theBuffer.set(row, col, subDet, energy, time, timeError, local_error, global_point);
242  if (energy > theSeedThreshold)
243  theSeeds.push_back(FTLCluster::FTLHitPos(row, col));
244  //sort seeds?
245  }
246 }

References GeomDetEnumerators::barrel, MTDDetId::BTL, cuy::col, MTDTopologyMode::crysLayoutFromTopoMode(), DEBUG, GeomDetEnumerators::endcap, HCALHighEnergyHPDFilter_cfi::energy, MTDDetId::ETL, relativeConstraints::geom, MTDTopology::getMTDTopologyMode(), GeomDetEnumerators::invalidLoc, BTLRecHitsErrorEstimatorIM::localError(), MTDDetId::mtdSubDetector(), position, MTDArrayBuffer::set(), ProxyMTDTopology::specificTopology(), theBuffer, theHitThreshold, theSeeds, theSeedThreshold, ntuplemaker::time, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by clusterize().

◆ fillDescriptions()

void MTDThresholdClusterizer::fillDescriptions ( edm::ParameterSetDescription desc)
static

Definition at line 50 of file MTDThresholdClusterizer.cc.

50  {
51  desc.add<double>("HitThreshold", 0.);
52  desc.add<double>("SeedThreshold", 0.);
53  desc.add<double>("ClusterThreshold", 0.);
54  desc.add<double>("TimeThreshold", 10.);
55  desc.add<double>("PositionThreshold", -1.0);
56 }

References submitPVResolutionJobs::desc.

Referenced by MTDClusterProducer::fillDescriptions().

◆ make_cluster()

FTLCluster MTDThresholdClusterizer::make_cluster ( const FTLCluster::FTLHitPos hit)
private

The actual clustering algorithm: group the neighboring hits around the seed.

Definition at line 251 of file MTDThresholdClusterizer.cc.

251  {
252  //First we acquire the seeds for the clusters
253 
254  GeomDetEnumerators::Location seed_subdet = theBuffer.subDet(hit.row(), hit.col());
255  float seed_energy = theBuffer.energy(hit.row(), hit.col());
256  float seed_time = theBuffer.time(hit.row(), hit.col());
257  float seed_time_error = theBuffer.time_error(hit.row(), hit.col());
258  auto const seedPoint = theBuffer.global_point(hit.row(), hit.col());
259  double seed_error_xx = theBuffer.local_error(hit.row(), hit.col()).xx();
260  double seed_error_yy = theBuffer.local_error(hit.row(), hit.col()).yy();
262 
263  AccretionCluster acluster;
264  acluster.add(hit, seed_energy, seed_time, seed_time_error);
265 
266  bool stopClus = false;
267  //Here we search all hits adjacent to all hits in the cluster.
268  while (!acluster.empty() && !stopClus) {
269  //This is the standard algorithm to find and add a hit
270  auto curInd = acluster.top();
271  acluster.pop();
272  for (auto c = std::max(0, int(acluster.y[curInd] - 1));
273  c < std::min(int(acluster.y[curInd] + 2), int(theBuffer.columns())) && !stopClus;
274  ++c) {
275  for (auto r = std::max(0, int(acluster.x[curInd] - 1));
276  r < std::min(int(acluster.x[curInd] + 2), int(theBuffer.rows())) && !stopClus;
277  ++r) {
278  if (theBuffer.energy(r, c) > theHitThreshold) {
279  if (std::abs(theBuffer.time(r, c) - seed_time) >
281  sqrt(theBuffer.time_error(r, c) * theBuffer.time_error(r, c) + seed_time_error * seed_time_error))
282  continue;
283  if ((seed_subdet == GeomDetEnumerators::barrel) && (theBuffer.subDet(r, c) == GeomDetEnumerators::barrel)) {
284  double hit_error_xx = theBuffer.local_error(r, c).xx();
285  double hit_error_yy = theBuffer.local_error(r, c).yy();
286  if (thePositionThreshold > 0) {
287  if (((theBuffer.global_point(r, c) - seedPoint).mag2()) >
289  (hit_error_xx + seed_error_xx + hit_error_yy + seed_error_yy))
290  continue;
291  }
292  }
293  FTLCluster::FTLHitPos newhit(r, c);
294  if (!acluster.add(newhit, theBuffer.energy(r, c), theBuffer.time(r, c), theBuffer.time_error(r, c))) {
295  stopClus = true;
296  break;
297  }
298  theBuffer.clear(newhit);
299  }
300  }
301  }
302  } // while accretion
303 
304  FTLCluster cluster(theCurrentId,
305  acluster.isize,
306  acluster.energy.data(),
307  acluster.time.data(),
308  acluster.timeError.data(),
309  acluster.x.data(),
310  acluster.y.data(),
311  acluster.xmin,
312  acluster.ymin);
313  return cluster;
314 }

References funct::abs(), MTDClusterizerBase::AccretionCluster::add(), GeomDetEnumerators::barrel, HltBtagPostValidation_cff::c, MTDArrayBuffer::clear(), MTDArrayBuffer::columns(), MTDClusterizerBase::AccretionCluster::empty(), MTDArrayBuffer::energy(), MTDClusterizerBase::AccretionCluster::energy, MTDArrayBuffer::global_point(), MTDClusterizerBase::AccretionCluster::isize, MTDArrayBuffer::local_error(), mag2(), SiStripPI::max, min(), MTDClusterizerBase::AccretionCluster::pop(), alignCSCRings::r, MTDArrayBuffer::rows(), mathSSE::sqrt(), MTDArrayBuffer::subDet(), theBuffer, theCurrentId, theHitThreshold, thePositionThreshold, theTimeThreshold, MTDArrayBuffer::time(), MTDClusterizerBase::AccretionCluster::time, MTDArrayBuffer::time_error(), MTDClusterizerBase::AccretionCluster::timeError, MTDClusterizerBase::AccretionCluster::top(), MTDClusterizerBase::AccretionCluster::x, MTDClusterizerBase::AccretionCluster::xmin, geometryCSVtoXML::xx, LocalError::xx(), MTDClusterizerBase::AccretionCluster::y, MTDClusterizerBase::AccretionCluster::ymin, geometryCSVtoXML::yy, and LocalError::yy().

Referenced by clusterize().

◆ setup()

bool MTDThresholdClusterizer::setup ( const MTDGeometry geom,
const MTDTopology topo,
const DetId id 
)
private

Prepare the Clusterizer to work on a particular DetUnit. Re-init the size of the panel/plaquette (so update nrows and ncols),

Definition at line 62 of file MTDThresholdClusterizer.cc.

62  {
63  theCurrentId = id;
64  //using geopraphicalId here
65  const auto& thedet = geom->idToDet(id);
66  if (thedet == nullptr) {
67  throw cms::Exception("MTDThresholdClusterizer")
68  << "GeographicalID: " << std::hex << id.rawId() << " is invalid!" << std::dec << std::endl;
69  return false;
70  }
71  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(thedet->topology());
72  const RectangularMTDTopology& topol = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
73 
74  // Get the new sizes.
75  unsigned int nrows = topol.nrows(); // rows in x
76  unsigned int ncols = topol.ncolumns(); // cols in y
77 
78  theNumOfRows = nrows; // Set new sizes
80 
81  DEBUG("Buffer size [" << theNumOfRows + 1 << "," << theNumOfCols + 1 << "]");
82 
83  if (nrows > theBuffer.rows() || ncols > theBuffer.columns()) { // change only when a larger is needed
84  // Resize the buffer
85  theBuffer.setSize(nrows + 1, ncols + 1); // +1 needed for MTD
86  bufferAlreadySet = true;
87  }
88 
89  return true;
90 }

References bufferAlreadySet, MTDArrayBuffer::columns(), DEBUG, TauDecayModes::dec, Exception, relativeConstraints::geom, triggerObjects_cff::id, hgcalPlots::ncols, RectangularMTDTopology::nrows(), MTDArrayBuffer::rows(), MTDArrayBuffer::setSize(), ProxyMTDTopology::specificTopology(), theBuffer, theCurrentId, theNumOfCols, and theNumOfRows.

Referenced by clusterize().

Member Data Documentation

◆ bufferAlreadySet

bool MTDThresholdClusterizer::bufferAlreadySet
private

Definition at line 83 of file MTDThresholdClusterizer.h.

Referenced by setup().

◆ theBuffer

MTDArrayBuffer MTDThresholdClusterizer::theBuffer
private

Data storage.

Definition at line 82 of file MTDThresholdClusterizer.h.

Referenced by clear_buffer(), clusterize(), copy_to_buffer(), make_cluster(), and setup().

◆ theClusters

std::vector<FTLCluster> MTDThresholdClusterizer::theClusters
private

Definition at line 66 of file MTDThresholdClusterizer.h.

◆ theClusterThreshold

const float MTDThresholdClusterizer::theClusterThreshold
private

Definition at line 71 of file MTDThresholdClusterizer.h.

Referenced by clusterize().

◆ theCurrentId

DetId MTDThresholdClusterizer::theCurrentId
private

Definition at line 79 of file MTDThresholdClusterizer.h.

Referenced by make_cluster(), and setup().

◆ theHitThreshold

const float MTDThresholdClusterizer::theHitThreshold
private

Clustering-related quantities:

Definition at line 69 of file MTDThresholdClusterizer.h.

Referenced by copy_to_buffer(), and make_cluster().

◆ theNumOfCols

int MTDThresholdClusterizer::theNumOfCols
private

Definition at line 77 of file MTDThresholdClusterizer.h.

Referenced by setup().

◆ theNumOfRows

int MTDThresholdClusterizer::theNumOfRows
private

Geometry-related information.

Definition at line 76 of file MTDThresholdClusterizer.h.

Referenced by setup().

◆ thePositionThreshold

const float MTDThresholdClusterizer::thePositionThreshold
private

Definition at line 73 of file MTDThresholdClusterizer.h.

Referenced by make_cluster().

◆ theSeeds

std::vector<FTLCluster::FTLHitPos> MTDThresholdClusterizer::theSeeds
private

Definition at line 65 of file MTDThresholdClusterizer.h.

Referenced by clusterize(), and copy_to_buffer().

◆ theSeedThreshold

const float MTDThresholdClusterizer::theSeedThreshold
private

Definition at line 70 of file MTDThresholdClusterizer.h.

Referenced by clusterize(), and copy_to_buffer().

◆ theTimeThreshold

const float MTDThresholdClusterizer::theTimeThreshold
private

Definition at line 72 of file MTDThresholdClusterizer.h.

Referenced by make_cluster().

Point2DBase
Definition: Point2DBase.h:9
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
hgcalPlots.ncols
ncols
Definition: hgcalPlots.py:105
mps_fire.i
i
Definition: mps_fire.py:428
edm::SortedCollection::const_iterator
std::vector< T >::const_iterator const_iterator
Definition: SortedCollection.h:80
input
static const std::string input
Definition: EdmProvDump.cc:48
MTDArrayBuffer::columns
uint columns() const
Definition: MTDArrayBuffer.h:45
MTDThresholdClusterizer::clear_buffer
void clear_buffer(RecHitIterator itr)
Clear the internal buffer array.
Definition: MTDThresholdClusterizer.cc:194
MTDThresholdClusterizer::copy_to_buffer
void copy_to_buffer(RecHitIterator itr, const MTDGeometry *geom, const MTDTopology *topo)
Copy FTLRecHit into the buffer, identify seeds.
Definition: MTDThresholdClusterizer.cc:199
MTDThresholdClusterizer::theHitThreshold
const float theHitThreshold
Clustering-related quantities:
Definition: MTDThresholdClusterizer.h:69
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
min
T min(T a, T b)
Definition: MathUtil.h:58
FTLCluster
Definition: FTLCluster.h:21
MTDThresholdClusterizer::theSeedThreshold
const float theSeedThreshold
Definition: MTDThresholdClusterizer.h:70
cuy.col
col
Definition: cuy.py:1010
FTLCluster::energy
float energy() const
Definition: FTLCluster.h:150
RectangularMTDTopology::nrows
int nrows() const override
Definition: RectangularMTDTopology.h:165
cms::cuda::assert
assert(be >=bs)
ProxyMTDTopology::specificTopology
virtual const PixelTopology & specificTopology() const
Definition: ProxyMTDTopology.h:89
MTDArrayBuffer::rows
uint rows() const
Definition: MTDArrayBuffer.h:44
ETLDetId
Detector identifier class for the Endcap Timing Layer.
Definition: ETLDetId.h:15
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
MTDThresholdClusterizer::theCurrentId
DetId theCurrentId
Definition: MTDThresholdClusterizer.h:79
FTLCluster::FTLHitPos
Definition: FTLCluster.h:58
MTDTopology::getMTDTopologyMode
int getMTDTopologyMode() const
Definition: MTDTopology.h:73
MTDArrayBuffer::global_point
GlobalPoint global_point(uint row, uint col) const
Definition: MTDArrayBuffer.h:153
DEBUG
#define DEBUG(x)
Definition: MTDThresholdClusterizer.cc:28
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
GeomDetEnumerators::barrel
Definition: GeomDetEnumerators.h:9
FTLCluster::time
float time() const
Definition: FTLCluster.h:131
DetId
Definition: DetId.h:17
BTLDetId
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0,...
Definition: BTLDetId.h:18
LocalError::xx
float xx() const
Definition: LocalError.h:22
MTDThresholdClusterizer::theNumOfCols
int theNumOfCols
Definition: MTDThresholdClusterizer.h:77
MTDThresholdClusterizer::theSeeds
std::vector< FTLCluster::FTLHitPos > theSeeds
Definition: MTDThresholdClusterizer.h:65
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
MTDThresholdClusterizer::theTimeThreshold
const float theTimeThreshold
Definition: MTDThresholdClusterizer.h:72
mps_fire.end
end
Definition: mps_fire.py:242
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
Point3DBase< float, GlobalTag >
BTLRecHitsErrorEstimatorIM
Definition: BTLRecHitsErrorEstimatorIM.h:22
MTDThresholdClusterizer::theClusterThreshold
const float theClusterThreshold
Definition: MTDThresholdClusterizer.h:71
MTDArrayBuffer::time
float time(uint row, uint col) const
Definition: MTDArrayBuffer.h:144
MTDThresholdClusterizer::make_cluster
FTLCluster make_cluster(const FTLCluster::FTLHitPos &hit)
The actual clustering algorithm: group the neighboring hits around the seed.
Definition: MTDThresholdClusterizer.cc:251
MTDDetId::mtdSubDetector
int mtdSubDetector() const
Definition: MTDDetId.h:56
GeomDetEnumerators::invalidLoc
Definition: GeomDetEnumerators.h:9
MTDThresholdClusterizer::theNumOfRows
int theNumOfRows
Geometry-related information.
Definition: MTDThresholdClusterizer.h:76
MTDArrayBuffer::clear
void clear(uint row, uint col)
Definition: MTDArrayBuffer.h:49
geometryCSVtoXML.yy
yy
Definition: geometryCSVtoXML.py:19
MTDThresholdClusterizer::setup
bool setup(const MTDGeometry *geometry, const MTDTopology *topo, const DetId &id)
Definition: MTDThresholdClusterizer.cc:62
MTDTopologyMode::crysLayoutFromTopoMode
BTLDetId::CrysLayout crysLayoutFromTopoMode(const int &topoMode)
Definition: MTDTopologyMode.h:19
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
LocalError
Definition: LocalError.h:12
GeomDetEnumerators::endcap
Definition: GeomDetEnumerators.h:9
MTDArrayBuffer::local_error
LocalError local_error(uint row, uint col) const
Definition: MTDArrayBuffer.h:150
MTDArrayBuffer::energy
float energy(uint row, uint col) const
Definition: MTDArrayBuffer.h:141
MTDThresholdClusterizer::theBuffer
MTDArrayBuffer theBuffer
Data storage.
Definition: MTDThresholdClusterizer.h:82
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
MTDArrayBuffer::setSize
void setSize(uint rows, uint cols)
Definition: MTDArrayBuffer.h:123
mag2
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
Definition: Basic3DVectorLD.h:124
MTDDetId::FastTime
Definition: MTDDetId.h:24
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
itr
std::vector< std::pair< float, float > >::iterator itr
Definition: HGCDigitizer.cc:29
MTDArrayBuffer::set
void set(uint row, uint col, GeomDetEnumerators::Location subDet, float energy, float time, float time_error, const LocalError &local_error, const GlobalPoint &global_point)
Definition: MTDArrayBuffer.h:156
RectangularMTDTopology
Definition: RectangularMTDTopology.h:39
ProxyMTDTopology
Definition: ProxyMTDTopology.h:28
alignCSCRings.r
r
Definition: alignCSCRings.py:93
MTDDetId::BTL
Definition: MTDDetId.h:27
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
GeomDetEnumerators::Location
Location
Definition: GeomDetEnumerators.h:9
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
FTLCluster::size
int size() const
Definition: FTLCluster.h:142
FTLCluster::x
float x() const
Definition: FTLCluster.h:121
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
MTDDetId::ETL
Definition: MTDDetId.h:27
MTDDetId
Detector identifier base class for the MIP Timing Layer.
Definition: MTDDetId.h:21
Exception
Definition: hltDiff.cc:246
FTLCluster::y
float y() const
Definition: FTLCluster.h:126
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
edmNew::DetSetVector::FastFiller
Definition: DetSetVectorNew.h:202
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ntuplemaker.time
time
Definition: ntuplemaker.py:310
MTDDetId::subDetector
SubDetector subDetector() const
Definition: MTDDetId.h:53
MTDArrayBuffer::time_error
float time_error(uint row, uint col) const
Definition: MTDArrayBuffer.h:147
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
LocalError::yy
float yy() const
Definition: LocalError.h:24
geometryCSVtoXML.xx
xx
Definition: geometryCSVtoXML.py:19
MTDThresholdClusterizer::bufferAlreadySet
bool bufferAlreadySet
Definition: MTDThresholdClusterizer.h:83
MTDThresholdClusterizer::thePositionThreshold
const float thePositionThreshold
Definition: MTDThresholdClusterizer.h:73
hit
Definition: SiStripHitEffFromCalibTree.cc:88
MTDArrayBuffer::subDet
GeomDetEnumerators::Location subDet(uint row, uint col) const
Use subDet to identify whether the Hit is in BTL or ETL.
Definition: MTDArrayBuffer.h:136