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

Run3-hcx293 Take care of different of levels in G4 tree between DDD & DD4Hep #33185

Merged
merged 2 commits into from Mar 16, 2021
Merged
Show file tree
Hide file tree
Changes from all 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
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