Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove inappropriate use of provenance in EcalDeadCellTriggerPrimitiveFilter #24387

Merged
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
84 changes: 45 additions & 39 deletions RecoMET/METFilters/plugins/EcalDeadCellTriggerPrimitiveFilter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class EcalDeadCellTriggerPrimitiveFilter : public edm::stream::EDFilter<> {
private:
bool filter(edm::Event&, const edm::EventSetup&) override;
void beginRun(const edm::Run&, const edm::EventSetup&) override;
virtual void envSet(const edm::EventSetup&);
void envSet(const edm::EventSetup&);

// ----------member data ---------------------------

Expand All @@ -92,15 +92,17 @@ class EcalDeadCellTriggerPrimitiveFilter : public edm::stream::EDFilter<> {
edm::ESHandle<EcalChannelStatus> ecalStatus;
edm::ESHandle<CaloGeometry> geometry;

void loadEcalDigis(edm::Event& iEvent, const edm::EventSetup& iSetup);
void loadEcalRecHits(edm::Event& iEvent, const edm::EventSetup& iSetup);
void loadEcalDigis(edm::Event& iEvent,
edm::Handle<EcalTrigPrimDigiCollection>& pTPDigis
);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please close this on the previous line to preserve indentation

void loadEcalRecHits(edm::Event& iEvent,
edm::Handle<EcalRecHitCollection>& barrelReducedRecHitsHandle,
edm::Handle<EcalRecHitCollection>& endcapReducedRecHitsHandle);

const edm::InputTag ebReducedRecHitCollection_;
const edm::InputTag eeReducedRecHitCollection_;
edm::EDGetTokenT<EcalRecHitCollection> ebReducedRecHitCollectionToken_;
edm::EDGetTokenT<EcalRecHitCollection> eeReducedRecHitCollectionToken_;
edm::Handle<EcalRecHitCollection> barrelReducedRecHitsHandle;
edm::Handle<EcalRecHitCollection> endcapReducedRecHitsHandle;

edm::ESHandle<EcalTrigTowerConstituentsMap> ttMap_;

Expand All @@ -125,12 +127,11 @@ class EcalDeadCellTriggerPrimitiveFilter : public edm::stream::EDFilter<> {

const edm::InputTag tpDigiCollection_;
edm::EDGetTokenT<EcalTrigPrimDigiCollection> tpDigiCollectionToken_;
edm::Handle<EcalTrigPrimDigiCollection> pTPDigis;

// chnStatus > 0, then exclusive, i.e., only consider status == chnStatus
// chnStatus < 0, then inclusive, i.e., consider status >= abs(chnStatus)
// Return value: + : positive zside - : negative zside
int setEvtTPstatus(const double &tpCntCut, const int &chnStatus);
int setEvtTPstatus(const EcalTrigPrimDigiCollection& , const double &tpCntCut, const int &chnStatus);

const bool useTTsum_; //If set to true, the filter will compare the sum of the 5x5 tower to the provided energy threshold
const bool usekTPSaturated_; //If set to true, the filter will check the kTPSaturated flag
Expand All @@ -142,6 +143,8 @@ class EcalDeadCellTriggerPrimitiveFilter : public edm::stream::EDFilter<> {

bool useTPmethod_, useHITmethod_;

edm::EDPutTokenT<bool> putToken_;

void loadEventInfoForFilter(const edm::Event& iEvent);

// Only for EB since the dead front-end has one-to-one map to TT
Expand All @@ -156,7 +159,9 @@ class EcalDeadCellTriggerPrimitiveFilter : public edm::stream::EDFilter<> {

// To be used before a bug fix
std::vector<DetId> avoidDuplicateVec;
int setEvtRecHitstatus(const double &tpValCut, const int &chnStatus, const int &towerTest);
int setEvtRecHitstatus(const double &tpValCut, const int &chnStatus, const int &towerTest,
const EBRecHitCollection& HitecalEB,
const EERecHitCollection& HitecalEE);

};

Expand All @@ -170,39 +175,36 @@ EcalDeadCellTriggerPrimitiveFilter::EcalDeadCellTriggerPrimitiveFilter(const edm
, doEEfilter_ (iConfig.getUntrackedParameter<bool>("doEEfilter") )
, ebReducedRecHitCollection_ (iConfig.getParameter<edm::InputTag>("ebReducedRecHitCollection") )
, eeReducedRecHitCollection_ (iConfig.getParameter<edm::InputTag>("eeReducedRecHitCollection") )
, ebReducedRecHitCollectionToken_ (consumes<EcalRecHitCollection>(ebReducedRecHitCollection_))
, eeReducedRecHitCollectionToken_ (consumes<EcalRecHitCollection>(eeReducedRecHitCollection_))
, maskedEcalChannelStatusThreshold_ (iConfig.getParameter<int>("maskedEcalChannelStatusThreshold") )
, etValToBeFlagged_ (iConfig.getParameter<double>("etValToBeFlagged") )
, tpDigiCollection_ (iConfig.getParameter<edm::InputTag>("tpDigiCollection") )
, tpDigiCollectionToken_(consumes<EcalTrigPrimDigiCollection>(tpDigiCollection_))
, useTTsum_ (iConfig.getParameter<bool>("useTTsum") )
, usekTPSaturated_ (iConfig.getParameter<bool>("usekTPSaturated") )
, putToken_ ( produces<bool>() )
{
getEventInfoForFilterOnce_ = false;
hastpDigiCollection_ = 0; hasReducedRecHits_ = 0;
useTPmethod_ = true; useHITmethod_ = false;

produces<bool>();

callWhenNewProductsRegistered([this](edm::BranchDescription const& iBranch) {
if( iBranch.moduleLabel() == tpDigiCollection_.label() ){ hastpDigiCollection_ = 1; }
if( iBranch.moduleLabel() == ebReducedRecHitCollection_.label() || iBranch.moduleLabel() == eeReducedRecHitCollection_.label() ){
hasReducedRecHits_++;
if(hasReducedRecHits_ == 2 and hastpDigiCollection_ == 0) {
ebReducedRecHitCollectionToken_ = consumes<EcalRecHitCollection>(ebReducedRecHitCollection_);
eeReducedRecHitCollectionToken_ = consumes<EcalRecHitCollection>(eeReducedRecHitCollection_);
}
}
});
}

EcalDeadCellTriggerPrimitiveFilter::~EcalDeadCellTriggerPrimitiveFilter() {
}

void EcalDeadCellTriggerPrimitiveFilter::loadEventInfoForFilter(const edm::Event &iEvent){

std::vector<edm::StableProvenance const*> provenances;
iEvent.getAllStableProvenance(provenances);
const unsigned int nProvenance = provenances.size();
for (unsigned int ip = 0; ip < nProvenance; ip++) {
const edm::StableProvenance& provenance = *( provenances[ip] );
if( provenance.moduleLabel() == tpDigiCollection_.label() ){ hastpDigiCollection_ = 1; }
if( provenance.moduleLabel() == ebReducedRecHitCollection_.label() || provenance.moduleLabel() == eeReducedRecHitCollection_.label() ){
hasReducedRecHits_++;
}
if( hastpDigiCollection_ && hasReducedRecHits_>=2 ){ break; }
}

if( debug_ ) edm::LogInfo("EcalDeadCellTriggerPrimitiveFilter")<<"\nhastpDigiCollection_ : "<<hastpDigiCollection_<<" hasReducedRecHits_ : "<<hasReducedRecHits_;

const edm::ProcessHistory& history = iEvent.processHistory();
Expand Down Expand Up @@ -243,14 +245,17 @@ void EcalDeadCellTriggerPrimitiveFilter::loadEventInfoForFilter(const edm::Event

}

void EcalDeadCellTriggerPrimitiveFilter::loadEcalDigis(edm::Event& iEvent, const edm::EventSetup& iSetup){
void EcalDeadCellTriggerPrimitiveFilter::loadEcalDigis(edm::Event& iEvent, edm::Handle<EcalTrigPrimDigiCollection>& pTPDigis){

iEvent.getByToken(tpDigiCollectionToken_, pTPDigis);
if ( !pTPDigis.isValid() ) { edm::LogWarning("EcalDeadCellTriggerPrimitiveFilter") << "Can't get the product " << tpDigiCollection_.instance()
<< " with label " << tpDigiCollection_.label(); return; }
}

void EcalDeadCellTriggerPrimitiveFilter::loadEcalRecHits(edm::Event& iEvent, const edm::EventSetup& iSetup){
void EcalDeadCellTriggerPrimitiveFilter::loadEcalRecHits(edm::Event& iEvent,
edm::Handle<EcalRecHitCollection>& barrelReducedRecHitsHandle,
edm::Handle<EcalRecHitCollection>& endcapReducedRecHitsHandle)
{

iEvent.getByToken(ebReducedRecHitCollectionToken_,barrelReducedRecHitsHandle);
iEvent.getByToken(eeReducedRecHitCollectionToken_,endcapReducedRecHitsHandle);
Expand Down Expand Up @@ -290,13 +295,16 @@ bool EcalDeadCellTriggerPrimitiveFilter::filter(edm::Event& iEvent, const edm::E
int evtTagged = 0;

if( useTPmethod_ ){
loadEcalDigis(iEvent, iSetup);
evtTagged = setEvtTPstatus(etValToBeFlagged_, 13);
edm::Handle<EcalTrigPrimDigiCollection> pTPDigis;
loadEcalDigis(iEvent, pTPDigis);
evtTagged = setEvtTPstatus(*pTPDigis, etValToBeFlagged_, 13);
}

if( useHITmethod_ ){
loadEcalRecHits(iEvent, iSetup);
evtTagged = setEvtRecHitstatus(etValToBeFlagged_, 13, 13);
edm::Handle<EcalRecHitCollection> barrelReducedRecHitsHandle;
edm::Handle<EcalRecHitCollection> endcapReducedRecHitsHandle;
loadEcalRecHits(iEvent, barrelReducedRecHitsHandle, endcapReducedRecHitsHandle);
evtTagged = setEvtRecHitstatus(etValToBeFlagged_, 13, 13, *barrelReducedRecHitsHandle, *endcapReducedRecHitsHandle);
}

if( evtTagged ){ pass = false; }
Expand All @@ -306,7 +314,7 @@ bool EcalDeadCellTriggerPrimitiveFilter::filter(edm::Event& iEvent, const edm::E
printf("\nrun : %8u event : %10llu lumi : %4u evtTPstatus ABS : %d 13 : % 2d\n", run, event, ls, evtstatusABS, evtTagged);
}

iEvent.put(std::make_unique<bool>(pass));
iEvent.emplace(putToken_, pass);

if (taggingMode_) return true;
else return pass;
Expand All @@ -322,7 +330,10 @@ void EcalDeadCellTriggerPrimitiveFilter::beginRun(const edm::Run &iRun, const ed
return ;
}

int EcalDeadCellTriggerPrimitiveFilter::setEvtRecHitstatus(const double &tpValCut, const int &chnStatus, const int &towerTest){
int EcalDeadCellTriggerPrimitiveFilter::setEvtRecHitstatus(const double &tpValCut, const int &chnStatus, const int &towerTest,
const EBRecHitCollection& HitecalEB,
const EERecHitCollection& HitecalEE
){

if( debug_ && verbose_ >=2) edm::LogInfo("EcalDeadCellTriggerPrimitiveFilter")<<"***begin setEvtTPstatusRecHits***";

Expand All @@ -334,9 +345,6 @@ int EcalDeadCellTriggerPrimitiveFilter::setEvtRecHitstatus(const double &tpValCu
const EBRecHitCollection HitecalEB = *(barrelRecHitsHandle.product());
const EERecHitCollection HitecalEE = *(endcapRecHitsHandle.product());
*/
const EBRecHitCollection HitecalEB = *(barrelReducedRecHitsHandle.product());
const EERecHitCollection HitecalEE = *(endcapReducedRecHitsHandle.product());

int isPassCut =0;

EBRecHitCollection::const_iterator ebrechit;
Expand Down Expand Up @@ -524,7 +532,7 @@ int EcalDeadCellTriggerPrimitiveFilter::setEvtRecHitstatus(const double &tpValCu
}


int EcalDeadCellTriggerPrimitiveFilter::setEvtTPstatus(const double &tpValCut, const int &chnStatus) {
int EcalDeadCellTriggerPrimitiveFilter::setEvtTPstatus(EcalTrigPrimDigiCollection const& tpDigis, const double &tpValCut, const int &chnStatus) {

if( debug_ && verbose_ >=2) edm::LogInfo("EcalDeadCellTriggerPrimitiveFilter")<<"***begin setEvtTPstatus***";

Expand All @@ -551,10 +559,8 @@ int EcalDeadCellTriggerPrimitiveFilter::setEvtTPstatus(const double &tpValCut, c
EcalTrigTowerDetId ttDetId = ttItor->second;
int ttzside = ttDetId.zside();

const EcalTrigPrimDigiCollection * tpDigis = nullptr;
tpDigis = pTPDigis.product();
EcalTrigPrimDigiCollection::const_iterator tp = tpDigis->find( ttDetId );
if( tp != tpDigis->end() ){
EcalTrigPrimDigiCollection::const_iterator tp = tpDigis.find( ttDetId );
if( tp != tpDigis.end() ){
double tpEt = ecalScale_.getTPGInGeV( tp->compressedEt(), tp->id() );
if(tpEt >= tpValCut ){ isPassCut = 1; isPassCut *= ttzside; }
}
Expand Down