CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
HGCalHitIdCheck.cc
Go to the documentation of this file.
3 
7 
13 
16 
19 
23 
24 #include <map>
25 #include <string>
26 #include <vector>
27 
29 public:
31  ~HGcalHitIdCheck() override {}
32  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
33 
34 protected:
35  void analyze(edm::Event const&, edm::EventSetup const&) override;
36  void beginJob() override {}
37  void endJob() override {}
38 
39 private:
41  const int verbosity_;
44 };
45 
47  : g4Label_(ps.getParameter<std::string>("moduleLabel")),
48  caloHitSource_(ps.getParameter<std::string>("caloHitSource")),
49  nameSense_(ps.getParameter<std::string>("nameSense")),
50  nameDetector_(ps.getParameter<std::string>("nameDevice")),
51  verbosity_(ps.getParameter<int>("Verbosity")),
52  tok_calo_(consumes<edm::PCaloHitContainer>(edm::InputTag(g4Label_, caloHitSource_))),
54  edm::LogVerbatim("HitStudy") << "Test Hit ID for " << nameDetector_ << " using SimHits for " << nameSense_
55  << " with module Label: " << g4Label_ << " Hits: " << caloHitSource_;
56 }
57 
60  desc.add<std::string>("moduleLabel", "g4SimHits");
61  desc.add<std::string>("caloHitSource", "HGCHitsEE");
62  desc.add<std::string>("nameSense", "HGCalEESensitive");
63  desc.add<std::string>("nameDevice", "HGCal EE");
64  desc.add<int>("Verbosity", 0);
65  descriptions.add("hgcalHitIdCheckEE", desc);
66 }
67 
69  if (verbosity_ > 0)
70  edm::LogVerbatim("HitStudy") << "Run = " << e.id().run() << " Event = " << e.id().event();
71 
72  // get hcalGeometry
73  const HGCalGeometry* geom = &iS.getData(geomToken_);
74  const std::vector<DetId>& validIds = geom->getValidDetIds();
75 
77  e.getByToken(tok_calo_, hitsCalo);
78  bool getHits = (hitsCalo.isValid());
79  uint32_t nhits = (getHits) ? hitsCalo->size() : 0;
80  uint32_t good(0), all(0);
81  if (verbosity_ > 1)
82  edm::LogVerbatim("HitStudy") << "HGcalHitIdCheck: Input flags Hits " << getHits << " with " << nhits << " hits";
83 
84  if (getHits) {
85  std::vector<PCaloHit> hits;
86  hits.insert(hits.end(), hitsCalo->begin(), hitsCalo->end());
87  if (!hits.empty()) {
88  for (auto hit : hits) {
89  ++all;
90  DetId id(hit.id());
91  if (std::find(validIds.begin(), validIds.end(), id) != validIds.end()) {
92  ++good;
93  if (verbosity_ > 2) {
94  if ((id.det() == DetId::HGCalEE) || (id.det() == DetId::HGCalHSi)) {
95  edm::LogVerbatim("HitStudy") << "Hit[" << all << ":" << good << "]" << HGCSiliconDetId(id);
96  } else if (id.det() == DetId::HGCalHSc) {
97  edm::LogVerbatim("HitStudy") << "Hit[" << all << ":" << good << "]" << HGCScintillatorDetId(id);
98  } else {
99  edm::LogVerbatim("HitStudy") << "Hit[" << all << ":" << good << "]" << std::hex << id.rawId() << std::dec;
100  }
101  }
102  } else {
103  if (verbosity_ > 0) {
104  if ((id.det() == DetId::HGCalEE) || (id.det() == DetId::HGCalHSi)) {
105  edm::LogVerbatim("HitStudy")
106  << "Hit[" << all << ":" << good << "]" << HGCSiliconDetId(id) << " not valid *****";
107  } else if (id.det() == DetId::HGCalHSc) {
108  HGCScintillatorDetId hid1(id);
109  HGCScintillatorDetId hid2(hid1.type(), hid1.layer(), hid1.ring(), hid1.iphi(), false, 0);
110  bool ok = (std::find(validIds.begin(), validIds.end(), DetId(hid2)) != validIds.end());
111  edm::LogVerbatim("HitStudy") << "Hit[" << all << ":" << good << "]" << hid1 << " not valid ***** but "
112  << hid2 << " in list " << ok;
113  } else {
114  edm::LogVerbatim("HitStudy")
115  << "Hit[" << all << ":" << good << "]" << std::hex << id.rawId() << std::dec << " not valid *****";
116  }
117  }
118  }
119  }
120  }
121  }
122  edm::LogVerbatim("HitStudy") << "Total hits = " << all << ":" << nhits << " Good DetIds = " << good
123  << " Invalid DetIds = " << (all - good);
124 }
125 
126 //define this as a plug-in
RunNumber_t run() const
Definition: EventID.h:38
void beginJob() override
void endJob() override
Log< level::Info, true > LogVerbatim
EventNumber_t event() const
Definition: EventID.h:40
std::vector< PCaloHit > PCaloHitContainer
uint16_t *__restrict__ id
void analyze(edm::Event const &, edm::EventSetup const &) override
const int verbosity_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
int type() const
get/set the type
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
bool getData(T &iHolder) const
Definition: EventSetup.h:128
const std::string nameSense_
const std::string nameDetector_
int iphi() const
get the phi index
int ring() const
get the eta index
~HGcalHitIdCheck() override
const edm::EDGetTokenT< edm::PCaloHitContainer > tok_calo_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isValid() const
Definition: HandleBase.h:70
def all
workaround iterator generators for ROOT classes
Definition: cmstools.py:25
unsigned int id
const std::string caloHitSource_
Definition: DetId.h:17
const edm::ESGetToken< HGCalGeometry, IdealGeometryRecord > geomToken_
auto const good
min quality of good
void add(std::string const &label, ParameterSetDescription const &psetDescription)
const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const override
Get a list of valid detector ids (for the given subdetector)
Definition: HGCalGeometry.h:89
HGcalHitIdCheck(const edm::ParameterSet &ps)
int layer() const
get the layer #
edm::EventID id() const
Definition: EventBase.h:59
const std::string g4Label_
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283