diff --git a/DataFormats/SiStripCluster/interface/SiStripApproximateClusterCollection_v1.h b/DataFormats/SiStripCluster/interface/SiStripApproximateClusterCollection_v1.h index fd34956f3511c..5a5abd0c61898 100644 --- a/DataFormats/SiStripCluster/interface/SiStripApproximateClusterCollection_v1.h +++ b/DataFormats/SiStripCluster/interface/SiStripApproximateClusterCollection_v1.h @@ -19,19 +19,19 @@ namespace v1 { // Helper classes to make creation and iteration easier class Filler { public: - void push_back(SiStripApproximateCluster_v1 const& cluster) { clusters_.push_back(cluster); } + void push_back(v1::SiStripApproximateCluster const& cluster) { clusters_.push_back(cluster); } private: friend SiStripApproximateClusterCollection; - Filler(std::vector& clusters) : clusters_(clusters) {} + Filler(std::vector& clusters) : clusters_(clusters) {} - std::vector& clusters_; + std::vector& clusters_; }; class const_iterator; class DetSet { public: - using const_iterator = std::vector::const_iterator; + using const_iterator = std::vector::const_iterator; unsigned int id() const { return std::accumulate(coll_->detIds_.cbegin(), coll_->detIds_.cbegin() + detIndex_ + 1, 0); @@ -101,7 +101,7 @@ namespace v1 { // element of beginIndices_ points to the first cluster of the Det // in clusters_. std::vector detIds_; // DetId for the Det - std::vector clusters_; + std::vector clusters_; }; } // namespace v1 #endif diff --git a/DataFormats/SiStripCluster/interface/SiStripApproximateCluster_v1.h b/DataFormats/SiStripCluster/interface/SiStripApproximateCluster_v1.h index c3a86f45c1e0f..294cd3fbb860c 100644 --- a/DataFormats/SiStripCluster/interface/SiStripApproximateCluster_v1.h +++ b/DataFormats/SiStripCluster/interface/SiStripApproximateCluster_v1.h @@ -5,63 +5,66 @@ #include "assert.h" class SiStripCluster; -class SiStripApproximateCluster_v1 { -public: - SiStripApproximateCluster_v1() {} - explicit SiStripApproximateCluster_v1(cms_uint16_t compBarycenter, cms_uint8_t width, cms_uint8_t compavgCharge) - : compBarycenter_(compBarycenter), width_(width), compavgCharge_(compavgCharge) {} +namespace v1 { + class SiStripApproximateCluster { + public: + SiStripApproximateCluster() {} - explicit SiStripApproximateCluster_v1(const SiStripCluster& cluster, - unsigned int maxNSat, - float hitPredPos, - float& previous_cluster, - unsigned int& module_length, - unsigned int& previous_module_length, - bool peakFilter); + explicit SiStripApproximateCluster(cms_uint16_t compBarycenter, cms_uint8_t width, cms_uint8_t compavgCharge) + : compBarycenter_(compBarycenter), width_(width), compavgCharge_(compavgCharge) {} - const cms_uint16_t compBarycenter() const { return compBarycenter_; } + explicit SiStripApproximateCluster(const SiStripCluster& cluster, + unsigned int maxNSat, + float hitPredPos, + float& previous_cluster, + unsigned int& module_length, + unsigned int& previous_module_length, + bool peakFilter); - float barycenter(float previous_barycenter = 0, - unsigned int module_length = 0, - unsigned int previous_module_length = 0) const { - float _barycenter; - cms_uint16_t compBarycenter = (compBarycenter_ & 0x7FFF); - if (previous_barycenter == -999) - _barycenter = compBarycenter * maxBarycenter_ / maxRange_; - else { - _barycenter = ((compBarycenter * maxBarycenter_ / maxRange_) - (module_length - previous_module_length)) + - previous_barycenter; + const cms_uint16_t compBarycenter() const { return compBarycenter_; } + + float barycenter(float previous_barycenter = 0, + unsigned int module_length = 0, + unsigned int previous_module_length = 0) const { + float barycenter; + cms_uint16_t compBarycenter = (compBarycenter_ & 0x7FFF); + if (previous_barycenter == -999) + barycenter = compBarycenter * maxBarycenter_ / maxRange_; + else { + barycenter = ((compBarycenter * maxBarycenter_ / maxRange_) - (module_length - previous_module_length)) + + previous_barycenter; + } + assert(barycenter <= maxBarycenter_ && "Returning barycenter > maxBarycenter"); + return barycenter; + } + cms_uint8_t width() const { return width_; } + float avgCharge() const { + cms_uint8_t compavgCharge = (compavgCharge_ & 0x3F); + float avgCharge_ = compavgCharge * maxavgCharge_ / maxavgChargeRange_; + assert(avgCharge_ <= maxavgCharge_ && "Returning avgCharge > maxavgCharge"); + return avgCharge_; } - assert(_barycenter <= maxBarycenter_ && "Returning barycenter > maxBarycenter"); - return _barycenter; - } - cms_uint8_t width() const { return width_; } - float avgCharge() const { - cms_uint8_t compavgCharge = (compavgCharge_ & 0x3F); - float avgCharge_ = compavgCharge * maxavgCharge_ / maxavgChargeRange_; - assert(avgCharge_ <= maxavgCharge_ && "Returning avgCharge > maxavgCharge"); - return avgCharge_; - } - bool filter() const { return (compavgCharge_ & (1 << kfilterMask)); } - bool isSaturated() const { return (compavgCharge_ & (1 << kSaturatedMask)); } - bool peakFilter() const { return (compBarycenter_ & (1 << kpeakFilterMask)); } + bool filter() const { return (compavgCharge_ & (1 << kfilterMask)); } + bool isSaturated() const { return (compavgCharge_ & (1 << kSaturatedMask)); } + bool peakFilter() const { return (compBarycenter_ & (1 << kpeakFilterMask)); } -private: - cms_uint16_t compBarycenter_ = 0; - cms_uint8_t width_ = 0; - cms_uint8_t compavgCharge_ = 0; - static constexpr double maxRange_ = 32767; - static constexpr double maxBarycenter_ = 1536.; - static constexpr double maxavgChargeRange_ = 63; - static constexpr double maxavgCharge_ = 255.; - static constexpr double trimMaxADC_ = 30.; - static constexpr double trimMaxFracTotal_ = .15; - static constexpr double trimMaxFracNeigh_ = .25; - static constexpr double maxTrimmedSizeDiffNeg_ = .7; - static constexpr double maxTrimmedSizeDiffPos_ = 1.; - static constexpr int kfilterMask = 6; - static constexpr int kpeakFilterMask = 7; - static constexpr int kSaturatedMask = 15; -}; -#endif // DataFormats_SiStripCluster_SiStripApproximateCluster_v1_h + private: + cms_uint16_t compBarycenter_ = 0; + cms_uint8_t width_ = 0; + cms_uint8_t compavgCharge_ = 0; + static constexpr double maxRange_ = 32767; + static constexpr double maxBarycenter_ = 1536.; + static constexpr double maxavgChargeRange_ = 63; + static constexpr double maxavgCharge_ = 255.; + static constexpr double trimMaxADC_ = 30.; + static constexpr double trimMaxFracTotal_ = .15; + static constexpr double trimMaxFracNeigh_ = .25; + static constexpr double maxTrimmedSizeDiffNeg_ = .7; + static constexpr double maxTrimmedSizeDiffPos_ = 1.; + static constexpr int kfilterMask = 6; + static constexpr int kpeakFilterMask = 7; + static constexpr int kSaturatedMask = 15; + }; +} // namespace v1 +#endif // DataFormats_SiStripCluster_SiStripApproximateCluster_h diff --git a/DataFormats/SiStripCluster/interface/SiStripCluster.h b/DataFormats/SiStripCluster/interface/SiStripCluster.h index 4ad2c4c0e9835..245fcdaa25969 100644 --- a/DataFormats/SiStripCluster/interface/SiStripCluster.h +++ b/DataFormats/SiStripCluster/interface/SiStripCluster.h @@ -8,8 +8,6 @@ #include #include -class SiStripApproximateCluster; - class SiStripCluster { public: typedef std::vector::const_iterator SiStripDigiIter; @@ -46,7 +44,7 @@ class SiStripCluster { } SiStripCluster(const SiStripApproximateCluster cluster, const uint16_t maxStrips); - SiStripCluster(const SiStripApproximateCluster_v1 cluster, + SiStripCluster(const v1::SiStripApproximateCluster cluster, const uint16_t maxStrips, float pc = -999, unsigned int module_length = 0, diff --git a/DataFormats/SiStripCluster/src/SiStripApproximateCluster_v1.cc b/DataFormats/SiStripCluster/src/SiStripApproximateCluster_v1.cc index 5d0ccf6acd95d..85187e8f303dc 100644 --- a/DataFormats/SiStripCluster/src/SiStripApproximateCluster_v1.cc +++ b/DataFormats/SiStripCluster/src/SiStripApproximateCluster_v1.cc @@ -3,14 +3,13 @@ #include #include #include - -SiStripApproximateCluster_v1::SiStripApproximateCluster_v1(const SiStripCluster& cluster, - unsigned int maxNSat, - float hitPredPos, - float& previous_cluster, - unsigned int& module_length, - unsigned int& previous_module_length, - bool peakFilter) { +v1::SiStripApproximateCluster::SiStripApproximateCluster(const SiStripCluster& cluster, + unsigned int maxNSat, + float hitPredPos, + float& previous_cluster, + unsigned int& module_length, + unsigned int& previous_module_length, + bool peakFilter) { bool filter_, isSaturated_, peakFilter_; if (previous_cluster == -999.) compBarycenter_ = std::round(cluster.barycenter() * maxRange_ / maxBarycenter_); diff --git a/DataFormats/SiStripCluster/src/SiStripCluster.cc b/DataFormats/SiStripCluster/src/SiStripCluster.cc index 7bd3b7d99ccf5..15517b4c0457f 100644 --- a/DataFormats/SiStripCluster/src/SiStripCluster.cc +++ b/DataFormats/SiStripCluster/src/SiStripCluster.cc @@ -40,7 +40,7 @@ SiStripCluster::SiStripCluster(const SiStripApproximateCluster cluster, const ui firstStrip_ |= approximateMask; } -SiStripCluster::SiStripCluster(const SiStripApproximateCluster_v1 cluster, +SiStripCluster::SiStripCluster(const v1::SiStripApproximateCluster cluster, const uint16_t maxStrips, float p_bc, unsigned int module_length, diff --git a/DataFormats/SiStripCluster/src/classes_def.xml b/DataFormats/SiStripCluster/src/classes_def.xml index 6dba926661a92..ceeb869ab8ccf 100755 --- a/DataFormats/SiStripCluster/src/classes_def.xml +++ b/DataFormats/SiStripCluster/src/classes_def.xml @@ -61,34 +61,36 @@ - - + + + - - + + + - - + + - + - + - - + + - - - + + + diff --git a/RecoLocalTracker/SiStripClusterizer/plugins/SiStripApprox2Clusters.cc b/RecoLocalTracker/SiStripClusterizer/plugins/SiStripApprox2Clusters.cc index d9f5b836a11c2..1d6450c49694d 100644 --- a/RecoLocalTracker/SiStripClusterizer/plugins/SiStripApprox2Clusters.cc +++ b/RecoLocalTracker/SiStripClusterizer/plugins/SiStripApprox2Clusters.cc @@ -34,10 +34,13 @@ class SiStripApprox2Clusters : public edm::global::EDProducer<> { }; SiStripApprox2Clusters::SiStripApprox2Clusters(const edm::ParameterSet& conf) { - clusterToken_ = consumes(conf.getParameter("inputApproxClusters")); - clusterToken_v1_ = consumes(conf.getParameter("inputApproxClusters")); tkGeomToken_ = esConsumes(); v1 = conf.getParameter("v1"); + if (v1) { + clusterToken_v1_ = consumes(conf.getParameter("inputApproxClusters")); + } else { + clusterToken_ = consumes(conf.getParameter("inputApproxClusters")); + } produces>(); } @@ -47,7 +50,7 @@ void SiStripApprox2Clusters::produce(edm::StreamID id, edm::Event& event, const const auto& tkGeom = &iSetup.getData(tkGeomToken_); const auto& tkDets = tkGeom->dets(); - if (!v1) { + if (clusterToken_v1_.isUninitialized()) { const auto& clusterCollection = event.get(clusterToken_); for (const auto& detClusters : clusterCollection) { edmNew::DetSetVector::FastFiller ff{*result, detClusters.id()}; diff --git a/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusters2ApproxClusters_v1.cc b/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusters2ApproxClusters_v1.cc index 91ae78af95ae7..5442a54cdc3a5 100644 --- a/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusters2ApproxClusters_v1.cc +++ b/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusters2ApproxClusters_v1.cc @@ -153,13 +153,13 @@ void SiStripClusters2ApproxClusters_v1::produce(edm::Event& event, edm::EventSet bool isTrivial = (std::abs(hitPredPos) < 2.f && hitStrips <= 2); if (!usable || isTrivial) { - ff.push_back(SiStripApproximateCluster_v1(cluster, - maxNSat, - hitPredPos, - previous_cluster, - module_length, - first_cluster ? previous_module_length : module_length, - true)); + ff.push_back(v1::SiStripApproximateCluster(cluster, + maxNSat, + hitPredPos, + previous_cluster, + module_length, + first_cluster ? previous_module_length : module_length, + true)); } else { bool peakFilter = false; SlidingPeakFinder pf(std::max(2, std::ceil(std::abs(hitPredPos) + subclusterWindow_))); @@ -174,13 +174,13 @@ void SiStripClusters2ApproxClusters_v1::produce(edm::Event& event, edm::EventSet subclusterCutSN_); peakFilter = pf.apply(cluster.amplitudes(), test); - ff.push_back(SiStripApproximateCluster_v1(cluster, - maxNSat, - hitPredPos, - previous_cluster, - module_length, - first_cluster ? previous_module_length : module_length, - peakFilter)); + ff.push_back(v1::SiStripApproximateCluster(cluster, + maxNSat, + hitPredPos, + previous_cluster, + module_length, + first_cluster ? previous_module_length : module_length, + peakFilter)); } first_cluster = false; }