File indexing completed on 2024-04-06 12:02:39
0001 #ifndef SiStripDetSummary_h
0002 #define SiStripDetSummary_h
0003
0004 #include "DataFormats/DetId/interface/DetId.h"
0005 class TrackerTopology;
0006
0007 #include <sstream>
0008 #include <map>
0009 #include <cmath>
0010 #include <iomanip>
0011 #include <iostream>
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 class SiStripDetSummary {
0029 public:
0030 explicit SiStripDetSummary(const TrackerTopology* tTopo) : computeMean_(true), trackerTopo_(tTopo) {
0031
0032
0033
0034
0035
0036
0037 unsigned int layers[] = {4, 6, 9, 3};
0038 unsigned int stereo[] = {2, 2, 9, 3};
0039 Values initValues;
0040 for (unsigned int subDet = 0; subDet < 4; ++subDet) {
0041
0042 for (unsigned int layer = 1; layer <= layers[subDet]; ++layer) {
0043 valueMap_[1000 * (subDet + 1) + layer * 10] = initValues;
0044 if (layer <= stereo[subDet])
0045 valueMap_[1000 * (subDet + 1) + layer * 10 + 1] = initValues;
0046 }
0047 }
0048 }
0049
0050
0051 void add(DetId detid, float value);
0052
0053 inline void add(DetId detid) {
0054 computeMean_ = false;
0055 add(detid, 0);
0056 }
0057
0058
0059
0060
0061
0062 void print(std::stringstream& ss, const bool mean = true) const;
0063
0064 inline void clear() { valueMap_.clear(); }
0065
0066 struct Values {
0067 Values() : mean(0.), rms(0.), count(0) {}
0068 double mean;
0069 double rms;
0070 unsigned int count;
0071 };
0072 std::map<unsigned int, Values> getCounts() { return valueMap_; }
0073
0074 protected:
0075
0076 std::map<unsigned int, Values> valueMap_;
0077 bool computeMean_;
0078
0079 private:
0080 const TrackerTopology* trackerTopo_;
0081 };
0082
0083 #endif