5#ifndef LARDIGITIZATION_LARHITEMPATTODIGITALG_H
6#define LARDIGITIZATION_LARHITEMPATTODIGITALG_H
40#include <boost/container/static_vector.hpp>
47 class HepRandomEngine;
62 using AthReentrantAlgorithm::AthReentrantAlgorithm;
67 virtual StatusCode
execute(
const EventContext& context)
const;
78 StatusCode
MakeDigit(
const EventContext& ctx,
84 const std::vector<std::pair<float, float> >* TimeE,
86 CLHEP::HepRandomEngine* engine,
87 const std::vector<std::pair<float, float> >* TimeE_DigiHSTruth =
nullptr)
const;
91 const std::vector<std::pair<float,float> > *TimeE,
staticVecDouble_t& sampleList)
const;
110 Gaudi::Property<std::vector<std::string> >
m_problemsToMask{
this,
"ProblemsToMask",{},
"Bad-Channel categories to mask entirly"};
119 "Name of input digit container"};
122 "Name of output digit container"};
124 "LArDigitContainer_DigiHSTruth",
"Name of output signal digit container"};
131 "Use MC16-style random number seeding"};
135 {
this,
"LowGainThreshEM",3900,
"ADC counts in medium gain"},
136 {
this,
"LowGainThreshHEC",2500,
"ADC counts in medium gain"},
137 {
this,
"LowGainThreshFCAL",2000,
"ADC counts in medium gain"},
138 {
this,
"LowGainThreshEMECIW",3900,
"ADC counts in medium gain"}
143 {
this,
"HighGainThreshEM",1300,
"ADC counts in medium gain"},
144 {
this,
"HighGainThreshHEC",0,
"ADC counts in medium gain"},
145 {
this,
"HighGainThreshFCAL",1100,
"ADC counts in medium gain"},
146 {
this,
"HighGainThreshEMECIW",1300,
"ADC counts in medium gain"}
158 Gaudi::Property<unsigned>
m_maxADC{
this,
"maxADC",4096,
"Maxium ADC value +1 (for overflow)"};
162 "Number of ADC samples (default=5)"};
164 "put electronic noise (default=true)"};
166 "First sample to use for the shape for in-time signal"};
168 "use 1ns binned pulse shape (default=false)"};
170 "Pileup and/or noise added by overlaying random events (default=false)"};
172 "Is input Overlay from MC or data (default=false, from data)"};
173 Gaudi::Property<bool>
m_doDigiTruth{
this,
"DoDigiTruthReconstruction",
false,
174 "Also create information about reconstructed digits for HS hits"};
177 "put noise in EMB (default=true)"};
179 "put noise in EMEC (default=true)"};
181 "put noise in HEC (default=true)"};
183 "put noise in FCAL (default=true)"};
185 "Use noise from Pedestal structure instead of LArNoise (default=false)"};
187 "if true add random number [0:1[ in no noise case before rounding ADC to integer, if false add only 0.5 average"};
189 "Window mode (produce digits only around true e/photon) (default=false)"};
191 "Eta size of window (default=0.4)"};
193 "Phi size of window (default=0.5)"};
195 "Pt cut on e/photons for window mode (Default=5GeV)"};
209 const T*
object = *aHandle;
210 if (
object ==
nullptr)
ATH_MSG_ERROR(
"Object could not be fetched with key " << aHandle.
key() );
Definition of CaloDetDescrManager.
Property holding a SG store/key/clid from which a WriteHandle is made.
Handle class for recording to StoreGate.
An algorithm that can be simultaneously executed in multiple threads.
Helper class for offline cell identifiers.
a typed memory pool that saves time spent allocation small object.
interface to a tool that returns the time offset of the current trigger.
Liquid Argon digit base class.
Helper class for LArEM offline identifiers.
Helper class for LArFCAL offline identifiers.
Helper class for LArHEC offline identifiers.
const LArOnOffIdMapping * m_cabling
Gaudi::Property< bool > m_usePhase
Gaudi::Property< bool > m_isMcOverlay
const LArHEC_ID * m_larhec_id
Gaudi::Property< std::vector< std::string > > m_problemsToMask
static constexpr int s_MaxNSamples
Gaudi::Property< bool > m_NoiseInEMEC
Gaudi::Property< bool > m_doDigiTruth
SG::ReadHandleKey< LArHitEMap > m_hitMapKey
SG::ReadCondHandleKey< LArADC2MeV > m_adc2mevKey
const CaloCell_ID * m_calocell_id
Gaudi::Property< float > m_WindowsPhiSize
Gaudi::Property< bool > m_pedestalNoise
Gaudi::Property< bool > m_roundingNoNoise
SG::ReadHandleKey< LArHitEMap > m_hitMapKey_DigiHSTruth
StatusCode MakeDigit(const EventContext &ctx, const Identifier &cellId, const HWIdentifier &ch_id, LArDigit *&Digit, DataPool< LArDigit > &dataItemsPool, LArDigit *&Digit_DigiHSTruth, const std::vector< std::pair< float, float > > *TimeE, const LArDigit *rndm_digit, CLHEP::HepRandomEngine *engine, const std::vector< std::pair< float, float > > *TimeE_DigiHSTruth=nullptr) const
std::array< Gaudi::Property< std::pair< int, int > >, 4 > m_gainRange
virtual StatusCode execute(const EventContext &context) const
SG::ReadHandleKey< LArDigitContainer > m_inputDigitContainerKey
Gaudi::Property< uint32_t > m_randomSeedOffset
Gaudi::Property< bool > m_NoiseInEMB
SG::ReadCondHandleKey< LArBadChannelCont > m_bcContKey
Gaudi::Property< int > m_firstSample
SG::WriteHandleKey< LArDigitContainer > m_DigitContainerName_DigiHSTruth
const LArOnlineID * m_laronline_id
Gaudi::Property< bool > m_NoiseInHEC
boost::container::static_vector< double, s_MaxNSamples > staticVecDouble_t
Gaudi::Property< bool > m_useLegacyRandomSeeds
const LArFCAL_ID * m_larfcal_id
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
std::array< Gaudi::Property< double >, 4 > m_LowGainThresh
virtual StatusCode initialize()
Gaudi::Property< float > m_WindowsPtCut
SG::ReadCondHandleKey< ILArPedestal > m_pedestalKey
const LArEM_ID * m_larem_id
SG::ReadCondHandleKey< ILArNoise > m_noiseKey
CaloGain::CaloGain chooseGain(const staticVecDouble_t &samples, const HWIdentifier id, const CaloNum iCalo, const ILArPedestal *ped, const LArADC2MeV *ramp, const float SF) const
Gaudi::Property< float > m_WindowsEtaSize
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
Gaudi::Property< bool > m_Windows
StatusCode ConvertHits2Samples(const EventContext &ctx, const Identifier &cellId, HWIdentifier ch_id, CaloGain::CaloGain igain, const std::vector< std::pair< float, float > > *TimeE, staticVecDouble_t &sampleList) const
LArBadChannelMask m_bcMask
Gaudi::Property< bool > m_NoiseOnOff
std::array< Gaudi::Property< double >, 4 > m_HighGainThresh
boost::container::static_vector< float, s_MaxNSamples > staticVecFloat_t
Gaudi::Property< bool > m_RndmEvtOverlay
Gaudi::Property< int > m_NSamples
SG::ReadCondHandleKey< ILArOFC > m_OFCKey
ServiceHandle< IAthRNGSvc > m_rndmGenSvc
SG::ReadCondHandleKey< LArAutoCorrNoise > m_autoCorrNoiseKey
const T * pointerFromKey(const EventContext &context, const SG::ReadCondHandleKey< T > &key) const
Gaudi::Property< bool > m_NoiseInFCAL
SG::ReadCondHandleKey< LArBadFebCont > m_badFebKey
SG::ReadCondHandleKey< ILArfSampl > m_fSamplKey
Gaudi::Property< unsigned > m_maxADC
SG::WriteHandleKey< LArDigitContainer > m_DigitContainerName
SG::ReadCondHandleKey< ILArShape > m_shapeKey
Gaudi::Property< std::string > m_randomStreamName
const std::string & key() const
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
The Athena Transient Store API.