Skip to content

Commit

Permalink
Merge pull request #33185 from bsunanda/Run3-hcx293
Browse files Browse the repository at this point in the history
Run3-hcx293 Take care of different of levels in G4 tree between DDD & DD4Hep
  • Loading branch information
cmsbuild committed Mar 16, 2021
2 parents 1773ee9 + 8f9ff89 commit f61e3da
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 35 deletions.
9 changes: 7 additions & 2 deletions SimG4CMS/Calo/src/CaloSD.cc
Expand Up @@ -22,9 +22,9 @@
#include "G4VProcess.hh"
#include "G4GFlashSpot.hh"
#include "G4ParticleTable.hh"

#include "G4SystemOfUnits.hh"
#include "G4PhysicalConstants.hh"
#include "DD4hep/Filter.h"

#include <fstream>
#include <memory>
Expand All @@ -50,6 +50,8 @@ CaloSD::CaloSD(const std::string& name,
timeSlice(timeSliceUnit),
eminHitD(0.) {
//Parameters
bool dd4hep = p.getParameter<bool>("g4GeometryDD4hepSource");
int addlevel = dd4hep ? 1 : 0;
edm::ParameterSet m_CaloSD = p.getParameter<edm::ParameterSet>("CaloSD");
energyCut = m_CaloSD.getParameter<double>("EminTrack") * CLHEP::GeV;
tmaxHit = m_CaloSD.getParameter<double>("TmaxHit") * CLHEP::ns;
Expand All @@ -73,6 +75,8 @@ CaloSD::CaloSD(const std::string& name,
std::vector<std::string> fineNames = m_CaloSD.getParameter<std::vector<std::string>>("FineCaloNames");
std::vector<int> fineLevels = m_CaloSD.getParameter<std::vector<int>>("FineCaloLevels");
std::vector<int> useFines = m_CaloSD.getParameter<std::vector<int>>("UseFineCalo");
for (auto& level : fineLevels)
level += addlevel;

SetVerboseLevel(verbn);
meanResponse.reset(nullptr);
Expand Down Expand Up @@ -128,7 +132,8 @@ CaloSD::CaloSD(const std::string& name,
G4LogicalVolume* lv = nullptr;
G4String name = static_cast<G4String>(fineNames[useFines[i]]);
for (lvcite = lvs->begin(); lvcite != lvs->end(); lvcite++) {
if ((*lvcite)->GetName() == name) {
G4String namx(static_cast<std::string>(dd4hep::dd::noNamespace((*lvcite)->GetName())));
if (namx == name) {
lv = (*lvcite);
break;
}
Expand Down
30 changes: 22 additions & 8 deletions SimG4CMS/Calo/src/CaloTrkProcessing.cc
Expand Up @@ -17,6 +17,7 @@
#include "G4Step.hh"
#include "G4Track.hh"
#include "G4SystemOfUnits.hh"
#include "DD4hep/Filter.h"

#include <sstream>
//#define EDM_ML_DEBUG
Expand All @@ -28,6 +29,8 @@ CaloTrkProcessing::CaloTrkProcessing(const std::string& name,
const SimTrackManager*)
: SensitiveCaloDetector(name, es, clg, p), lastTrackID_(-1) {
//Initialise the parameter set
bool dd4hep = p.getParameter<bool>("g4GeometryDD4hepSource");
int addlevel = dd4hep ? 1 : 0;
edm::ParameterSet m_p = p.getParameter<edm::ParameterSet>("CaloTrkProcessing");
testBeam_ = m_p.getParameter<bool>("TestBeam");
eMin_ = m_p.getParameter<double>("EminTrack") * CLHEP::MeV;
Expand All @@ -37,6 +40,8 @@ CaloTrkProcessing::CaloTrkProcessing(const std::string& name,
std::vector<std::string> fineNames = m_p.getParameter<std::vector<std::string> >("FineCaloNames");
std::vector<int> fineLevels = m_p.getParameter<std::vector<int> >("FineCaloLevels");
std::vector<int> useFines = m_p.getParameter<std::vector<int> >("UseFineCalo");
for (auto& level : fineLevels)
level += addlevel;

edm::LogVerbatim("CaloSim") << "CaloTrkProcessing: Initialised with TestBeam = " << testBeam_ << " Emin = " << eMin_
<< " Flags " << putHistory_ << " (History), " << doFineCalo_ << " (Special Calorimeter)";
Expand All @@ -60,7 +65,7 @@ CaloTrkProcessing::CaloTrkProcessing(const std::string& name,
edm::LogVerbatim("CaloSim") << " (" << i << ") " << csp->caloNames_[i];
edm::LogVerbatim("CaloSim") << "CaloTrkProcessing: " << csp->levels_.size() << " entries for levels:";
for (unsigned int i = 0; i < csp->levels_.size(); i++)
edm::LogVerbatim("CaloSim") << " (" << i << ") " << csp->levels_[i];
edm::LogVerbatim("CaloSim") << " (" << i << ") " << (csp->levels_[i] + addlevel);
edm::LogVerbatim("CaloSim") << "CaloTrkProcessing: " << csp->neighbours_.size() << " entries for neighbours:";
for (unsigned int i = 0; i < csp->neighbours_.size(); i++)
edm::LogVerbatim("CaloSim") << " (" << i << ") " << csp->neighbours_[i];
Expand All @@ -69,7 +74,7 @@ CaloTrkProcessing::CaloTrkProcessing(const std::string& name,
edm::LogVerbatim("CaloSim") << " (" << i << ") " << csp->insideNames_[i];
edm::LogVerbatim("CaloSim") << "CaloTrkProcessing: " << csp->insideLevel_.size() << " entries for insideLevel:";
for (unsigned int i = 0; i < csp->insideLevel_.size(); i++)
edm::LogVerbatim("CaloSim") << " (" << i << ") " << csp->insideLevel_[i];
edm::LogVerbatim("CaloSim") << " (" << i << ") " << (csp->insideLevel_[i] + addlevel);
#endif

if (csp->caloNames_.size() < csp->neighbours_.size()) {
Expand All @@ -84,9 +89,10 @@ CaloTrkProcessing::CaloTrkProcessing(const std::string& name,
int istart = 0;
for (unsigned int i = 0; i < csp->caloNames_.size(); i++) {
G4LogicalVolume* lv = nullptr;
G4String name = static_cast<G4String>(csp->caloNames_[i]);
G4String name(csp->caloNames_[i]);
for (lvcite = lvs->begin(); lvcite != lvs->end(); lvcite++) {
if ((*lvcite)->GetName() == name) {
G4String namx(static_cast<std::string>(dd4hep::dd::noNamespace((*lvcite)->GetName())));
if (namx == name) {
lv = (*lvcite);
break;
}
Expand All @@ -95,7 +101,7 @@ CaloTrkProcessing::CaloTrkProcessing(const std::string& name,
CaloTrkProcessing::Detector detector;
detector.name = name;
detector.lv = lv;
detector.level = csp->levels_[i];
detector.level = (csp->levels_[i] + addlevel);
if (istart + csp->neighbours_[i] > static_cast<int>(csp->insideNames_.size())) {
edm::LogError("CaloSim") << "CaloTrkProcessing: # of InsideNames bins " << csp->insideNames_.size()
<< " too few compaerd to " << istart + csp->neighbours_[i]
Expand All @@ -110,14 +116,15 @@ CaloTrkProcessing::CaloTrkProcessing(const std::string& name,
lv = nullptr;
name = static_cast<G4String>(csp->insideNames_[istart + k]);
for (lvcite = lvs->begin(); lvcite != lvs->end(); lvcite++) {
if ((*lvcite)->GetName() == name) {
G4String namx(static_cast<std::string>(dd4hep::dd::noNamespace((*lvcite)->GetName())));
if (namx == name) {
lv = (*lvcite);
break;
}
}
inside.push_back(name);
insideLV.push_back(lv);
insideLevels.push_back(csp->insideLevel_[istart + k]);
insideLevels.push_back(csp->insideLevel_[istart + k] + addlevel);
}
detector.fromDets = inside;
detector.fromDetL = insideLV;
Expand All @@ -131,7 +138,8 @@ CaloTrkProcessing::CaloTrkProcessing(const std::string& name,
G4LogicalVolume* lv = nullptr;
G4String name = static_cast<G4String>(fineNames[useFines[i]]);
for (lvcite = lvs->begin(); lvcite != lvs->end(); lvcite++) {
if ((*lvcite)->GetName() == name) {
G4String namx(static_cast<std::string>(dd4hep::dd::noNamespace((*lvcite)->GetName())));
if (namx == name) {
lv = (*lvcite);
break;
}
Expand Down Expand Up @@ -419,4 +427,10 @@ void CaloTrkProcessing::detectorLevel(const G4VTouchable* touch, int& level, int
copyno[ii] = touch->GetReplicaNumber(i);
}
}
#ifdef EDM_ML_DEBUG
edm::LogVerbatim("CaloSimX") << "CaloTrkProcessing::detectorLevel "
<< " with " << level << ":" << detLevels(touch) << " levels";
for (int ii = 0; ii < level; ii++)
edm::LogVerbatim("CaloSimX") << "[" << ii << "] " << name[ii] << ":" << copyno[ii];
#endif
}
20 changes: 11 additions & 9 deletions SimG4CMS/Calo/test/python/runEta13_cfg.py
@@ -1,17 +1,23 @@
import FWCore.ParameterSet.Config as cms

process = cms.Process("PROD")
from Configuration.Eras.Era_Run3_cff import Run3
process = cms.Process("PROD",Run3)
process.load("Configuration.Geometry.GeometryExtended2021Reco_cff")

#from Configuration.Eras.Era_Run3_dd4hep_cff import Run3_dd4hep
#process = cms.Process("PROD",Run3_dd4hep)
#process.load("Configuration.Geometry.GeometryDD4hepExtended2021Reco_cff")

process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi")
process.load('FWCore.MessageService.MessageLogger_cfi')
process.load("IOMC.EventVertexGenerators.VtxSmearedGauss_cfi")
process.load("Geometry.CMSCommonData.cmsSimIdealGeometryXML_cfi")
process.load("Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi")
process.load("Geometry.EcalCommonData.ecalSimulationParameters_cff")
process.load("Geometry.HcalCommonData.hcalDDDSimConstants_cff")
process.load("Configuration.StandardSequences.MagneticField_cff")
process.load("Configuration.EventContent.EventContent_cff")
process.load('Configuration.StandardSequences.Generator_cff')
process.load('Configuration.StandardSequences.SimIdeal_cff')
process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
from Configuration.AlCa.GlobalTag import GlobalTag
process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase1_2021_realistic', '')

if 'MessageLogger' in process.__dict__:
process.MessageLogger.G4cerr=dict()
Expand All @@ -21,10 +27,6 @@
process.RandomNumberGeneratorService.g4SimHits.initialSeed = 9876
process.RandomNumberGeneratorService.VtxSmeared.initialSeed = 123456789

process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
from Configuration.AlCa.autoCond import autoCond
process.GlobalTag.globaltag = autoCond['run1_mc']

process.maxEvents = cms.untracked.PSet(
input = cms.untracked.int32(5000)
)
Expand Down
17 changes: 10 additions & 7 deletions SimG4CMS/Calo/test/python/runEta2_cfg.py
@@ -1,21 +1,24 @@
import FWCore.ParameterSet.Config as cms

process = cms.Process("PROD")
from Configuration.Eras.Era_Run3_cff import Run3
process = cms.Process("PROD",Run3)
process.load("Configuration.Geometry.GeometryExtended2021Reco_cff")

#from Configuration.Eras.Era_Run3_dd4hep_cff import Run3_dd4hep
#process = cms.Process("PROD",Run3_dd4hep)
#process.load("Configuration.Geometry.GeometryDD4hepExtended2021Reco_cff")

process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi")
process.load('FWCore.MessageService.MessageLogger_cfi')
process.load("IOMC.EventVertexGenerators.VtxSmearedGauss_cfi")
process.load("Geometry.CMSCommonData.cmsSimIdealGeometryXML_cfi")
process.load("Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi")
process.load("Geometry.EcalCommonData.ecalSimulationParameters_cff")
process.load("Geometry.HcalCommonData.hcalDDDSimConstants_cff")
process.load("Configuration.StandardSequences.MagneticField_cff")
process.load("Configuration.EventContent.EventContent_cff")
process.load('Configuration.StandardSequences.Generator_cff')
process.load('Configuration.StandardSequences.SimIdeal_cff')
process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff"
)
from Configuration.AlCa.autoCond import autoCond
process.GlobalTag.globaltag = autoCond['run1_mc']
from Configuration.AlCa.GlobalTag import GlobalTag
process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase1_2021_realistic', '')

if 'MessageLogger' in process.__dict__:
process.MessageLogger.G4cerr=dict()
Expand Down
24 changes: 15 additions & 9 deletions SimG4CMS/Calo/test/python/runEta7_cfg.py
@@ -1,24 +1,30 @@
import FWCore.ParameterSet.Config as cms

process = cms.Process("PROD")
from Configuration.Eras.Era_Run3_cff import Run3
process = cms.Process("PROD",Run3)
process.load("Configuration.Geometry.GeometryExtended2021Reco_cff")

#from Configuration.Eras.Era_Run3_dd4hep_cff import Run3_dd4hep
#process = cms.Process("PROD",Run3_dd4hep)
#process.load("Configuration.Geometry.GeometryDD4hepExtended2021Reco_cff")

process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi")
process.load('FWCore.MessageService.MessageLogger_cfi')
process.load("IOMC.EventVertexGenerators.VtxSmearedGauss_cfi")
process.load("Geometry.CMSCommonData.cmsSimIdealGeometryXML_cfi")
process.load("Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi")
process.load("Geometry.EcalCommonData.ecalSimulationParameters_cff")
process.load("Geometry.HcalCommonData.hcalDDDSimConstants_cff")
process.load("Configuration.StandardSequences.MagneticField_cff")
process.load("Configuration.EventContent.EventContent_cff")
process.load('Configuration.StandardSequences.Generator_cff')
process.load('Configuration.StandardSequences.SimIdeal_cff')
process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff"
)
from Configuration.AlCa.autoCond import autoCond
process.GlobalTag.globaltag = autoCond['run1_mc']
from Configuration.AlCa.GlobalTag import GlobalTag
process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase1_2021_realistic', '')

if 'MessageLogger' in process.__dict__:
process.MessageLogger.cerr.FwkReport.reportEvery = 5
if hasattr(process,'MessageLogger'):
process.MessageLogger.G4cerr=dict()
# process.MessageLogger.CaloSim=dict()
# process.MessageLogger.CaloSimX=dict()

process.load("IOMC.RandomEngine.IOMC_cff")
process.RandomNumberGeneratorService.generator.initialSeed = 456789
Expand Down Expand Up @@ -57,7 +63,7 @@
process.simulation_step = cms.Path(process.psim)
process.out_step = cms.EndPath(process.output)

process.g4SimHits.Physics.type = 'SimG4Core/Physics/QGSP_FTFP_BERT_EML'
process.g4SimHits.Physics.type = 'SimG4Core/Physics/FTFP_BERT_EMM'
#process.g4SimHits.G4Commands = ['/tracking/verbose 1']

# Schedule definition
Expand Down

0 comments on commit f61e3da

Please sign in to comment.