ATLAS Offline Software
Loading...
Searching...
No Matches
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
17class SCT_ID;
18
19namespace InDetDD {
21}
22
23namespace CLHEP {
24 class HepRandomEngine;
25}
33
35 std::vector<float> m_GainFactor;
36 std::array<std::vector<float>, 3> m_Analogue{};
37 std::vector<int> m_StripHitsOnWafer;
38};
39
40
41class 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
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
StringProperty m_detMgrName
const InDetDD::SCT_DetectorManager * m_ITkStripMgr
Handle to SCT detector manager, also valid for ITkStrips.
FloatProperty m_NoiseMiddles
void initVectors(int strips, ITkStripFrontEndData &data) const
void doSignalChargeForHits(SiChargedDiodeCollection &collectione, ITkStripFrontEndData &data, const int &stripMax) const
void doThresholdCheckForRealHits(SiChargedDiodeCollection &collectione, ITkStripFrontEndData &data, const int &stripMax) const
BooleanProperty m_NoiseOn
ITkStripFrontEnd(const std::string &type, const std::string &name, const IInterface *parent)
constructor
FloatProperty m_OGcorr
FloatProperty m_NoiseOuters
DoubleProperty m_NOBarrel3
FloatProperty m_NoiseShortMiddles
BooleanProperty m_analogueNoiseOn
DoubleProperty m_NOBarrel
FloatProperty m_NoiseInners
ShortProperty m_data_compression_mode
DoubleProperty m_NOMiddles
const SCT_ID * m_ITkStripId
Handle to SCT ID helper also valid for ITkStrips.
virtual ~ITkStripFrontEnd()=default
Destructor.
FloatProperty m_Threshold
DoubleProperty m_NOOuters
static float meanValue(std::vector< float > &calibDataVect)
ShortProperty m_data_readout_mode
ToolHandle< IAmplifier > m_strip_amplifier
Handle the Amplifier tool.
FloatProperty m_NoiseBarrel3
FloatProperty m_timeOfThreshold
FloatProperty m_GainRMS
FloatProperty m_Ospread
DoubleProperty m_NOShortMiddles
FloatProperty m_NoiseBarrel
DoubleProperty m_NOInners
virtual StatusCode initialize() override
AlgTool initialize.
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
This is an Identifier helper class for the SCT subdetector.
Definition SCT_ID.h:68
const std::string process
Message Stream Member.
simulation of the ITk Strips front-end electronics working as a SiPreDigitsProcessor models response ...
std::vector< int > m_StripHitsOnWafer
Info about which strips are above threshold.
std::vector< float > m_GainFactor
generate gain per channel (added to the gain per chip from calib data)
std::array< std::vector< float >, 3 > m_Analogue
To hold the noise and amplifier response.