ATLAS Offline Software
ITkStripFrontEnd.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef SCT_DIGITIZATION_ITkStripFrontEnd_H
5 #define SCT_DIGITIZATION_ITkStripFrontEnd_H
6 // Inheritance
9 // Athena
12 // Gaudi
13 #include "GaudiKernel/ToolHandle.h"
14 // STL
15 #include <string>
16 
17 class SCT_ID;
18 
19 namespace InDetDD {
20  class SCT_DetectorManager;
21 }
22 
23 namespace CLHEP {
24  class HepRandomEngine;
25 }
35  std::vector<float> m_GainFactor;
36  std::array<std::vector<float>, 3> m_Analogue{};
37  std::vector<int> m_StripHitsOnWafer;
38 };
39 
40 
41 class ITkStripFrontEnd : public extends<AthAlgTool, IFrontEnd> {
42  public:
44  ITkStripFrontEnd(const std::string& type, const std::string& name, const IInterface* parent);
46  virtual ~ITkStripFrontEnd() = default;
48  virtual StatusCode initialize() override;
50  //
56  virtual void process(SiChargedDiodeCollection& collection, CLHEP::HepRandomEngine* rndmEngine) const override;
57  void doSignalChargeForHits(SiChargedDiodeCollection& collectione, ITkStripFrontEndData& data, const int& stripMax) const;
58  void doThresholdCheckForRealHits(SiChargedDiodeCollection& collectione, ITkStripFrontEndData& data, const int& stripMax) const;
59  // StatusCode doThresholdCheckForCrosstalkHits(SiChargedDiodeCollection& collection, ITkStripFrontEndData& data, const int& stripMax) const;
60  // StatusCode doClustering(SiChargedDiodeCollection& collection, ITkStripFrontEndData& data, const int& stripMax) const;
61  // StatusCode prepareGainAndOffset(SiChargedDiodeCollection& collection, const Identifier& moduleId, CLHEP::HepRandomEngine* rndmEngine, ITkStripFrontEndData& data, const int& stripMax) const;
62  // StatusCode randomNoise(SiChargedDiodeCollection& collection, const Identifier& moduleId, CLHEP::HepRandomEngine* rndmEngine, ITkStripFrontEndData& data, const int& stripMax) const;
63  // StatusCode addNoiseDiode(SiChargedDiodeCollection& collection, int strip, int tbin) const;
64  static float meanValue(std::vector<float>& calibDataVect) ;
65  void initVectors(int strips, ITkStripFrontEndData& data) const;
66 
67 
68  private:
69 
70  enum CompressionMode { Level_X1X=1, Edge_01X=2, AnyHit_1XX_X1X_XX1=3 }; // Used for m_data_compression_mode (DataCompressionMode)
71  enum ReadOutMode { Condensed=0, Expanded=1 }; // Used for m_data_readout_mode (DataReadOutMode)
72 
73  FloatProperty m_NoiseBarrel{this, "NoiseBarrel", 1500.0, "Noise factor, Barrel (in the case of no use of calibration data)"};
74  FloatProperty m_NoiseBarrel3{this, "NoiseBarrel3", 1541.0, "Noise factor, Barrel3 (in the case of no use of calibration data)"};
75  FloatProperty m_NoiseInners{this, "NoiseInners", 1090.0, "Noise factor, EC Inners (in the case of no use of calibration data)"};
76  FloatProperty m_NoiseMiddles{this, "NoiseMiddles", 1557.0, "Noise factor, EC Middles (in the case of no use of calibration data)"};
77  FloatProperty m_NoiseShortMiddles{this, "NoiseShortMiddles", 940.0, "Noise factor, EC Short Middles (in the case of no use of calibration data)"};
78  FloatProperty m_NoiseOuters{this, "NoiseOuters", 1618.0, "Noise factor, Ec Outers (in the case of no use of calibration data)"};
79  DoubleProperty m_NOBarrel{this, "NOBarrel", 1.5e-5, "Noise factor, Barrel (in the case of no use of calibration data)"};
80  DoubleProperty m_NOBarrel3{this, "NOBarrel3", 2.1e-5, "Noise factor, Barrel3 (in the case of no use of calibration data)"};
81  DoubleProperty m_NOInners{this, "NOInners", 5.0e-9, "Noise Occupancy, EC Inners (in the case of no use of calibration data)"};
82  DoubleProperty m_NOMiddles{this, "NOMiddles", 2.7e-5, "Noise Occupancy, EC Middles (in the case of no use of calibration data)"};
83  DoubleProperty m_NOShortMiddles{this, "NOShortMiddles", 2.0e-9, "Noise Occupancy, EC Short Middles (in the case of no use of calibration data)"};
84  DoubleProperty m_NOOuters{this, "NOOuters", 3.5e-5, "Noise Occupancy, Ec Outers (in the case of no use of calibration data)"};
85  BooleanProperty m_NoiseOn{this, "NoiseOn", true, "To know if noise is on or off when using calibration data"};
86  BooleanProperty m_analogueNoiseOn{this, "AnalogueNoiseOn", true, "To know if analogue noise is on or off"};
87  FloatProperty m_GainRMS{this, "GainRMS", 0.031, "Gain spread parameter within the strips for a given Chip gain"};
88  FloatProperty m_Ospread{this, "Ospread", 0.0001, "offset spread within the strips for a given Chip offset"};
89  FloatProperty m_OGcorr{this, "OffsetGainCorrelation", 0.00001, "Gain/offset correlation for the strips"};
90  FloatProperty m_Threshold{this, "Threshold", 1.0, "Threshold"};
91  FloatProperty m_timeOfThreshold{this, "TimeOfThreshold", 30.0, "Threshold time"};
92  ShortProperty m_data_compression_mode{this, "DataCompressionMode", Edge_01X, "Front End Data Compression Mode: 1 is level mode X1X (default), 2 is edge mode 01X, 3 is any hit mode (1XX|X1X|XX1)"};
93  ShortProperty m_data_readout_mode{this, "DataReadOutMode", Condensed, "Front End Data Read out mode Mode: 0 is condensed mode and 1 is expanded mode"};
94  ToolHandle<IAmplifier> m_strip_amplifier{this, "ITkStripAmp", "ITkStripAmp", "Handle the Amplifier tool"};
95 
96 
98  const SCT_ID* m_ITkStripId{nullptr};
99  StringProperty m_detMgrName{this, "DetectorManager", "SCT", "Name of DetectorManager to retrieve"};
100 };
101 
102 
103 
104 
105 #endif //ITkStripFrontEnd_H
ITkStripFrontEnd::ITkStripFrontEnd
ITkStripFrontEnd(const std::string &type, const std::string &name, const IInterface *parent)
constructor
Definition: ITkStripFrontEnd.cxx:22
ITkStripFrontEnd::doSignalChargeForHits
void doSignalChargeForHits(SiChargedDiodeCollection &collectione, ITkStripFrontEndData &data, const int &stripMax) const
Definition: ITkStripFrontEnd.cxx:141
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
ITkStripFrontEnd::m_detMgrName
StringProperty m_detMgrName
Definition: ITkStripFrontEnd.h:99
ITkStripFrontEnd::m_NOBarrel
DoubleProperty m_NOBarrel
Definition: ITkStripFrontEnd.h:79
ITkStripFrontEnd::m_analogueNoiseOn
BooleanProperty m_analogueNoiseOn
Definition: ITkStripFrontEnd.h:86
InDetDD::SCT_DetectorManager
Definition: SCT_DetectorManager.h:49
ITkStripFrontEnd::~ITkStripFrontEnd
virtual ~ITkStripFrontEnd()=default
Destructor.
ITkStripFrontEnd::Expanded
@ Expanded
Definition: ITkStripFrontEnd.h:71
ITkStripFrontEnd::m_NoiseOuters
FloatProperty m_NoiseOuters
Definition: ITkStripFrontEnd.h:78
ITkStripFrontEnd::Level_X1X
@ Level_X1X
Definition: ITkStripFrontEnd.h:70
ITkStripFrontEnd::process
virtual void process(SiChargedDiodeCollection &collection, CLHEP::HepRandomEngine *rndmEngine) const override
use the baseclass default finalize
Definition: ITkStripFrontEnd.cxx:91
ITkStripFrontEnd::m_ITkStripMgr
const InDetDD::SCT_DetectorManager * m_ITkStripMgr
Handle to SCT detector manager, also valid for ITkStrips.
Definition: ITkStripFrontEnd.h:97
ITkStripFrontEnd::m_NOBarrel3
DoubleProperty m_NOBarrel3
Definition: ITkStripFrontEnd.h:80
ITkStripFrontEnd::meanValue
static float meanValue(std::vector< float > &calibDataVect)
ITkStripFrontEndData::m_StripHitsOnWafer
std::vector< int > m_StripHitsOnWafer
Info about which strips are above threshold.
Definition: ITkStripFrontEnd.h:37
ITkStripFrontEnd::initialize
virtual StatusCode initialize() override
AlgTool initialize.
Definition: ITkStripFrontEnd.cxx:29
ITkStripFrontEnd::ReadOutMode
ReadOutMode
Definition: ITkStripFrontEnd.h:71
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ITkStripFrontEnd::Condensed
@ Condensed
Definition: ITkStripFrontEnd.h:71
ITkStripFrontEnd::m_NoiseBarrel3
FloatProperty m_NoiseBarrel3
Definition: ITkStripFrontEnd.h:74
ITkStripFrontEnd::initVectors
void initVectors(int strips, ITkStripFrontEndData &data) const
Definition: ITkStripFrontEnd.cxx:75
ITkStripFrontEnd::m_timeOfThreshold
FloatProperty m_timeOfThreshold
Definition: ITkStripFrontEnd.h:91
ITkStripFrontEnd::m_strip_amplifier
ToolHandle< IAmplifier > m_strip_amplifier
Handle the Amplifier tool.
Definition: ITkStripFrontEnd.h:94
ITkStripFrontEnd::m_GainRMS
FloatProperty m_GainRMS
Definition: ITkStripFrontEnd.h:87
SiChargedDiodeCollection
Definition: SiChargedDiodeCollection.h:109
ITkStripFrontEnd::m_NoiseMiddles
FloatProperty m_NoiseMiddles
Definition: ITkStripFrontEnd.h:76
ITkStripFrontEnd::AnyHit_1XX_X1X_XX1
@ AnyHit_1XX_X1X_XX1
Definition: ITkStripFrontEnd.h:70
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CLHEP
STD'S.
Definition: CaloNoiseCompCondAlg.h:58
ITkStripFrontEnd::doThresholdCheckForRealHits
void doThresholdCheckForRealHits(SiChargedDiodeCollection &collectione, ITkStripFrontEndData &data, const int &stripMax) const
Definition: ITkStripFrontEnd.cxx:213
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ITkStripFrontEndData
simulation of the ITk Strips front-end electronics working as a SiPreDigitsProcessor models response ...
Definition: ITkStripFrontEnd.h:34
ITkStripFrontEnd::m_OGcorr
FloatProperty m_OGcorr
Definition: ITkStripFrontEnd.h:89
ITkStripFrontEnd::m_NOInners
DoubleProperty m_NOInners
Definition: ITkStripFrontEnd.h:81
ITkStripFrontEnd::CompressionMode
CompressionMode
Definition: ITkStripFrontEnd.h:70
ITkStripFrontEnd::m_ITkStripId
const SCT_ID * m_ITkStripId
Handle to SCT ID helper also valid for ITkStrips.
Definition: ITkStripFrontEnd.h:98
ITkStripFrontEndData::m_Analogue
std::array< std::vector< float >, 3 > m_Analogue
To hold the noise and amplifier response.
Definition: ITkStripFrontEnd.h:36
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
IAmplifier.h
ITkStripFrontEnd::m_NoiseBarrel
FloatProperty m_NoiseBarrel
Definition: ITkStripFrontEnd.h:73
ITkStripFrontEnd::m_NoiseShortMiddles
FloatProperty m_NoiseShortMiddles
Definition: ITkStripFrontEnd.h:77
ITkStripFrontEnd
Definition: ITkStripFrontEnd.h:41
ITkStripFrontEnd::m_NOShortMiddles
DoubleProperty m_NOShortMiddles
Definition: ITkStripFrontEnd.h:83
ITkStripFrontEnd::m_data_readout_mode
ShortProperty m_data_readout_mode
Definition: ITkStripFrontEnd.h:93
ITkStripFrontEndData::m_GainFactor
std::vector< float > m_GainFactor
generate gain per channel (added to the gain per chip from calib data)
Definition: ITkStripFrontEnd.h:35
SCT_ID
Definition: SCT_ID.h:68
IFrontEnd.h
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
ITkStripFrontEnd::m_Threshold
FloatProperty m_Threshold
Definition: ITkStripFrontEnd.h:90
ITkStripFrontEnd::m_data_compression_mode
ShortProperty m_data_compression_mode
Definition: ITkStripFrontEnd.h:92
ITkStripFrontEnd::m_NOMiddles
DoubleProperty m_NOMiddles
Definition: ITkStripFrontEnd.h:82
ITkStripFrontEnd::m_NoiseOn
BooleanProperty m_NoiseOn
Definition: ITkStripFrontEnd.h:85
ITkStripFrontEnd::Edge_01X
@ Edge_01X
Definition: ITkStripFrontEnd.h:70
ITkStripFrontEnd::m_NOOuters
DoubleProperty m_NOOuters
Definition: ITkStripFrontEnd.h:84
ITkStripFrontEnd::m_NoiseInners
FloatProperty m_NoiseInners
Definition: ITkStripFrontEnd.h:75
ITkStripFrontEnd::m_Ospread
FloatProperty m_Ospread
Definition: ITkStripFrontEnd.h:88
SiChargedDiodeCollection.h