CMS 3D CMS Logo

MTDDigitizerTypes.h
Go to the documentation of this file.
1 #ifndef __SimCalorimetry_FastTimingSimProducers_MTDDigitizerTypes_h__
2 #define __SimCalorimetry_FastTimingSimProducers_MTDDigitizerTypes_h__
3 
5 #include <unordered_map>
6 #include <array>
7 
8 namespace mtd_digitizer {
9 
10  //15 time samples: 9 pre-samples, 1 in-time, 5 post-samples
11  constexpr size_t nSamples = 15;
12 
13  typedef float MTDSimData_t;
14 
15  typedef std::array<MTDSimData_t,nSamples> MTDSimHitData;
16 
17  struct MTDCellInfo {
18  //1st array=energy, 2nd array=time-of-flight
19  std::array<MTDSimHitData,2> hit_info;
20  };
21 
22  // Maximum value of time-of-flight for premixing packing
23  constexpr float PREMIX_MAX_TOF = 26.0f;
24 
25  struct MTDCellId {
26  MTDCellId() : detid_(0), row_(0), column_(0) {}
27  const uint32_t detid_;
28  const uint8_t row_, column_;
29  MTDCellId(const DetId& id) : detid_(id.rawId()), row_(0), column_(0) {}
30  MTDCellId(const DetId& id, uint8_t row, uint8_t col) : detid_(id.rawId()), row_(row), column_(col) {}
31  bool operator==(const MTDCellId& eq) const {
32  return (detid_ == eq.detid_) && (row_ == eq.row_) && (column_ == eq.column_);
33  }
34  };
35 
36  // use a wider integer now since we have to add row and column in an
37  // intermediate det id for ETL
38  typedef std::unordered_map<MTDCellId, MTDCellInfo> MTDSimHitDataAccumulator;
39 
40 }
41 
42 namespace std
43 {
44 
47 
48  template<> struct hash<mtd_digitizer::MTDCellId>
49  {
51  typedef std::size_t result_type;
52  result_type operator()(argument_type const& s) const noexcept
53  {
54  uint64_t input = (uint64_t)s.detid_ | ((uint64_t)s.row_) << kRowOffset | ((uint64_t)s.column_) << kColOffset;
55  return std::hash<uint64_t>()(input);
56  }
57  };
58 }
59 
60 #endif
MTDCellId(const DetId &id, uint8_t row, uint8_t col)
constexpr int kColOffset
MTDCellId(const DetId &id)
bool operator==(const MTDCellId &eq) const
std::unordered_map< MTDCellId, MTDCellInfo > MTDSimHitDataAccumulator
std::array< MTDSimData_t, nSamples > MTDSimHitData
constexpr float PREMIX_MAX_TOF
static std::string const input
Definition: EdmProvDump.cc:48
mtd_digitizer::MTDCellId argument_type
#define noexcept
Definition: DetId.h:18
unsigned long long uint64_t
Definition: Time.h:15
col
Definition: cuy.py:1010
constexpr size_t nSamples
#define constexpr
result_type operator()(argument_type const &s) const noexcept
std::array< MTDSimHitData, 2 > hit_info
constexpr int kRowOffset