Skip to content

Commit

Permalink
fix sube
Browse files Browse the repository at this point in the history
collisionId_ is not kept in pat::PackedGenParticle, use "packedGenParticlesSignal" (added by cms-sw#32668) to tag particles from signal process
  • Loading branch information
ttrk committed Sep 7, 2021
1 parent 56fe3ce commit fea4738
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
21 changes: 19 additions & 2 deletions HeavyIonsAnalysis/EventAnalysis/plugins/HiGenAnalyzer.cc
Expand Up @@ -119,6 +119,7 @@ class HiGenAnalyzer : public edm::EDAnalyzer {

edm::EDGetTokenT<edm::HepMCProduct> src_;
edm::EDGetTokenT<std::vector<pat::PackedGenParticle>> genParticleSrc_;
edm::EDGetTokenT<edm::View<pat::PackedGenParticle>> signalPackedGenParticleSrc_;
edm::EDGetTokenT<edm::GenHIEvent> genHIsrc_;

edm::ESHandle < ParticleDataTable > pdt;
Expand Down Expand Up @@ -151,6 +152,7 @@ HiGenAnalyzer::HiGenAnalyzer(const edm::ParameterSet& iConfig)
src_ = consumes<edm::HepMCProduct>(iConfig.getUntrackedParameter<edm::InputTag>("src",edm::InputTag("generator")));
} else {
genParticleSrc_ = consumes<std::vector<pat::PackedGenParticle>>(iConfig.getParameter<edm::InputTag>("genParticleSrc"));
signalPackedGenParticleSrc_ = consumes<edm::View<pat::PackedGenParticle>>(iConfig.getParameter<edm::InputTag>("signalGenParticleSrc"));
}
if(doHI_){
genHIsrc_ = consumes<edm::GenHIEvent>(iConfig.getUntrackedParameter<edm::InputTag>("genHiSrc",edm::InputTag("heavyIon")));
Expand Down Expand Up @@ -321,6 +323,9 @@ HiGenAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
edm::Handle<std::vector<pat::PackedGenParticle>> parts;
iEvent.getByToken(genParticleSrc_,parts);

edm::Handle<edm::View<pat::PackedGenParticle> > signalPackedGenParticles;
bool hasSignalPackedGen = iEvent.getByToken(signalPackedGenParticleSrc_, signalPackedGenParticles);

for(UInt_t i = 0; i < parts->size(); ++i){
//const reco::GenParticle& p = (*parts)[i];
const pat::PackedGenParticle& p = (*parts)[i];
Expand All @@ -333,8 +338,20 @@ HiGenAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
hev_.phi.push_back( p.phi());
hev_.pdg.push_back( p.pdgId());
hev_.chg.push_back( p.charge());
//hev_.sube.push_back( p.collisionId());
hev_.sube.push_back( -999 );
// collisionId_ is not kept in pat::PackedGenParticle, use "packedGenParticlesSignal" (added by https://github.com/cms-sw/cmssw/pull/32668/) to tag particles from signal process
if (hasSignalPackedGen) {
int tmpSube = 1;
for (auto pSig = signalPackedGenParticles->begin(); pSig != signalPackedGenParticles->end(); ++pSig) {
if ( &(*pSig) == &(*parts)[i] ) {
tmpSube = 0;
break;
}
}
hev_.sube.push_back( tmpSube );
}
else {
hev_.sube.push_back( -999 );
}
hev_.sta.push_back( p.status());
hev_.matchingID.push_back( i);
hev_.nMothers.push_back( p.numberOfMothers());
Expand Down
Expand Up @@ -9,6 +9,7 @@
stableOnly = cms.untracked.bool(True),
src = cms.untracked.InputTag("generator"),
genParticleSrc = cms.InputTag("packedGenParticles"),
signalGenParticleSrc = cms.InputTag("packedGenParticlesSignal"),
genHIsrc = cms.untracked.InputTag("heavyIon"),
doParticles = cms.untracked.bool(True),
doHI = cms.untracked.bool(False) ## Relevant info (its AOD counterpart is edm::GenHIEvent "heavyIon") is missing currently.
Expand Down

0 comments on commit fea4738

Please sign in to comment.