#include <SiStripCluster.h>
Public Types | |
typedef std::vector < SiStripDigi > ::const_iterator | SiStripDigiIter |
typedef std::pair < SiStripDigiIter, SiStripDigiIter > | SiStripDigiRange |
Public Member Functions | |
const std::vector< uint8_t > & | amplitudes () const |
float | barycenter () const |
uint16_t | firstStrip () const |
uint32_t | geographicalId () const |
float | getSplitClusterError () const |
void | setId (uint32_t id) |
void | setSplitClusterError (float errx) |
SiStripCluster (uint32_t detid, const SiStripDigiRange &range) | |
SiStripCluster (const uint32_t &detid, const uint16_t &firstStrip, std::vector< uint16_t >::const_iterator begin, std::vector< uint16_t >::const_iterator end) | |
SiStripCluster () | |
Private Attributes | |
std::vector< uint8_t > | amplitudes_ |
uint32_t | detId_ |
float | error_x |
uint16_t | firstStrip_ |
Definition at line 9 of file SiStripCluster.h.
typedef std::vector<SiStripDigi>::const_iterator SiStripCluster::SiStripDigiIter |
Definition at line 12 of file SiStripCluster.h.
typedef std::pair<SiStripDigiIter,SiStripDigiIter> SiStripCluster::SiStripDigiRange |
Definition at line 13 of file SiStripCluster.h.
SiStripCluster::SiStripCluster | ( | ) | [inline] |
Construct from a range of digis that form a cluster and from a DetID. The range is assumed to be non-empty.
Definition at line 19 of file SiStripCluster.h.
SiStripCluster::SiStripCluster | ( | uint32_t | detid, |
const SiStripDigiRange & | range | ||
) |
check if digis consecutive
Definition at line 4 of file SiStripCluster.cc.
References amplitudes_, i, and j.
: //detId_(detid), detId_(0), firstStrip_(range.first->strip()), error_x(-99999.9) { amplitudes_.reserve( range.second - range.first); uint16_t lastStrip=0; bool firstInloop = true; for (SiStripDigiIter i=range.first; i!=range.second; i++) { if (!firstInloop && i->strip() != lastStrip + 1) { for (int j=0; j < i->strip()-(lastStrip+1); j++) { amplitudes_.push_back( 0); } } lastStrip = i->strip(); firstInloop = false; amplitudes_.push_back(i->adc()); } }
SiStripCluster::SiStripCluster | ( | const uint32_t & | detid, |
const uint16_t & | firstStrip, | ||
std::vector< uint16_t >::const_iterator | begin, | ||
std::vector< uint16_t >::const_iterator | end | ||
) |
Definition at line 30 of file SiStripCluster.cc.
: // detId_(detid), detId_(0), firstStrip_(firstStrip), amplitudes_(begin,end), // ggiurgiu@fnal.gov, 01/05/12 // Initialize the split cluster errors to un-physical values. // The CPE will check these errors and if they are not un-physical, // it will recognize the clusters as split and assign these (increased) // errors to the corresponding rechit. error_x(-99999.9) {}
const std::vector<uint8_t>& SiStripCluster::amplitudes | ( | ) | const [inline] |
The amplitudes of the strips forming the cluster. The amplitudes are on consecutive strips; if a strip is missing the amplitude is set to zero. A strip may be missing in the middle of a cluster because of a clusterizer that accepts holes. A strip may also be missing anywhere in the cluster, including the edge, to record a dead/noisy channel.
You can find the special meanings of values { 0, 254, 255} in section 3.4.1 of https://www.te.rl.ac.uk/esdg/cms-fed/firmware/Documents/FE_FPGA_Technical_Description.pdf
Definition at line 53 of file SiStripCluster.h.
References amplitudes_.
Referenced by TrackerHitAssociator::associateSimpleRecHitCluster(), SimpleCosmicBONSeeder::checkCharge(), DeDxDiscriminatorProducer::ClusterSaturatingStrip(), ClusterVariables::clusterSize(), SiStripGainFromData::ComputeChargeOverPath(), DeDxEstimatorProducer::getCharge(), DeDxDiscriminatorProducer::GetProbability(), ClusterShapeHitFilter::getSizes(), StMeasurementDetSet::isMasked(), SiStripRecHitConverterAlgorithm::isMasked(), CalibrationTrackSelector::isOkCharge(), DeDxDiscriminatorLearner::Learn(), StripCPEgeometric::localParameters(), StripCPEfromTemplate::localParameters(), StripCPEfromTrackAngle::localParameters(), PrintRecoObjects::print(), ShallowGainCalibration::produce(), jptJetAnalysis::StripSignalOverNoiseCalculator::signalOverNoise(), TrackClusterSplitter::splitCluster(), SiStripClusterInfo::stripCharges(), ClusterVariables::stripCharges(), and SiStripClusterInfo::width().
{return amplitudes_;}
float SiStripCluster::barycenter | ( | ) | const |
The barycenter of the cluster, not corrected for Lorentz shift; should not be used as position estimate for tracking.
Definition at line 48 of file SiStripCluster.cc.
References amplitudes_, firstStrip_, and i.
Referenced by SiStripClusterInfo::baryStrip(), SiStripFineDelayHit::closestCluster(), StMeasurementDetSet::isMasked(), SiStripRecHitConverterAlgorithm::isMasked(), StripCPEfromTemplate::localParameters(), StripCPE::localParameters(), StripCPEfromTrackAngle::localParameters(), StripClusterAboveU::operator()(), PrintRecoObjects::print(), and TrackClusterSplitter::splitCluster().
{ int sumx = 0; int suma = 0; size_t asize = amplitudes_.size(); for (size_t i=0;i<asize;++i) { sumx += (firstStrip_+i)*(amplitudes_[i]); suma += amplitudes_[i]; } // strip centers are offcet by half pitch w.r.t. strip numbers, // so one has to add 0.5 to get the correct barycenter position return sumx / static_cast<float>(suma) + 0.5; }
uint16_t SiStripCluster::firstStrip | ( | ) | const [inline] |
The number of the first strip in the cluster
Definition at line 30 of file SiStripCluster.h.
References firstStrip_.
Referenced by fireworks::addSiStripClusters(), TrackerHitAssociator::associateSimpleRecHitCluster(), SimpleCosmicBONSeeder::checkCharge(), SiStripGainFromData::ComputeChargeOverPath(), SiStripClusterInfo::firstStrip(), ClusterShapeHitFilter::getSizes(), StMeasurementDetSet::isMasked(), SiStripRecHitConverterAlgorithm::isMasked(), DeDxDiscriminatorLearner::Learn(), StripCPEgeometric::localParameters(), FastStripCPE::localParameters(), StripCPEfromTemplate::localParameters(), shallow::make_cluster_map(), operator<(), PrintRecoObjects::print(), ShallowTrackClustersProducer::produce(), ShallowGainCalibration::produce(), jptJetAnalysis::StripSignalOverNoiseCalculator::signalOverNoise(), and TrackClusterSplitter::splitCluster().
{return firstStrip_;}
uint32_t SiStripCluster::geographicalId | ( | ) | const [inline] |
The geographical ID of the corresponding DetUnit, to be used for transformations to local and to global reference frames etc.
Definition at line 36 of file SiStripCluster.h.
References detId_.
Referenced by SiStripGainFromData::ComputeChargeOverPath(), DeDxDiscriminatorLearner::Learn(), FastStripCPE::localParameters(), and operator<().
{ if (detId_==0) edm::LogError("Deprecation")<<"this method will give zero offline"; return detId_; }
float SiStripCluster::getSplitClusterError | ( | ) | const [inline] |
Definition at line 60 of file SiStripCluster.h.
References error_x.
Referenced by StripCPEfromTemplate::localParameters().
{ return error_x; }
void SiStripCluster::setId | ( | uint32_t | id | ) | [inline] |
void SiStripCluster::setSplitClusterError | ( | float | errx | ) | [inline] |
Definition at line 61 of file SiStripCluster.h.
References error_x.
Referenced by TrackClusterSplitter::splitCluster().
{ error_x = errx; }
std::vector<uint8_t> SiStripCluster::amplitudes_ [private] |
Definition at line 69 of file SiStripCluster.h.
Referenced by amplitudes(), barycenter(), and SiStripCluster().
uint32_t SiStripCluster::detId_ [private] |
Definition at line 66 of file SiStripCluster.h.
Referenced by geographicalId(), and setId().
float SiStripCluster::error_x [private] |
Definition at line 79 of file SiStripCluster.h.
Referenced by getSplitClusterError(), and setSplitClusterError().
uint16_t SiStripCluster::firstStrip_ [private] |
Definition at line 67 of file SiStripCluster.h.
Referenced by barycenter(), and firstStrip().