Skip to content
Snippets Groups Projects
Commit b4d39757 authored by Tamara Vazquez Schroeder's avatar Tamara Vazquez Schroeder
Browse files

Merge branch 'SCT_Overlay_Cluster_Size_v3' into '21.0'

Fix SCT cluster size issue in overlay MC

See merge request atlas/athena!10882

Former-commit-id: b41912961f8c9c48d65b2feb62ccb759dca05488
parents 1e18fe95 bdd91eb1
No related branches found
No related tags found
No related merge requests found
......@@ -116,39 +116,34 @@ def getSCT_SurfaceChargesGenerator(name="SCT_SurfaceChargesGenerator", **kwargs)
def getSCT_FrontEnd(name="SCT_FrontEnd", **kwargs):
from Digitization.DigitizationFlags import digitizationFlags
#Setup noise treament in SCT_FrontEnd
# To set the mean noise values for the different module types
# Default values set at 0 degrees, plus/minus ~5 enc per plus/minus degree
kwargs.setdefault("NoiseBarrel", 1500.0)
kwargs.setdefault("NoiseBarrel3", 1541.0)
kwargs.setdefault("NoiseInners", 1090.0)
kwargs.setdefault("NoiseMiddles", 1557.0)
kwargs.setdefault("NoiseShortMiddles", 940.0)
kwargs.setdefault("NoiseOuters", 1618.0)
kwargs.setdefault("NOBarrel", 1.5e-5)
kwargs.setdefault("NOBarrel3", 2.1e-5)
kwargs.setdefault("NOInners", 5.0e-9)
kwargs.setdefault("NOMiddles", 2.7e-5)
kwargs.setdefault("NOShortMiddles", 2.0e-9)
kwargs.setdefault("NOOuters", 3.5e-5)
# If noise is turned off:
if not digitizationFlags.doInDetNoise.get_Value():
###kwargs.setdefault("OnlyHitElements", True)
print 'SCT_Digitization:::: Turned off Noise in SCT_FrontEnd'
kwargs.setdefault("NoiseBarrel", 0.0)
kwargs.setdefault("NoiseBarrel3", 0.0)
kwargs.setdefault("NoiseInners", 0.0)
kwargs.setdefault("NoiseMiddles", 0.0)
kwargs.setdefault("NoiseShortMiddles", 0.0)
kwargs.setdefault("NoiseOuters", 0.0)
kwargs.setdefault("NOBarrel", 0.0)
kwargs.setdefault("NOBarrel3", 0.0)
kwargs.setdefault("NOInners", 0.0)
kwargs.setdefault("NOMiddles", 0.0)
kwargs.setdefault("NOShortMiddles", 0.0)
kwargs.setdefault("NOOuters", 0.0)
kwargs.setdefault("NoiseOn", False)
# To set the mean noise values for the different module types
# Default values set at 0 degrees, plus/minus ~5 enc per plus/minus degree
kwargs.setdefault("AnalogueNoiseOn", False)
else:
kwargs.setdefault("NoiseBarrel", 1500.0)
kwargs.setdefault("NoiseBarrel3", 1541.0)
kwargs.setdefault("NoiseInners", 1090.0)
kwargs.setdefault("NoiseMiddles", 1557.0)
kwargs.setdefault("NoiseShortMiddles", 940.0)
kwargs.setdefault("NoiseOuters", 1618.0)
kwargs.setdefault("NOBarrel", 1.5e-5)
kwargs.setdefault("NOBarrel3", 2.1e-5)
kwargs.setdefault("NOInners", 5.0e-9)
kwargs.setdefault("NOMiddles", 2.7e-5)
kwargs.setdefault("NOShortMiddles", 2.0e-9)
kwargs.setdefault("NOOuters", 3.5e-5)
kwargs.setdefault("NoiseOn", True)
kwargs.setdefault("AnalogueNoiseOn", True)
# In overlay MC, only analogue noise is on. Noise hits are not added.
from AthenaCommon.GlobalFlags import globalflags
if globalflags.isOverlay() and globalflags.DataSource == 'geant4':
kwargs["NoiseOn"] = False
kwargs["AnalogueNoiseOn"] = True
# Use Calibration data from Conditions DB, still for testing purposes only
kwargs.setdefault("UseCalibData", True)
# Setup the ReadCalibChip folders and Svc
......@@ -164,7 +159,6 @@ def getSCT_FrontEnd(name="SCT_FrontEnd", **kwargs):
ServiceMgr += InDetSCT_ReadCalibChipDataSvc
# DataCompressionMode: 1 is level mode x1x (default), 2 is edge mode 01x, 3 is expanded any hit xxx
from AthenaCommon.BeamFlags import jobproperties
from AthenaCommon.GlobalFlags import globalflags
if digitizationFlags.PileUpPremixing:
kwargs.setdefault("DataCompressionMode", 3)
elif globalflags.isOverlay() and globalflags.DataSource == 'geant4':
......
......@@ -58,6 +58,8 @@ SCT_FrontEnd::SCT_FrontEnd(const std::string &type, const std::string &name,
declareProperty("NOOuters", m_NOOuters = 3.5e-5, "NoiseOccupancyOuters");
declareProperty("NoiseOn", m_NoiseOn = true,
"To know if noise is on or off when using calibration data");
declareProperty("AnalogueNoiseOn", m_analogueNoiseOn = true,
"To know if analogue noise is on or off");
declareProperty("GainRMS", m_GainRMS = 0.031,
"Gain spread parameter within the strips for a given Chip gain");
declareProperty("Ospread", m_Ospread = 0.0001,
......@@ -88,6 +90,11 @@ SCT_FrontEnd::~SCT_FrontEnd() {
// Initialize
// ----------------------------------------------------------------------
StatusCode SCT_FrontEnd::initialize() {
if (m_NoiseOn and (not m_analogueNoiseOn)) {
ATH_MSG_FATAL("AnalogueNoiseOn/m_analogueNoiseOn should be true if NoiseOn/m_NoiseOn is true.");
return StatusCode::FAILURE;
}
// should not neec this?
m_sc = AthAlgTool::initialize();
if (m_sc.isFailure()) {
......@@ -212,7 +219,7 @@ StatusCode SCT_FrontEnd::prepareGainAndOffset(
// To set noise values for different module types, barrel, EC, inners,
// middles,
// short middles, and outers
if (m_NoiseOn) {
if (m_analogueNoiseOn) {
if (m_sct_id->barrel_ec(moduleId) == 0) { // barrel_ec=0 corresponds to
// barrel
if (m_sct_id->layer_disk(moduleId) == 3) { // outer barrel layer 10
......@@ -357,7 +364,7 @@ StatusCode SCT_FrontEnd::prepareGainAndOffset(
"OffsetRMSByChip");
std::vector<float> noiseByChipVect(6, 0.0);
if (m_NoiseOn) { // Check if noise should be on or off
if (m_analogueNoiseOn) { // Check if noise should be on or off
noiseByChipVect = m_ReadCalibChipDataSvc->getNPtGainData(moduleId, side,
"NoiseByChip");
}
......@@ -643,7 +650,7 @@ StatusCode SCT_FrontEnd::randomNoise(SiChargedDiodeCollection &collection, const
// hit
// Add tbin info to noise diode
if (noise_expanded_mode) { // !< if any hit mode, any time bin otherwise fixed tbin=2
int noise_tbin = CLHEP::RandFlat::shootInt(m_rndmEngine, 2);
int noise_tbin = CLHEP::RandFlat::shootInt(m_rndmEngine, 3);
// !< random number 0, 1 or 2
if (noise_tbin == 0) {
noise_tbin = 4; // !< now 1,2 or 4
......@@ -771,7 +778,7 @@ StatusCode SCT_FrontEnd::randomNoise(SiChargedDiodeCollection &collection, const
// Add tbin info to noise diode
if (noise_expanded_mode) { // !< if any hit mode, any time bin
// !< otherwise fixed tbin=2
int noise_tbin = CLHEP::RandFlat::shootInt(m_rndmEngine, 2);
int noise_tbin = CLHEP::RandFlat::shootInt(m_rndmEngine, 3);
// !< random number 0, 1 or 2
if (noise_tbin == 0) {
noise_tbin = 4; // !< now 1, 2 or 4
......
......@@ -104,6 +104,7 @@ class SCT_FrontEnd : public AthAlgTool, virtual public ISCT_FrontEnd {
double m_NOShortMiddles ; //!< Noise Occupancy, EC Short Middles (in the case of no use of calibration data)
double m_NOOuters ; //!< Noise Occupancy, Ec Outers (in the case of no use of calibration data)
bool m_NoiseOn ; //!< To know if Noise is on or off when using calibration data)
bool m_analogueNoiseOn ; //!< To know if analogue noise is on or off
float m_GainRMS ; //!< Gain factor for gain generation
float m_Ospread ; //!< Offset factor for offset generation
float m_OGcorr ; //!< Gain-offset correlation factor
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment