CMS 3D CMS Logo

Public Types | Public Member Functions | Private Attributes

SiStripCluster Class Reference

#include <SiStripCluster.h>

List of all members.

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_

Detailed Description

Definition at line 9 of file SiStripCluster.h.


Member Typedef Documentation

typedef std::vector<SiStripDigi>::const_iterator SiStripCluster::SiStripDigiIter

Definition at line 12 of file SiStripCluster.h.

Definition at line 13 of file SiStripCluster.h.


Constructor & Destructor Documentation

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.

: detId_(0), error_x( -99999.9 ) {}
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)
{}

Member Function Documentation

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]
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]

Definition at line 40 of file SiStripCluster.h.

References detId_.

{ detId_=id; }
void SiStripCluster::setSplitClusterError ( float  errx) [inline]

Definition at line 61 of file SiStripCluster.h.

References error_x.

Referenced by TrackClusterSplitter::splitCluster().

{ error_x = errx; }

Member Data Documentation

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().