ATLAS Offline Software
Loading...
Searching...
No Matches
PixelModuleConfigCondAlg.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
7#include "GaudiKernel/EventIDRange.h"
8#include <memory>
9#include <sstream>
10
12
13
14PixelModuleConfigCondAlg::PixelModuleConfigCondAlg(const std::string& name, ISvcLocator* pSvcLocator):
15 ::AthCondAlgorithm(name, pSvcLocator)
16{
17}
18
19StatusCode
21 ATH_MSG_DEBUG("PixelModuleConfigCondAlg::initialize()");
22 return m_writeKey.initialize();
23}
24
25StatusCode PixelModuleConfigCondAlg::execute(const EventContext& ctx) const {
26 ATH_MSG_DEBUG("PixelModuleConfigCondAlg::execute()");
27
29 if (writeHandle.isValid()) {
30 ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid.. In theory this should not be called, but may happen if multiple concurrent events are being processed out of order.");
31 return StatusCode::SUCCESS;
32 }
33
34 // Construct the output Cond Object and fill it in
35 std::unique_ptr<PixelModuleData> writeCdo(std::make_unique<PixelModuleData>());
36
37 const EventIDBase start{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, 0,
38 0, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
39 const EventIDBase stop {EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, EventIDBase::UNDEFNUM-1,
40 EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
41
42 writeCdo -> setDefaultBarrelAnalogThreshold(m_BarrelAnalogThreshold);
43 writeCdo -> setDefaultEndcapAnalogThreshold(m_EndcapAnalogThreshold);
44 writeCdo -> setDefaultBarrelAnalogThresholdSigma(m_BarrelAnalogThresholdSigma);
45 writeCdo -> setDefaultEndcapAnalogThresholdSigma(m_EndcapAnalogThresholdSigma);
46 writeCdo -> setDefaultBarrelAnalogThresholdNoise(m_BarrelAnalogThresholdNoise);
47 writeCdo -> setDefaultEndcapAnalogThresholdNoise(m_EndcapAnalogThresholdNoise);
48 writeCdo -> setDefaultBarrelInTimeThreshold(m_BarrelInTimeThreshold);
49 writeCdo -> setDefaultEndcapInTimeThreshold(m_EndcapInTimeThreshold);
50 writeCdo -> setBarrelThermalNoise(m_BarrelThermalNoise);
51 writeCdo -> setEndcapThermalNoise(m_EndcapThermalNoise);
52
53 // FEI3-specific parameters... only write if they are set
54 if (!m_FEI3BarrelLatency.empty()) {
55 // Use the above as the check... worth adding checks to see that all FEI3 vectors are non-zero?
56 writeCdo -> setFEI3BarrelLatency(m_FEI3BarrelLatency);
57 writeCdo -> setFEI3BarrelTimingSimTune(m_FEI3BarrelTimingSimTune);
58 writeCdo -> setFEI3EndcapLatency(m_FEI3EndcapLatency);
59 writeCdo -> setFEI3EndcapTimingSimTune(m_FEI3EndcapTimingSimTune);
60 }
61
62 // DBM-specific parameters... only write if they are set
63 if (!m_DBMToTThreshold.empty()) {
64 writeCdo -> setDefaultDBMAnalogThreshold(m_DBMAnalogThreshold);
65 writeCdo -> setDefaultDBMAnalogThresholdSigma(m_DBMAnalogThresholdSigma);
66 writeCdo -> setDefaultDBMAnalogThresholdNoise(m_DBMAnalogThresholdNoise);
67 writeCdo -> setDefaultDBMInTimeThreshold(m_DBMInTimeThreshold);
68 writeCdo -> setDBMThermalNoise(m_DBMThermalNoise);
69 }
70
71 // Charge calibration parameters
72 writeCdo -> setDefaultQ2TotA(m_CalibrationParameterA);
73 writeCdo -> setDefaultQ2TotE(m_CalibrationParameterE);
74 writeCdo -> setDefaultQ2TotC(m_CalibrationParameterC);
75
76 // DCS parameters
77 writeCdo -> setDefaultBiasVoltage(m_biasVoltage);
78
79
80 // Cabling parameters
81 writeCdo -> setCablingMapToFile(m_cablingMapToFile);
82 writeCdo -> setCablingMapFileName(m_cablingMapFileName);
83
84 // mapping files for radiation damage simulation
85 std::vector<std::string> mapsPath_list;
86 std::vector<std::string> mapsPath_list3D;
87
88 writeCdo -> setBarrelToTThreshold(m_BarrelToTThreshold);
89 writeCdo -> setBarrelCrossTalk(m_BarrelCrossTalk);
90 writeCdo -> setBarrelNoiseOccupancy(m_BarrelNoiseOccupancy);
91 writeCdo -> setBarrelDisableProbability(m_BarrelDisableProbability);
92
93 writeCdo -> setEndcapToTThreshold(m_EndcapToTThreshold);
94 writeCdo -> setEndcapCrossTalk(m_EndcapCrossTalk);
95 writeCdo -> setEndcapNoiseOccupancy(m_EndcapNoiseOccupancy);
96 writeCdo -> setEndcapDisableProbability(m_EndcapDisableProbability);
97
99 writeCdo -> setEndcapNoiseShape(std::vector<std::vector<float>>(m_EndcapToTThreshold.size(), m_PixelNoiseShape));
100
101 // Radiation damage simulation
102 writeCdo -> setFluenceLayer(m_BarrelFluence);
103 for (size_t i=0; i<m_BarrelFluenceMap.size(); i++) {
104 mapsPath_list.push_back(PathResolverFindCalibFile(m_BarrelFluenceMap[i]));
105 }
106
107 // Radiation damage simulation for 3D sensor
108 writeCdo -> setFluenceLayer3D(m_3DFluence);
109 for (size_t i=0; i<m_3DFluenceMap.size(); i++) {
110 mapsPath_list3D.push_back(PathResolverFindCalibFile(m_3DFluenceMap[i]));
111 }
112
113 //=======================
114 // Combine time interval
115 //=======================
116 EventIDRange rangeW{start, stop};
117 if (rangeW.stop().isValid() && rangeW.start()>rangeW.stop()) {
118 ATH_MSG_FATAL("Invalid intersection rangeW: " << rangeW);
119 return StatusCode::FAILURE;
120 }
121
122 if (writeHandle.record(rangeW, std::move(writeCdo)).isFailure()) {
123 ATH_MSG_FATAL("Could not record PixelModuleData " << writeHandle.key() << " with EventRange " << rangeW << " into Conditions Store");
124 return StatusCode::FAILURE;
125 }
126 ATH_MSG_INFO("recorded new CDO " << writeHandle.key() << " with range " << rangeW << " into Conditions Store");
127
128 return StatusCode::SUCCESS;
129}
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Base class for conditions algorithms.
Gaudi::Property< std::vector< double > > m_EndcapCrossTalk
virtual StatusCode execute(const EventContext &ctx) const override final
Gaudi::Property< std::vector< int > > m_DBMInTimeThreshold
Gaudi::Property< std::vector< int > > m_EndcapToTThreshold
Gaudi::Property< std::vector< std::string > > m_3DFluenceMap
Gaudi::Property< std::vector< int > > m_BarrelAnalogThresholdSigma
Gaudi::Property< std::vector< int > > m_DBMAnalogThresholdNoise
Gaudi::Property< std::vector< int > > m_BarrelToTThreshold
Gaudi::Property< std::vector< int > > m_EndcapAnalogThreshold
Gaudi::Property< std::vector< int > > m_FEI3BarrelLatency
Gaudi::Property< float > m_CalibrationParameterE
Gaudi::Property< std::vector< int > > m_DBMAnalogThreshold
Gaudi::Property< bool > m_cablingMapToFile
Gaudi::Property< std::vector< int > > m_EndcapInTimeThreshold
virtual StatusCode initialize() override final
Gaudi::Property< float > m_CalibrationParameterC
Gaudi::Property< std::vector< double > > m_EndcapDisableProbability
Gaudi::Property< std::vector< int > > m_BarrelInTimeThreshold
Gaudi::Property< std::vector< int > > m_DBMAnalogThresholdSigma
Gaudi::Property< std::vector< int > > m_EndcapAnalogThresholdNoise
Gaudi::Property< std::vector< double > > m_BarrelNoiseOccupancy
Gaudi::Property< std::vector< double > > m_BarrelFluence
Gaudi::Property< float > m_CalibrationParameterA
Gaudi::Property< std::vector< int > > m_EndcapAnalogThresholdSigma
Gaudi::Property< std::vector< double > > m_EndcapThermalNoise
Gaudi::Property< std::vector< int > > m_BarrelAnalogThreshold
Gaudi::Property< std::vector< int > > m_FEI3EndcapLatency
Gaudi::Property< std::vector< double > > m_DBMThermalNoise
Gaudi::Property< std::vector< int > > m_FEI3BarrelTimingSimTune
Gaudi::Property< std::vector< int > > m_FEI3EndcapTimingSimTune
Gaudi::Property< std::vector< float > > m_InnermostNoiseShape
Gaudi::Property< std::vector< int > > m_DBMToTThreshold
Gaudi::Property< std::vector< double > > m_BarrelThermalNoise
Gaudi::Property< std::vector< float > > m_PixelNoiseShape
Gaudi::Property< std::vector< int > > m_BarrelAnalogThresholdNoise
Gaudi::Property< std::vector< double > > m_3DFluence
SG::WriteCondHandleKey< PixelModuleData > m_writeKey
Gaudi::Property< std::vector< double > > m_BarrelCrossTalk
Gaudi::Property< std::vector< std::string > > m_BarrelFluenceMap
Gaudi::Property< std::vector< float > > m_NextInnermostNoiseShape
Gaudi::Property< std::string > m_cablingMapFileName
Gaudi::Property< std::vector< double > > m_EndcapNoiseOccupancy
PixelModuleConfigCondAlg(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< std::vector< double > > m_BarrelDisableProbability
Gaudi::Property< float > m_biasVoltage
const std::string & key() const
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
const DataObjID & fullKey() const