Skip to content

Commit

Permalink
Merge pull request #27140 from cms-sw/code-format-reconstruction-b49911
Browse files Browse the repository at this point in the history
Running code-format for reconstruction
  • Loading branch information
cmsbuild committed Jun 8, 2019
2 parents fe0e82d + 75d41be commit b1ffe56
Show file tree
Hide file tree
Showing 63 changed files with 7,549 additions and 7,508 deletions.
74 changes: 34 additions & 40 deletions DataFormats/SiStripCluster/interface/SiStripCluster.h
Expand Up @@ -6,39 +6,36 @@
#include <numeric>
#include "FWCore/MessageLogger/interface/MessageLogger.h"

class SiStripCluster {
class SiStripCluster {
public:
typedef std::vector<SiStripDigi>::const_iterator SiStripDigiIter;
typedef std::pair<SiStripDigiIter, SiStripDigiIter> SiStripDigiRange;

typedef std::vector<SiStripDigi>::const_iterator SiStripDigiIter;
typedef std::pair<SiStripDigiIter,SiStripDigiIter> SiStripDigiRange;

static const uint16_t stripIndexMask = 0x7FFF; // The first strip index is in the low 15 bits of firstStrip_
static const uint16_t stripIndexMask = 0x7FFF; // The first strip index is in the low 15 bits of firstStrip_
static const uint16_t mergedValueMask = 0x8000; // The merged state is given by the high bit of firstStrip_


/** Construct from a range of digis that form a cluster and from
* a DetID. The range is assumed to be non-empty.
*/

SiStripCluster() {}

explicit SiStripCluster(const SiStripDigiRange& range);

template<typename Iter>
SiStripCluster(const uint16_t& firstStrip,
Iter begin, Iter end ):
amplitudes_(begin,end), firstStrip_(firstStrip) {}
template <typename Iter>
SiStripCluster(const uint16_t& firstStrip, Iter begin, Iter end) : amplitudes_(begin, end), firstStrip_(firstStrip) {}

template<typename Iter>
SiStripCluster(const uint16_t& firstStrip, Iter begin, Iter end, bool merged):
amplitudes_(begin,end), firstStrip_(firstStrip) {
if (merged) firstStrip_ |= mergedValueMask; // if this is a candidate merged cluster
}
template <typename Iter>
SiStripCluster(const uint16_t& firstStrip, Iter begin, Iter end, bool merged)
: amplitudes_(begin, end), firstStrip_(firstStrip) {
if (merged)
firstStrip_ |= mergedValueMask; // if this is a candidate merged cluster
}

/** The number of the first strip in the cluster.
* The high bit of firstStrip_ indicates whether the cluster is a candidate for being merged.
*/
uint16_t firstStrip() const {return firstStrip_ & stripIndexMask;}
uint16_t firstStrip() const { return firstStrip_ & stripIndexMask; }

/** The amplitudes of the strips forming the cluster.
* The amplitudes are on consecutive strips; if a strip is missing
Expand All @@ -51,7 +48,7 @@ class SiStripCluster {
* You can find the special meanings of values { 0, 254, 255} in section 3.4.1 of
* http://www.te.rl.ac.uk/esdg/cms-fed/firmware/Documents/FE_FPGA_Technical_Description.pdf
*/
const std::vector<uint8_t>& amplitudes() const {return amplitudes_;}
const std::vector<uint8_t>& amplitudes() const { return amplitudes_; }

/** The barycenter of the cluster, not corrected for Lorentz shift;
* should not be used as position estimate for tracking.
Expand All @@ -61,31 +58,29 @@ class SiStripCluster {
/** total charge
*
*/
int charge() const { return std::accumulate(amplitudes().begin(), amplitudes().end(), int(0)); }
int charge() const { return std::accumulate(amplitudes().begin(), amplitudes().end(), int(0)); }

/** Test (set) the merged status of the cluster
*
*/
bool isMerged() const {return (firstStrip_ & mergedValueMask) != 0;}
void setMerged(bool mergedState) {mergedState ? firstStrip_ |= mergedValueMask : firstStrip_ &= stripIndexMask;}

float getSplitClusterError () const { return error_x; }
void setSplitClusterError ( float errx ) { error_x = errx; }
bool isMerged() const { return (firstStrip_ & mergedValueMask) != 0; }
void setMerged(bool mergedState) { mergedState ? firstStrip_ |= mergedValueMask : firstStrip_ &= stripIndexMask; }

float getSplitClusterError() const { return error_x; }
void setSplitClusterError(float errx) { error_x = errx; }

private:
std::vector<uint8_t> amplitudes_;

std::vector<uint8_t> amplitudes_;

uint16_t firstStrip_ = 0;
uint16_t firstStrip_ = 0;

// ggiurgiu@fnal.gov, 01/05/12
// Add cluster errors to be used by rechits from split clusters.
// A rechit from a split cluster has larger errors than rechits from normal clusters.
// However, when presented with a cluster, the CPE does not know if the cluster comes
// from a splitting procedure or not. That's why we have to instruct the CPE to use
// Add cluster errors to be used by rechits from split clusters.
// A rechit from a split cluster has larger errors than rechits from normal clusters.
// However, when presented with a cluster, the CPE does not know if the cluster comes
// from a splitting procedure or not. That's why we have to instruct the CPE to use
// appropriate errors for split clusters.
// To avoid increase of data size on disk,these new data members are set as transient in:
// To avoid increase of data size on disk,these new data members are set as transient in:
// DataFormats/SiStripCluster/src/classes_def.xml
float error_x = -99999.9;

Expand All @@ -94,19 +89,18 @@ class SiStripCluster {
// 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.

};

// Comparison operators
inline bool operator<( const SiStripCluster& one, const SiStripCluster& other) {
return one.firstStrip() < other.firstStrip();
}
inline bool operator<(const SiStripCluster& one, const SiStripCluster& other) {
return one.firstStrip() < other.firstStrip();
}

inline bool operator<(const SiStripCluster& cluster, const uint16_t& firstStrip) {
return cluster.firstStrip() < firstStrip;
}
}

inline bool operator<(const uint16_t& firstStrip,const SiStripCluster& cluster) {
inline bool operator<(const uint16_t& firstStrip, const SiStripCluster& cluster) {
return firstStrip < cluster.firstStrip();
}
#endif // DATAFORMATS_SISTRIPCLUSTER_H
}
#endif // DATAFORMATS_SISTRIPCLUSTER_H
@@ -1,5 +1,3 @@
#ifndef DATAFORMATS_SISTRIPCLUSTERCOLLECTION_H
#define DATAFORMATS_SISTRIPCLUSTERCOLLECTION_H
#endif //


#endif //
66 changes: 31 additions & 35 deletions DataFormats/SiStripCluster/interface/SiStripClusterTools.h
Expand Up @@ -4,56 +4,52 @@
#include "DataFormats/TrajectoryState/interface/LocalTrajectoryParameters.h"
#include "DataFormats/SiStripDetId/interface/SiStripDetId.h"

#include<numeric>
#include <numeric>

namespace siStripClusterTools {

// to be moved and optimized in TrackerCommon when TrackerTopology will support moduleGeometry
inline float sensorThicknessInverse (DetId detid)
{
if (detid.subdetId()>=SiStripDetId::TIB) {
SiStripDetId siStripDetId = detid();
if (siStripDetId.subdetId()==SiStripDetId::TOB) return 1.f/0.047f;
if (siStripDetId.moduleGeometry()==SiStripModuleGeometry::W5 || siStripDetId.moduleGeometry()==SiStripModuleGeometry::W6 ||
siStripDetId.moduleGeometry()==SiStripModuleGeometry::W7)
return 1.f/0.047f;
return 1.f/0.029f; // so it is TEC ring 1-4 or TIB or TOB;
} else if (detid.subdetId()==1) return 1.f/0.0285f;
else return 1.f/0.027f;
inline float sensorThicknessInverse(DetId detid) {
if (detid.subdetId() >= SiStripDetId::TIB) {
SiStripDetId siStripDetId = detid();
if (siStripDetId.subdetId() == SiStripDetId::TOB)
return 1.f / 0.047f;
if (siStripDetId.moduleGeometry() == SiStripModuleGeometry::W5 ||
siStripDetId.moduleGeometry() == SiStripModuleGeometry::W6 ||
siStripDetId.moduleGeometry() == SiStripModuleGeometry::W7)
return 1.f / 0.047f;
return 1.f / 0.029f; // so it is TEC ring 1-4 or TIB or TOB;
} else if (detid.subdetId() == 1)
return 1.f / 0.0285f;
else
return 1.f / 0.027f;
}


template<typename Iter>
template <typename Iter>
inline float chargePerCM(DetId detid, Iter a, Iter b) {
return float(std::accumulate(a,b,int(0)))*sensorThicknessInverse(detid);
return float(std::accumulate(a, b, int(0))) * sensorThicknessInverse(detid);
}

template<typename Clus>
inline float chargePerCM(DetId detid, Clus const & cl) {
return cl.charge()*sensorThicknessInverse(detid);
template <typename Clus>
inline float chargePerCM(DetId detid, Clus const& cl) {
return cl.charge() * sensorThicknessInverse(detid);
}


template<typename Clus>
inline float chargePerCM(DetId detid, Clus const & cl, LocalTrajectoryParameters const & tp) {
return chargePerCM(detid,cl)*tp.absdz();
template <typename Clus>
inline float chargePerCM(DetId detid, Clus const& cl, LocalTrajectoryParameters const& tp) {
return chargePerCM(detid, cl) * tp.absdz();
}

template<typename Clus>
inline float chargePerCM(Clus const & cl, LocalTrajectoryParameters const & tp, float invThick) {
return cl.charge()*invThick*tp.absdz();
template <typename Clus>
inline float chargePerCM(Clus const& cl, LocalTrajectoryParameters const& tp, float invThick) {
return cl.charge() * invThick * tp.absdz();
}


template<typename Clus>
inline float chargePerCM(DetId detid, Clus const & cl, const LocalVector & ldir) {
return chargePerCM(detid,cl)*std::abs(ldir.z())/ldir.mag();
template <typename Clus>
inline float chargePerCM(DetId detid, Clus const& cl, const LocalVector& ldir) {
return chargePerCM(detid, cl) * std::abs(ldir.z()) / ldir.mag();
}

} // namespace siStripClusterTools


}


#endif // DataFormatsSiStripClusterSiStripClusterTools_H

#endif // DataFormatsSiStripClusterSiStripClusterTools_H
30 changes: 12 additions & 18 deletions DataFormats/SiStripCluster/src/SiStripCluster.cc
@@ -1,40 +1,34 @@

#include "DataFormats/SiStripCluster/interface/SiStripCluster.h"

SiStripCluster::SiStripCluster(const SiStripDigiRange& range) :
firstStrip_(range.first->strip()),
error_x(-99999.9)
{
SiStripCluster::SiStripCluster(const SiStripDigiRange& range) : firstStrip_(range.first->strip()), error_x(-99999.9) {
amplitudes_.reserve(range.second - range.first);

amplitudes_.reserve( range.second - range.first);

uint16_t lastStrip=0;
uint16_t lastStrip = 0;
bool firstInloop = true;
for (SiStripDigiIter i=range.first; i!=range.second; i++) {

for (SiStripDigiIter i = range.first; i != range.second; i++) {
/// check if digis consecutive
if (!firstInloop && i->strip() != lastStrip + 1) {
for (int j=0; j < i->strip()-(lastStrip+1); j++) {
amplitudes_.push_back( 0);
for (int j = 0; j < i->strip() - (lastStrip + 1); j++) {
amplitudes_.push_back(0);
}
}
lastStrip = i->strip();
firstInloop = false;
amplitudes_.push_back(i->adc());

amplitudes_.push_back(i->adc());
}
}


float SiStripCluster::barycenter() const{
float SiStripCluster::barycenter() const {
int sumx = 0;
int suma = 0;
auto asize = amplitudes_.size();
for (auto i=0U;i<asize;++i) {
sumx += i*amplitudes_[i];
for (auto i = 0U; i < asize; ++i) {
sumx += 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.
// Need to mask off the high bit of firstStrip_, which contains the merged status.
Expand Down
4 changes: 1 addition & 3 deletions DataFormats/SiStripCluster/src/classes.h
Expand Up @@ -7,6 +7,4 @@
#include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
#include "DataFormats/Common/interface/ContainerMask.h"



#endif // SISTRIPCLUSTER_CLASSES_H
#endif // SISTRIPCLUSTER_CLASSES_H

0 comments on commit b1ffe56

Please sign in to comment.