diff --git a/Simulation/DetSimSD/src/CaloSensitiveDetector.cpp b/Simulation/DetSimSD/src/CaloSensitiveDetector.cpp index 11fb8cddabccf91713e068f0a4396772079ce2c1..950c4c45f91c1084f21fc95982fb533ae6b7a596 100644 --- a/Simulation/DetSimSD/src/CaloSensitiveDetector.cpp +++ b/Simulation/DetSimSD/src/CaloSensitiveDetector.cpp @@ -33,6 +33,7 @@ CaloSensitiveDetector::ProcessHits(G4Step* step, G4TouchableHistory*) { // std::cout << "CaloSensitiveDetector::ProcessHits" << std::endl; dd4hep::sim::Geant4StepHandler h(step); + if(m_applyBirksLaw) h.doApplyBirksLaw(); dd4hep::Position pos = 0.5 * (h.prePos() + h.postPos()); HitContribution contrib = dd4hep::sim::Geant4Hit::extractContribution(step); const std::string& name = GetName(); @@ -62,9 +63,9 @@ CaloSensitiveDetector::ProcessHits(G4Step* step, G4TouchableHistory*) { m_hc->insert(hit); } hit->truth.push_back(contrib); - hit->energyDeposit += contrib.deposit; - - + //hit->energyDeposit += contrib.deposit; + hit->energyDeposit += h.totalEnergy(); + //std::cout << "Apply Birk law: before = " << contrib.deposit << " after = " << h.totalEnergy() << std::endl; return true; } diff --git a/Simulation/DetSimSD/src/CalorimeterSensDetTool.cpp b/Simulation/DetSimSD/src/CalorimeterSensDetTool.cpp index 4219802f2f0df1bdc46be9552fd9661b3376295e..8e405936b96a00ad6a6bf6849211702e776cb76a 100644 --- a/Simulation/DetSimSD/src/CalorimeterSensDetTool.cpp +++ b/Simulation/DetSimSD/src/CalorimeterSensDetTool.cpp @@ -42,9 +42,13 @@ CalorimeterSensDetTool::createSD(const std::string& name) { break; } } - G4VSensitiveDetector* sd = new CaloSensitiveDetector(name, *dd4hep_geo, is_merge_enabled); + CaloSensitiveDetector* sd = new CaloSensitiveDetector(name, *dd4hep_geo, is_merge_enabled); debug() << name << " set to merge true/false = " << is_merge_enabled << endmsg; + auto sens = dd4hep_geo->sensitiveDetector(name); + std::string typ = sens.type(); + if(typ=="scintillator"&&m_applyBirksLaw) sd->ApplyBirksLaw(); + return sd; } diff --git a/Simulation/DetSimSD/src/CalorimeterSensDetTool.h b/Simulation/DetSimSD/src/CalorimeterSensDetTool.h index 549de18d10ee548d6ba2daa3f2734d65f3b156ee..00bdb69c568e20654c35cf3888ca6a00723dd78d 100644 --- a/Simulation/DetSimSD/src/CalorimeterSensDetTool.h +++ b/Simulation/DetSimSD/src/CalorimeterSensDetTool.h @@ -30,6 +30,7 @@ private: SmartIF<IGeomSvc> m_geosvc; Gaudi::Property<std::vector<std::string> > m_listCalsMergeDisable{this, "CalNamesMergeDisable", {}}; + Gaudi::Property<bool> m_applyBirksLaw{this, "ApplyBirksLaw", true}; }; #endif