Skip to content

Commit

Permalink
Merge pull request cms-sw#1 from valsdav/master
Browse files Browse the repository at this point in the history
Added an option to dump PCaloHits
  • Loading branch information
bmarzocc committed Jun 11, 2019
2 parents 89b1644 + 26a2c22 commit 9d93908
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 3 deletions.
9 changes: 9 additions & 0 deletions Dumpers/interface/RecoSimDumper.h
Expand Up @@ -44,6 +44,7 @@
#include "DataFormats/EcalDetId/interface/EBDetId.h"
#include "DataFormats/EcalDetId/interface/EEDetId.h"
#include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h"
#include "SimDataFormats/CaloHit/interface/PCaloHit.h"
#include "SimDataFormats/CaloAnalysis/interface/SimCluster.h"
#include "SimDataFormats/CaloAnalysis/interface/CaloParticle.h"
#include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h"
Expand Down Expand Up @@ -123,6 +124,8 @@ class RecoSimDumper : public edm::EDAnalyzer
// ----------collection tokens-------------------
edm::EDGetTokenT<std::vector<reco::GenParticle> > genToken_;
edm::EDGetTokenT<std::vector<CaloParticle> > caloPartToken_;
edm::EDGetTokenT<std::vector<PCaloHit> > PCaloHitEBToken_;
edm::EDGetTokenT<std::vector<PCaloHit> > PCaloHitEEToken_;
edm::EDGetTokenT<EcalRecHitCollection> ebRechitToken_;
edm::EDGetTokenT<EcalRecHitCollection> eeRechitToken_;
edm::EDGetTokenT<std::vector<reco::PFRecHit> > pfRecHitToken_;
Expand All @@ -135,6 +138,7 @@ class RecoSimDumper : public edm::EDAnalyzer
// ----------config inputs-------------------
bool doCompression_;
int nBits_;
bool saveCalohits_;
bool saveSimhits_;
bool saveRechits_;
bool savePFRechits_;
Expand All @@ -155,6 +159,11 @@ class RecoSimDumper : public edm::EDAnalyzer
float caloParticle_pt;
float caloParticle_eta;
float caloParticle_phi;
std::vector<float> caloHit_energy;
std::vector<float> caloHit_time;
std::vector<int> caloHit_ieta;
std::vector<int> caloHit_iphi;
std::vector<int> caloHit_iz;
std::vector<float> simHit_energy;
std::vector<float> simHit_eta;
std::vector<float> simHit_phi;
Expand Down
6 changes: 6 additions & 0 deletions Dumpers/python/RecoSimDumper_cfi.py
Expand Up @@ -21,4 +21,10 @@
useEnergyRegression = cms.bool(False), #save corrected energy
motherID = cms.int32(22), #save only caloParticles with this pdgId
#motherID = cms.int32(0), #save only caloParticles with this pdgId

######################
# PCaloHits analysis
saveCalohits = cms.bool(False),
PCaloHitEBCollection = cms.InputTag("g4SimHits","EcalHitsEB","SIM"),
PCaloHitEECollection = cms.InputTag("g4SimHits","EcalHitsEE","SIM")
)
51 changes: 51 additions & 0 deletions Dumpers/src/RecoSimDumper.cc
Expand Up @@ -40,6 +40,7 @@
#include "DataFormats/EcalDetId/interface/EBDetId.h"
#include "DataFormats/EcalDetId/interface/EEDetId.h"
#include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h"
#include "SimDataFormats/CaloHit/interface/PCaloHit.h"
#include "SimDataFormats/CaloAnalysis/interface/SimCluster.h"
#include "SimDataFormats/CaloAnalysis/interface/CaloParticle.h"
#include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h"
Expand Down Expand Up @@ -110,6 +111,8 @@ RecoSimDumper::RecoSimDumper(const edm::ParameterSet& iConfig)
{
genToken_ = consumes<std::vector<reco::GenParticle> >(iConfig.getParameter<edm::InputTag>("genParticleCollection"));
caloPartToken_ = consumes<std::vector<CaloParticle> >(iConfig.getParameter<edm::InputTag>("caloParticleCollection"));
PCaloHitEBToken_ = consumes< std::vector<PCaloHit> >(iConfig.getParameter<edm::InputTag>("PCaloHitEBCollection"));
PCaloHitEEToken_ = consumes< std::vector<PCaloHit> >(iConfig.getParameter<edm::InputTag>("PCaloHitEECollection"));
ebRechitToken_ = consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("ebRechitCollection"));
eeRechitToken_ = consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("eeRechitCollection"));
pfRecHitToken_ = consumes<std::vector<reco::PFRecHit> >(iConfig.getParameter<edm::InputTag>("pfRechitCollection"));
Expand Down Expand Up @@ -144,6 +147,13 @@ RecoSimDumper::RecoSimDumper(const edm::ParameterSet& iConfig)
tree->Branch("caloParticle_pt", &caloParticle_pt,"caloParticle_pt/F");
tree->Branch("caloParticle_eta", &caloParticle_eta,"caloParticle_eta/F");
tree->Branch("caloParticle_phi", &caloParticle_phi,"caloParticle_phi/F");
if(saveCalohits_){
tree->Branch("caloHit_energy","std::vector<float>",&caloHit_energy);
tree->Branch("caloHit_time","std::vector<float>",&caloHit_time);
tree->Branch("caloHit_ieta","std::vector<int>",&caloHit_ieta);
tree->Branch("caloHit_iphi","std::vector<int>",&caloHit_iphi);
tree->Branch("caloHit_iz","std::vector<int>",&caloHit_iz);
}
if(saveSimhits_){
tree->Branch("simHit_energy","std::vector<float>",&simHit_energy);
tree->Branch("simHit_eta","std::vector<float>",&simHit_eta);
Expand Down Expand Up @@ -243,6 +253,21 @@ void RecoSimDumper::analyze(const edm::Event& ev, const edm::EventSetup& iSetup)
return;
}

edm::Handle<std::vector<PCaloHit> > PCaloHitsEB;
edm::Handle<std::vector<PCaloHit> > PCaloHitsEE;
ev.getByToken(PCaloHitEBToken_, PCaloHitsEB);
ev.getByToken(PCaloHitEEToken_, PCaloHitsEE);
if(saveCalohits_){
if (!PCaloHitsEB.isValid()) {
std::cerr << "Analyze --> PCaloHitsEB not found" << std::endl;
return;
}
if (!PCaloHitsEE.isValid()) {
std::cerr << "Analyze --> PCaloHitsEE not found" << std::endl;
return;
}
}

edm::Handle<EcalRecHitCollection> recHitsEB;
ev.getByToken(ebRechitToken_, recHitsEB);
if(saveRechits_) {
Expand Down Expand Up @@ -297,6 +322,8 @@ void RecoSimDumper::analyze(const edm::Event& ev, const edm::EventSetup& iSetup)
}
}



for(const auto& iCalo : *(caloParticles.product()))
{
if(iCalo.pdgId()!=motherID_ && motherID_!=0) continue;
Expand Down Expand Up @@ -418,6 +445,18 @@ void RecoSimDumper::analyze(const edm::Event& ev, const edm::EventSetup& iSetup)
}

if(id.subdetId()==EcalBarrel){

if(saveCalohits_){
for (auto & pch : *(PCaloHitsEB.product())){
if (pch.id() == id.rawId()){
caloHit_energy.push_back(reduceFloat(pch.energy(),nBits_));
caloHit_time.push_back(reduceFloat(pch.time(),nBits_));
caloHit_ieta.push_back(ieta);
caloHit_iphi.push_back(iphi);
caloHit_iz.push_back(iz);
}
}
}

if(saveSimhits_){
simHit_ieta.push_back(ieta);
Expand Down Expand Up @@ -467,6 +506,18 @@ void RecoSimDumper::analyze(const edm::Event& ev, const edm::EventSetup& iSetup)
}

}else if(id.subdetId()==EcalEndcap){

if(saveCalohits_){
for (auto & pch : *(PCaloHitsEE.product())){
if (pch.id() == id.rawId()){
caloHit_energy.push_back(reduceFloat(pch.energy(),nBits_));
caloHit_time.push_back(reduceFloat(pch.time(),nBits_));
caloHit_ieta.push_back(ieta);
caloHit_iphi.push_back(iphi);
caloHit_iz.push_back(iz);
}
}
}

if(saveSimhits_){
simHit_ieta.push_back(ieta);
Expand Down
Expand Up @@ -61,9 +61,10 @@
outputCommands = process.RECOSIMEventContent.outputCommands,
splitLevel = cms.untracked.int32(0)
)
process.RECOSIMoutput.outputCommands.extend(['keep *_mix_MergedCaloTruth_*'])
process.RECOSIMoutput.outputCommands.extend(['keep *_particleFlowRecHitECAL_*_*'])
#process.RECOSIMoutput.outputCommands.extend(['keep *_*genParticle*_*_*'])
process.RECOSIMoutput.outputCommands.extend(['keep *_mix_MergedCaloTruth_*',
'keep *_particleFlowRecHitECAL_*_*'])

#process.RECOSIMoutput.outputCommands.extend(['keep *PCaloHit*_g4SimHits_EcalHitsE*_*'])


process.MINIAODSIMoutput = cms.OutputModule("PoolOutputModule",
Expand Down
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -26,6 +26,8 @@
* cmsRun step2_DIGI_L1_DIGI2RAW_HLT.py

5) Produce RECO:

In case of studies including PCaloHits uncomment line #67 to keep the PCaloHit collection.

* cd RecoSimStudies/Dumpers/test/
* cmsRun step3_RAW2DIGI_L1Reco_RECO_RECOSIM_EI_PAT_VALIDATION_DQM.py
Expand Down

0 comments on commit 9d93908

Please sign in to comment.