CMS 3D CMS Logo

MultiplicityAlgorithms.h
Go to the documentation of this file.
1 #ifndef DPGAnalysis_SiStripTools_MultiplicityAlgorithms_H
2 #define DPGAnalysis_SiStripTools_MultiplicityAlgorithms_H
3 
8 
12 
17 
19 
23 
25 
26 namespace edm {
27  class EventSetup;
28 };
29 
30 #include <string>
31 
34  public:
38 
39  value_t getEvent(const edm::Event& iEvent, const edm::EventSetup& iSetup) const;
40 
41  private:
45  bool m_warn;
46  };
47 
48  template <class T>
50  public:
54 
55  value_t getEvent(const edm::Event& iEvent, const edm::EventSetup& iSetup) const;
56 
57  private:
58  int m_modthr;
62  };
63 
64  template <class T>
66  : m_modthr(iConfig.getUntrackedParameter<int>("moduleThreshold")),
67  m_useQuality(iConfig.getUntrackedParameter<bool>("useQuality", false)),
68  m_qualityToken(m_useQuality
69  ? decltype(m_qualityToken){iC.esConsumes<SiStripQuality, SiStripQualityRcd>(
70  edm::ESInputTag{"", iConfig.getUntrackedParameter<std::string>("qualityLabel", "")})}
71  : decltype(m_qualityToken){}),
72  m_collection(iC.consumes<T>(iConfig.getParameter<edm::InputTag>("collectionName"))) {}
73  template <class T>
75  : m_modthr(iConfig.getUntrackedParameter<int>("moduleThreshold")),
76  m_useQuality(iConfig.getUntrackedParameter<bool>("useQuality", false)),
77  m_qualityToken(m_useQuality
78  ? decltype(m_qualityToken){iC.esConsumes<SiStripQuality, SiStripQualityRcd>(
79  edm::ESInputTag(iConfig.getUntrackedParameter<std::string>("qualityLabel", "")))}
80  : decltype(m_qualityToken){}),
81  m_collection(iC.consumes<T>(iConfig.getParameter<edm::InputTag>("collectionName"))) {}
82 
83  template <class T>
85  const edm::EventSetup& iSetup) const {
86  int mult = 0;
87 
88  const SiStripQuality* quality = nullptr;
89  if (m_useQuality) {
90  quality = &iSetup.getData(m_qualityToken);
91  }
92 
93  edm::Handle<T> digis;
94  iEvent.getByToken(m_collection, digis);
95 
96  for (typename T::const_iterator it = digis->begin(); it != digis->end(); it++) {
97  if (!m_useQuality || !quality->IsModuleBad(it->detId())) {
98  if (m_modthr < 0 || int(it->size()) < m_modthr) {
99  mult += it->size();
100  // mult += it->size();
101  }
102  }
103  }
104  return value_t(mult);
105  }
106 
107  template <class T1, class T2>
109  public:
114 
115  value_t getEvent(const edm::Event& iEvent, const edm::EventSetup& iSetup) const;
116 
117  private:
120  };
121 
122  template <class T1, class T2>
123  MultiplicityPair<T1, T2>::MultiplicityPair() : m_multiplicity1(), m_multiplicity2() {}
124 
125  template <class T1, class T2>
127  : m_multiplicity1(iConfig.getParameter<edm::ParameterSet>("firstMultiplicityConfig"), iC),
128  m_multiplicity2(iConfig.getParameter<edm::ParameterSet>("secondMultiplicityConfig"), iC) {}
129  template <class T1, class T2>
131  : m_multiplicity1(iConfig.getParameter<edm::ParameterSet>("firstMultiplicityConfig"), iC),
132  m_multiplicity2(iConfig.getParameter<edm::ParameterSet>("secondMultiplicityConfig"), iC) {}
133 
134  template <class T1, class T2>
136  const edm::EventSetup& iSetup) const {
137  auto m1 = m_multiplicity1.getEvent(iEvent, iSetup);
138  auto m2 = m_multiplicity2.getEvent(iEvent, iSetup);
139  return value_t(m1, m2);
140  }
141 
150 } // namespace sistriptools::algorithm
151 
152 #endif // DPGAnalysis_SiStripTools_Multiplicities_H
value_t getEvent(const edm::Event &iEvent, const edm::EventSetup &iSetup) const
SingleMultiplicity(const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
edm::ESGetToken< SiStripQuality, SiStripQualityRcd > m_qualityToken
value_t getEvent(const edm::Event &iEvent, const edm::EventSetup &iSetup) const
T getUntrackedParameter(std::string const &, T const &) const
string quality
int iEvent
Definition: GenABIO.cc:224
ClusterSummarySingleMultiplicity(const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
value_t getEvent(const edm::Event &iEvent, const edm::EventSetup &iSetup) const
SingleMultiplicity< edmNew::DetSetVector< SiPixelCluster > > SingleSiPixelClusterMultiplicity
HLT enums.
SingleMultiplicity< edmNew::DetSetVector< SiStripCluster > > SingleSiStripClusterMultiplicity
MultiplicityPair< SingleMultiplicity< edmNew::DetSetVector< SiPixelCluster > >, SingleMultiplicity< edmNew::DetSetVector< SiStripCluster > > > SiPixelClusterSiStripClusterMultiplicityPair
SingleMultiplicity< edm::DetSetVector< SiStripDigi > > SingleSiStripDigiMultiplicity
MultiplicityPair< ClusterSummarySingleMultiplicity, ClusterSummarySingleMultiplicity > ClusterSummaryMultiplicityPair
long double T