Go to the documentation of this file.00001
00002 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
00003
00004 SiStripCluster::SiStripCluster( uint32_t detid, const SiStripDigiRange& range) :
00005
00006 detId_(0),
00007 firstStrip_(range.first->strip()),
00008 error_x(-99999.9)
00009 {
00010
00011 amplitudes_.reserve( range.second - range.first);
00012
00013 uint16_t lastStrip=0;
00014 bool firstInloop = true;
00015 for (SiStripDigiIter i=range.first; i!=range.second; i++) {
00016
00018 if (!firstInloop && i->strip() != lastStrip + 1) {
00019 for (int j=0; j < i->strip()-(lastStrip+1); j++) {
00020 amplitudes_.push_back( 0);
00021 }
00022 }
00023 lastStrip = i->strip();
00024 firstInloop = false;
00025
00026 amplitudes_.push_back(i->adc());
00027 }
00028 }
00029
00030 SiStripCluster::SiStripCluster(const uint32_t& detid,
00031 const uint16_t& firstStrip,
00032 std::vector<uint16_t>::const_iterator begin,
00033 std::vector<uint16_t>::const_iterator end) :
00034
00035
00036 detId_(0),
00037 firstStrip_(firstStrip),
00038 amplitudes_(begin,end),
00039
00040
00041
00042
00043
00044
00045 error_x(-99999.9)
00046 {}
00047
00048 float SiStripCluster::barycenter() const{
00049 int sumx = 0;
00050 int suma = 0;
00051 size_t asize = amplitudes_.size();
00052 for (size_t i=0;i<asize;++i) {
00053 sumx += (firstStrip_+i)*(amplitudes_[i]);
00054 suma += amplitudes_[i];
00055 }
00056
00057
00058
00059 return sumx / static_cast<float>(suma) + 0.5;
00060 }