diff --git a/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfig.py b/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfig.py index a91384df66ac5edd0b2469f7b4ab7bf6a91afb0e..2b2b09cba25790105523aef717991252cd3183eb 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfig.py +++ b/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfig.py @@ -4,7 +4,7 @@ from __future__ import print_function from AthenaCommon import CfgMgr from Digitization.DigitizationFlags import digitizationFlags - + # The earliest bunch crossing time for which interactions will be sent # to the Pixel Digitization code. def Pixel_FirstXing(): @@ -55,12 +55,24 @@ def SensorSimPlanarTool(name="SensorSimPlanarTool", **kwargs): from AthenaCommon.AppMgr import ToolSvc kwargs.setdefault("SiPropertiesTool", ToolSvc.PixelSiPropertiesTool) kwargs.setdefault("LorentzAngleTool", ToolSvc.PixelLorentzAngleTool) -# kwargs.setdefault("LorentzAngleTool", pixelLorentzAngleToolSetup.PixelLorentzAngleTool) + kwargs.setdefault("doRadDamage", digitizationFlags.doRadiationDamage.get_Value()) + # TODO This is 2018 fluence setting. These parameters should be controlled by the conditions data. + kwargs.setdefault("fluence", 6.4) + kwargs.setdefault("fluenceB", 4.6) + kwargs.setdefault("fluence1", 2.1) + kwargs.setdefault("fluence2", 1.3) + kwargs.setdefault("voltage", 400) + kwargs.setdefault("voltageB", 400) + kwargs.setdefault("voltage1", 250) + kwargs.setdefault("voltage2", 250) return CfgMgr.SensorSimPlanarTool(name, **kwargs) def SensorSim3DTool(name="SensorSim3DTool", **kwargs): from AthenaCommon.AppMgr import ToolSvc kwargs.setdefault("SiPropertiesTool", ToolSvc.PixelSiPropertiesTool) + kwargs.setdefault("doRadDamage", digitizationFlags.doRadiationDamage.get_Value()) + # TODO This is 2018 fluence setting. These parameters should be controlled by the conditions data. + kwargs.setdefault("fluence", 6) return CfgMgr.SensorSim3DTool(name, **kwargs) def SensorSimTool(name="SensorSimTool", **kwargs): diff --git a/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfigNew.py b/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfigNew.py index d01cd5f28bc865ef19459935f6185e5e71f95132..bb9daa4ff5bf9f4786a53e5400212902e73b7c31 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfigNew.py +++ b/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfigNew.py @@ -83,6 +83,16 @@ def SensorSimPlanarToolCfg(flags, name="SensorSimPlanarTool", **kwargs): kwargs.setdefault("SiPropertiesTool", SiTool) kwargs.setdefault("LorentzAngleTool", LorentzTool) SensorSimPlanarTool = CompFactory.SensorSimPlanarTool + kwargs.setdefault("doRadDamage", flags.Digitization.DoRadiationDamage) + # TODO This is 2018 fluence setting. These parameters should be controlled by the conditions data. + kwargs.setdefault("fluence", 6.4) + kwargs.setdefault("fluenceB", 4.6) + kwargs.setdefault("fluence1", 2.1) + kwargs.setdefault("fluence2", 1.3) + kwargs.setdefault("voltage", 400) + kwargs.setdefault("voltageB", 400) + kwargs.setdefault("voltage1", 250) + kwargs.setdefault("voltage2", 250) acc.setPrivateTools(SensorSimPlanarTool(name, **kwargs)) return acc @@ -94,6 +104,9 @@ def SensorSim3DToolCfg(flags, name="SensorSim3DTool", **kwargs): acc.popToolsAndMerge(PixelLorentzAngleCfg(flags)) kwargs.setdefault("SiPropertiesTool", SiTool) SensorSim3DTool = CompFactory.SensorSim3DTool + kwargs.setdefault("doRadDamage", flags.Digitization.DoRadiationDamage) + # TODO This is 2018 fluence setting. These parameters should be controlled by the conditions data. + kwargs.setdefault("fluence", 6) acc.setPrivateTools(SensorSim3DTool(name, **kwargs)) return acc diff --git a/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSim3DTool.cxx b/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSim3DTool.cxx index 7d783d4d5054e52dbe002662cd3e8570d88309ca..0ac99797f98f03f7b95d3bbf36ca9b9386264f2f 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSim3DTool.cxx +++ b/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSim3DTool.cxx @@ -51,35 +51,35 @@ StatusCode SensorSim3DTool::initialize() { if (!m_doRadDamage) { m_fluence=0; } - if (m_fluence==1) { + if (static_cast<int>(m_fluence)==1) { mapsPath_list.push_back(PathResolverFindCalibFile("PixelDigitization/TCAD_IBL_3Dsensors_efields/phi_0_20V.root")); m_fluence_layers.push_back(1e-10); } - else if (m_fluence==2) { + else if (static_cast<int>(m_fluence)==2) { mapsPath_list.push_back(PathResolverFindCalibFile("PixelDigitization/TCAD_IBL_3Dsensors_efields/phi_1e14_20V.root")); m_fluence_layers.push_back(1e14); } - else if (m_fluence==3) { + else if (static_cast<int>(m_fluence)==3) { mapsPath_list.push_back(PathResolverFindCalibFile("PixelDigitization/TCAD_IBL_3Dsensors_efields/phi_2e14_30V.root")); m_fluence_layers.push_back(2e14); } - else if (m_fluence==4) { + else if (static_cast<int>(m_fluence)==4) { mapsPath_list.push_back(PathResolverFindCalibFile("PixelDigitization/TCAD_IBL_3Dsensors_efields/phi_5e14_40V.root")); m_fluence_layers.push_back(5e14); } - else if (m_fluence==5) { + else if (static_cast<int>(m_fluence)==5) { mapsPath_list.push_back(PathResolverFindCalibFile("PixelDigitization/TCAD_IBL_3Dsensors_efields/phi_1e15_50V.root")); m_fluence_layers.push_back(1e15); } - else if (m_fluence==6) { + else if (static_cast<int>(m_fluence)==6) { mapsPath_list.push_back(PathResolverFindCalibFile("PixelDigitization/TCAD_IBL_3Dsensors_efields/phi_5e15_160V.root")); m_fluence_layers.push_back(5e15); } - else if (m_fluence==7) { + else if (static_cast<int>(m_fluence)==7) { mapsPath_list.push_back(PathResolverFindCalibFile("PixelDigitization/TCAD_IBL_3Dsensors_efields/phi_6e15_190V_new.root")); m_fluence_layers.push_back(6e15); } - else if (m_fluence==8) { + else if (static_cast<int>(m_fluence)==8) { mapsPath_list.push_back(PathResolverFindCalibFile("PixelDigitization/TCAD_IBL_3Dsensors_efields/phi_1e16_260V_new.root")); m_fluence_layers.push_back(1e16); } diff --git a/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSim3DTool.h b/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSim3DTool.h index 34a3b8ab1206bd84088cc7b507818bef53af15e1..70b71af3106192d1d9f60b082c753beb6da71b9f 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSim3DTool.h +++ b/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSim3DTool.h @@ -80,7 +80,7 @@ class SensorSim3DTool : public SensorSimTool { Gaudi::Property<bool> m_doChunkCorrection {this, "doChunkCorrection", false, "doChunkCorrection bool: should be flag"}; - Gaudi::Property<int> m_fluence + Gaudi::Property<double> m_fluence {this, "fluence", 0, "this is the fluence benchmark, 0-6. 0 is unirradiated, 1 is start of Run 2, 5 is end of 2018 and 6 is projected end of 2018"}; Gaudi::Property<double> m_trappingTimeElectrons diff --git a/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSimPlanarTool.cxx b/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSimPlanarTool.cxx index 985ac58eebcbad5deace49ca5b680f9de8053551..df14c3d5aececbc9c238dc01ee0e660841e95da1 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSimPlanarTool.cxx +++ b/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSimPlanarTool.cxx @@ -68,7 +68,7 @@ StatusCode SensorSimPlanarTool::initialize() { // For each layer one configuration TCADpath_list = {iblFiles, sensorFiles, sensorFiles, sensorFiles}; //IBL - 200um sensor depth, B layer - 20um, layer 1, layer 2 - if (m_fluence==1) { + if (static_cast<int>(m_fluence)==1) { ATH_MSG_INFO("Use benchmark point 1!"); mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_80V_fl0em10.root") ); //IBL PL - Barrel mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_250V_fl7e13.root") ); //B-Layer - Barrel @@ -85,7 +85,7 @@ StatusCode SensorSimPlanarTool::initialize() { m_voltage_layers.push_back(150); m_voltage_layers.push_back(150); } - else if (m_fluence==2) { + else if (static_cast<int>(m_fluence)==2) { ATH_MSG_INFO("Use benchmark point 2!"); mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_80V_fl1e14.root") ); @@ -103,7 +103,7 @@ StatusCode SensorSimPlanarTool::initialize() { m_voltage_layers.push_back(200); m_voltage_layers.push_back(150); } - else if (m_fluence==3) { + else if (static_cast<int>(m_fluence)==3) { ATH_MSG_INFO("Use benchmark point 3!"); mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_80V_fl2e14.root") ); mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_350V_fl1_7e14.root") ); @@ -120,7 +120,7 @@ StatusCode SensorSimPlanarTool::initialize() { m_voltage_layers.push_back(200); m_voltage_layers.push_back(150); } - else if (m_fluence==4) { + else if (static_cast<int>(m_fluence)==4) { ATH_MSG_INFO("Use benchmark point 4!"); mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_150V_fl2e14.root") ); @@ -138,7 +138,7 @@ StatusCode SensorSimPlanarTool::initialize() { m_voltage_layers.push_back(200); m_voltage_layers.push_back(150); } - else if (m_fluence==5) { + else if (static_cast<int>(m_fluence)==5) { ATH_MSG_INFO("Use benchmark point 5!"); mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_350V_fl5e14.root") ); @@ -156,7 +156,7 @@ StatusCode SensorSimPlanarTool::initialize() { m_voltage_layers.push_back(200); m_voltage_layers.push_back(150); } - else if (m_fluence==6) { + else if (static_cast<int>(m_fluence)==6) { ATH_MSG_INFO("Use benchmark point 6!"); mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_400V_fl8_7e14.root") ); @@ -174,7 +174,7 @@ StatusCode SensorSimPlanarTool::initialize() { m_voltage_layers.push_back(250); m_voltage_layers.push_back(250); } - else if (m_fluence==7) { + else if (static_cast<int>(m_fluence)==7) { ATH_MSG_INFO("Use benchmark point 7!"); mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_endLHC.root") ); diff --git a/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSimPlanarTool.h b/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSimPlanarTool.h index 2afbac5510d1990403d21d33e7bbff71b4fbadb3..3db9f5b5e22d13bca13f2be9bc14d169277d1857 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSimPlanarTool.h +++ b/InnerDetector/InDetDigitization/PixelDigitization/src/SensorSimPlanarTool.h @@ -62,16 +62,16 @@ class SensorSimPlanarTool : public SensorSimTool { Gaudi::Property<double> m_trappingTimeHoles {this, "trappingTimeHoles", 0.0, "Characteristic time till hole is trapped [ns]"}; - Gaudi::Property<int> m_fluence + Gaudi::Property<double> m_fluence {this, "fluence", 0, "this is the fluence benchmark, 0-6. 0 is unirradiated, 1 is start of Run 2, 5 is end of 2018 and 6 is projected end of 2018"}; - Gaudi::Property<int> m_fluenceB + Gaudi::Property<double> m_fluenceB {this, "fluenceB", -1, "fluence detector has recieved in neqcm2 at the B layer."}; - Gaudi::Property<int> m_fluence1 + Gaudi::Property<double> m_fluence1 {this, "fluence1", -1, "fluence detector has recieved in neqcm2 at the layer 1."}; - Gaudi::Property<int> m_fluence2 + Gaudi::Property<double> m_fluence2 {this, "fluence2", -1, "fluence detector has recieved in neqcm2 at the layer 2."}; Gaudi::Property<double> m_voltage diff --git a/Simulation/Digitization/python/DigiAlgConfig.py b/Simulation/Digitization/python/DigiAlgConfig.py index f40254bc5529268fb7534cff9f162e4e1b90bd0b..73cd7cb4c84f179d48b76743037897e11f817b52 100644 --- a/Simulation/Digitization/python/DigiAlgConfig.py +++ b/Simulation/Digitization/python/DigiAlgConfig.py @@ -118,8 +118,6 @@ def getStandardInDetPileUpTools(): PileUpToolsList += [ "PixelLightDigitizationTool" ] elif 'doSmearedPixelDigi' in digitizationFlags.experimentalDigi(): PileUpToolsList += [ "PixelSmearedDigitizationTool" ] - elif digitizationFlags.doRadiationDamage(): - PileUpToolsList += [ "PixelRadDamDigitizationTool" ] else: PileUpToolsList += [ "PixelDigitizationTool" ] if DetFlags.digitize.SCT_on(): diff --git a/Simulation/Digitization/python/DigitizationConfigFlags.py b/Simulation/Digitization/python/DigitizationConfigFlags.py index feab44fe3826edfb64785e40c34bcd0c740163b5..8c37d85be85293a14a35850404d760ccd7737010 100644 --- a/Simulation/Digitization/python/DigitizationConfigFlags.py +++ b/Simulation/Digitization/python/DigitizationConfigFlags.py @@ -95,6 +95,9 @@ def createDigitizationCfgFlags(): # Override the HIT file Run Number with one from a data run flags.addFlag("Digitization.DataRunNumber", -1) + # Run radiation damage simulation + flags.addFlag("Digitization.DoRadiationDamage", False) + # for PileUp digitization # Beam Halo input collections flags.addFlag("Digitization.PU.BeamHaloInputCols", [])