1 #ifndef RecoParticleFlow_PFClusterProducer_PFEcalRecHitQTests_h 2 #define RecoParticleFlow_PFClusterProducer_PFEcalRecHitQTests_h 28 return fullReadOut
or pass(hit);
54 applySelectionsToAllCrystals_(iConfig.getParameter<
bool>(
"applySelectionsToAllCrystals")),
60 if (applySelectionsToAllCrystals_)
62 return fullReadOut
or pass(hit);
94 thresholds_ = iConfig.
getParameter<std::vector<int> >(
"maxSeverities");
95 cleanThresholds_ = iConfig.
getParameter<std::vector<double> >(
"cleaningThresholds");
96 std::vector<std::string>
flags = iConfig.
getParameter<std::vector<std::string> >(
"flags");
97 for (
auto&
flag : flags) {
98 if (
flag ==
"Standard") {
100 depths_.push_back(-1);
101 }
else if (
flag ==
"HFInTime") {
103 depths_.push_back(-1);
104 }
else if (
flag ==
"HFDigi") {
106 depths_.push_back(-1);
107 }
else if (
flag ==
"HFLong") {
109 depths_.push_back(1);
110 }
else if (
flag ==
"HFShort") {
112 depths_.push_back(2);
114 flags_.push_back(-1);
115 depths_.push_back(-1);
123 theHcalTopology_ = topo.
product();
126 theHcalChStatus_ = hcalChStatus.
product();
129 hcalSevLvlComputer_ = hcalSevLvlComputerHndl.
product();
160 detid = theHcalTopology_->
idFront(detid);
164 unsigned theStatusValue = theStatus->
getValue();
166 for (
unsigned int i = 0;
i < thresholds_.size(); ++
i) {
168 if (energy < cleanThresholds_[
i])
172 hitSeverity = hcalSevLvlComputer_->
getSeverityLevel(detid, flags, theStatusValue);
174 hitSeverity = hcalSevLvlComputer_->
getSeverityLevel(detid, flags & flags_[i], theStatusValue);
177 if (hitSeverity > thresholds_[i] and ((depths_[i] < 0
or (depths_[i] == detid.
depth())))) {
194 std::vector<edm::ParameterSet> psets = iConfig.
getParameter<std::vector<edm::ParameterSet> >(
"cuts");
195 for (
auto&
pset : psets) {
196 depths_.push_back(
pset.getParameter<
int>(
"depth"));
197 minTimes_.push_back(
pset.getParameter<
double>(
"minTime"));
198 maxTimes_.push_back(
pset.getParameter<
double>(
"maxTime"));
199 thresholds_.push_back(
pset.getParameter<
double>(
"threshold"));
229 for (
unsigned int i = 0;
i < depths_.size(); ++
i) {
230 if (detid.
depth() == depths_[
i]) {
231 if ((time < minTimes_[
i]
or time > maxTimes_[
i]) and energy > thresholds_[
i]) {
250 std::vector<edm::ParameterSet> psets = iConfig.
getParameter<std::vector<edm::ParameterSet> >(
"cuts");
251 for (
auto&
pset : psets) {
252 depths_ =
pset.getParameter<std::vector<int> >(
"depth");
253 thresholds_ =
pset.getParameter<std::vector<double> >(
"threshold");
254 detector_ =
pset.getParameter<
int>(
"detectorEnum");
255 if (thresholds_.size() != depths_.size()) {
256 throw cms::Exception(
"InvalidPFRecHitThreshold") <<
"PFRecHitThreshold mismatch with the numbers of depths";
287 for (
unsigned int i = 0;
i < thresholds_.size(); ++
i) {
288 if (detid.
depth() == depths_[
i] && detid.
subdet() == detector_) {
289 if (energy < thresholds_[
i]) {
309 threshold0_(iConfig.getParameter<double>(
"threshold_ring0")),
310 threshold12_(iConfig.getParameter<double>(
"threshold_ring12")) {}
322 if (
abs(detid.ieta()) <= 4 and hit.
energy() > threshold0_)
324 if (
abs(detid.ieta()) > 4 and hit.
energy() > threshold12_)
352 thresholds_(iConfig.getParameter<
std::vector<double> >(
"thresholds")),
353 applySelectionsToAllCrystals_(iConfig.getParameter<
bool>(
"applySelectionsToAllCrystals")) {
357 << thresholds_.size();
364 endcapGeometrySet_ =
false;
365 if (endcapGeometry) {
367 endcapGeometrySet_ =
true;
372 if (applySelectionsToAllCrystals_)
375 return fullReadOut
or pass(hit);
398 if (not endcapGeometrySet_) {
407 return (hit.
energy() > thresholds_[firstEBRing]);
411 if (hit.
energy() > thresholds_[iring])
427 thresholdCleaning_(iConfig.getParameter<double>(
"cleaningThreshold")),
428 timingCleaning_(iConfig.getParameter<
bool>(
"timingCleaning")),
429 topologicalCleaning_(iConfig.getParameter<
bool>(
"topologicalCleaning")),
430 skipTTRecoveredHits_(iConfig.getParameter<
bool>(
"skipTTRecoveredHits")) {}
478 thresholdCleaning_(iConfig.getParameter<double>(
"cleaningThreshold")),
479 topologicalCleaning_(iConfig.getParameter<
bool>(
"topologicalCleaning")) {}
484 if (rh.
energy() < thresholdCleaning_) {
489 if (topologicalCleaning_ and
524 :
PFRecHitQTestBase(iConfig), calibFactor_(iConfig.getParameter<double>(
"calibFactor")) {}
531 if (
abs(detId.ieta()) == 29)
541 if (detId.ietaAbs() == 29)
558 recHitEnergy_keV_(iConfig.getParameter<
bool>(
"recHitEnergyIs_keV")),
559 threshold_(iConfig.getParameter<double>(
"thresholdInMIPs")),
560 mip_(iConfig.getParameter<double>(
"mipValueInkeV")),
561 recHitEnergyMultiplier_(iConfig.getParameter<double>(
"recHitEnergyMultiplier")) {}
566 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
570 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
575 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
579 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
584 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
590 (recHitEnergy_keV_ ? 1.0e-6 * rh.
energy() * recHitEnergyMultiplier_ : rh.
energy() * recHitEnergyMultiplier_);
600 const double hitValueInMIPs = 1e6 * hit.
energy() / mip_;
609 : geometryInstance_(
""), recHitEnergy_keV_(0.),
threshold_(0.), mip_(0.), recHitEnergyMultiplier_(0.) {}
613 geometryInstance_(iConfig.getParameter<
std::
string>(
"geometryInstance")),
614 recHitEnergy_keV_(iConfig.getParameter<
bool>(
"recHitEnergyIs_keV")),
615 threshold_(iConfig.getParameter<double>(
"thresholdInMIPs")),
616 mip_(iConfig.getParameter<double>(
"mipValueInkeV")),
617 recHitEnergyMultiplier_(iConfig.getParameter<double>(
"recHitEnergyMultiplier")) {}
626 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
630 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
635 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
639 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
644 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestThresholdInMIPs only works for HGCAL!";
650 (recHitEnergy_keV_ ? 1.0e-6 * rh.
energy() * recHitEnergyMultiplier_ : rh.
energy() * recHitEnergyMultiplier_);
652 const float mult = (
float)ddd_->waferTypeL(wafer);
654 return pass(hit, mult);
664 const double hitValueInMIPs = 1e6 * hit.
energy() / (mult * mip_);
674 :
PFRecHitQTestBase(iConfig), thresholdSNR_(iConfig.getParameter<double>(
"thresholdSNR")) {}
679 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestHGCalThresholdSNR only works for HGCAL!";
683 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestHGCalThresholdSNR only works for HGCAL!";
688 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestHGCalThresholdSNR only works for HGCAL!";
692 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestHGCalThresholdSNR only works for HGCAL!";
697 throw cms::Exception(
"WrongDetector") <<
"PFRecHitQTestHGCalThresholdSNR only works for HGCAL!";
715 applySelectionsToAllCrystals_(iConfig.getParameter<
bool>(
"applySelectionsToAllCrystals")) {}
722 if (applySelectionsToAllCrystals_)
724 return fullReadOut
or pass(hit);
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
constexpr float energy() const
PFRecHitQTestHGCalThresholdSNR()
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
T getParameter(std::string const &) const
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
const HcalChannelQuality * theHcalChStatus_
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
const HGCalDDDConstants * ddd_
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
HcalSubdetector subdet() const
get the subdetector
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
std::vector< double > minTimes_
bool pass(const reco::PFRecHit &hit)
std::vector< int > depths_
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
unsigned detId() const
rechit detId
PFRecHitQTestThreshold(const edm::ParameterSet &iConfig)
bool topologicalCleaning_
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
constexpr const DetId & detid() const
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
const double thresholdSNR_
std::vector< int > depths_
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
bool skipTTRecoveredHits_
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
bool pass(const reco::PFRecHit &hit, const float mult)
const HcalSeverityLevelComputer * hcalSevLvlComputer_
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
const bool recHitEnergy_keV_
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
std::vector< double > maxTimes_
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
bool applySelectionsToAllCrystals_
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
std::vector< Variable::Flags > flags
PFRecHitQTestECAL(const edm::ParameterSet &iConfig)
PFRecHitQTestHCALTimeVsDepth()
const Item * getValues(DetId fId, bool throwOnFail=true) const
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
bool test(unsigned aDETID, double energy, double time, bool &clean)
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
PFRecHitQTestHCALChannel(const edm::ParameterSet &iConfig)
const std::string geometryInstance_
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
std::vector< double > cleanThresholds_
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
std::vector< double > thresholds_
bool getMergePositionFlag() const
bool pass(const reco::PFRecHit &hit)
PFRecHitQTestHCALThresholdVsDepth(const edm::ParameterSet &iConfig)
const bool recHitEnergy_keV_
const HcalTopology * theHcalTopology_
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
const double threshold12_
PFRecHitQTestHCALChannel()
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
float signalOverSigmaNoise() const
std::vector< double > thresholds_
bool test(unsigned aDETID, double energy, double time, bool &clean)
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
PFRecHitQTestHCALCalib29()
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
int depth() const
get the tower depth
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
Particle flow rechit (rechit + geometry and topology information). See clustering algorithm in PFClus...
bool checkFlag(int flag) const
check if the flag is true
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
bool applySelectionsToAllCrystals_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
const HGCalTopology & topology() const
PFRecHitQTestHCALCalib29(const edm::ParameterSet &iConfig)
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
constexpr float time() const
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
bool pass(const reco::PFRecHit &hit)
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
Abs< T >::type abs(const T &t)
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
PFRecHitQTestDBSeedingThreshold(const edm::ParameterSet &iConfig)
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
float energy() const
rechit energy
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
const std::vector< double > thresholds_
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
PFRecHitQTestThresholdInThicknessNormalizedMIPs()
PFRecHitQTestHCALTimeVsDepth(const edm::ParameterSet &iConfig)
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
PFRecHitQTestHOThreshold(const edm::ParameterSet &iConfig)
PFRecHitQTestDBThreshold()
const HGCalDDDConstants & dddConstants() const
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
PFRecHitQTestHCALThresholdVsDepth()
PFRecHitQTestHOThreshold()
bool applySelectionsToAllCrystals_
PFRecHitQTestThresholdInThicknessNormalizedMIPs(const edm::ParameterSet &iConfig)
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
std::vector< int > depths_
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
std::vector< int > thresholds_
void setEnergy(float energy)
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
edm::ESHandle< EcalPFSeedingThresholds > ths_
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
bool pass(const reco::PFRecHit &hit)
const bool topologicalCleaning_
PFRecHitQTestThresholdInMIPs(const edm::ParameterSet &iConfig)
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
HcalDetId idFront(const HcalDetId &id) const
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
bool test(unsigned aDETID, double energy, int flags, bool &clean)
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
void beginEvent(const edm::Event &event, const edm::EventSetup &iSetup) override
double thresholdCleaning_
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
const edm::EventSetup * eventSetup_
bool test(reco::PFRecHit &hit, const HBHERecHit &rh, bool &clean) override
uint32_t getValue() const
PFRecHitQTestECALMultiThreshold(const edm::ParameterSet &iConfig)
bool pass(const reco::PFRecHit &hit)
const double thresholdCleaning_
bool test(reco::PFRecHit &hit, const HFRecHit &rh, bool &clean) override
PFRecHitQTestECALMultiThreshold()
bool test(reco::PFRecHit &hit, const CaloTower &rh, bool &clean) override
T const * product() const
constexpr uint32_t flags() const
std::vector< int > flags_
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
PFRecHitQTestHGCalThresholdSNR(const edm::ParameterSet &iConfig)
PFRecHitQTestThresholdInMIPs()
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
PFRecHitQTestES(const edm::ParameterSet &iConfig)
PFRecHitQTestDBThreshold(const edm::ParameterSet &iConfig)
bool test(reco::PFRecHit &hit, const EcalRecHit &rh, bool &clean, bool fullReadOut) override
bool test(reco::PFRecHit &hit, const HORecHit &rh, bool &clean) override
bool test(reco::PFRecHit &hit, const HGCRecHit &rh, bool &clean) override