Skip to content
Snippets Groups Projects
Commit bdd91eb1 authored by Susumu Oda's avatar Susumu Oda Committed by Tamara Vazquez Schroeder
Browse files

Fix SCT cluster size issue in overlay MC

Former-commit-id: 29c965176cf46e6eaba47d6963888711baea50e3
parent 1e18fe95
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