ATLAS Offline Software
Loading...
Searching...
No Matches
LArLATOMEBuilderAlg Class Reference

#include <LArLATOMEBuilderAlg.h>

Inheritance diagram for LArLATOMEBuilderAlg:

Public Member Functions

 LArLATOMEBuilderAlg (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize () override
StatusCode execute (const EventContext &ctx) const override
StatusCode finalize () override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Static Private Member Functions

static bool floatToInt (float val, int &newval, int hardpoint, int size)
 reproduce LDPB package computation in https://gitlab.cern.ch/atlas-lar-online/onlinelatomedb/-/blob/master/src/CondFloatDB.cpp

Private Attributes

SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {this,"EventInfo","EventInfo","SG Key of EventInfo object"}
SG::ReadHandleKey< LArDigitContainerm_digitKey {this, "LArDigitKey","SC", "SG Key of the SC LArDigitContainer"}
SG::WriteHandleKey< LArRawSCContainerm_larRawSCKey {this,"LArRawSCKey","SC_ET_RECO","SG key of the output LArRawSCContainer"}
SG::ReadCondHandleKey< LArOnOffIdMappingm_cablingKey {this, "CablingSCKey","LArOnOffIdMapSC","SG Key of LArOnOffIdMapping object"}
SG::ReadCondHandleKey< ILArPedestalm_keyPedestalSC {this,"LArPedestalKeySC","LArPedestalSC","SG key of LArPedestal conditions object"}
SG::ReadCondHandleKey< ILArOFCm_keyOFCSC {this,"LArOFCKeySC","LArOFCSC","SG key of LArOFC conditions object"}
SG::ReadCondHandleKey< ILArRampm_keyRampSC {this,"LArRampKeySC","LArRampSC","SG key of LArRamp conditions object"}
SG::ReadCondHandleKey< ILArDAC2uAm_keyDAC2uASC {this,"LArDAC2uAKeySC","LArDAC2uASC","SG key of LArDAC2uA conditions object"}
SG::ReadCondHandleKey< ILAruA2MeVm_keyuA2MeVSC {this,"LAruA2MeVKeySC","LAruA2MeVSC","SG key of LAruA2MeV conditions object"}
SG::ReadCondHandleKey< ILArHVScaleCorrm_keyHVScaleCorrSC {this,"LArHVScaleCorrKeySC","LArHVScaleCorrSC","SG key of LArHVScaleCorr conditions object"}
SG::ReadCondHandleKey< ILArMphysOverMcalm_keyMphysOverMcalSC {this,"LArMphysOverMcalKeySC","LArMphysOverMcalSC","SG key of LArMphysOverMcal conditions object"}
Gaudi::Property< int > m_startSample {this,"startEnergy",0,"the first energy to compute with respect to the BCID"}
Gaudi::Property< int > m_nEnergies {this, "nEnergies", 1, "how many energies to compute"}
Gaudi::Property< bool > m_applyHVCorrection {this, "applyHVCorrection", true, "apply HV correction"}
Gaudi::Property< bool > m_applyMphysOverMcal {this, "applyMphysOverMcal", true, "apply MphysOverMcal correction"}
Gaudi::Property< bool > m_useR0 {this, "useR0", false, "use R0 from Ramp"}
Gaudi::Property< bool > m_isADCBas {this, "isADCBas", true, "Digits are ADC BAS"}
const LArOnlineID_Basem_onlineId = nullptr
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 30 of file LArLATOMEBuilderAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LArLATOMEBuilderAlg()

LArLATOMEBuilderAlg::LArLATOMEBuilderAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 26 of file LArLATOMEBuilderAlg.cxx.

26 :
27 AthReentrantAlgorithm(name, pSvcLocator) {}

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode LArLATOMEBuilderAlg::execute ( const EventContext & ctx) const
override

will take from DB later

lets store the floats in case we decide to do a float computation here in the future

scs

Definition at line 56 of file LArLATOMEBuilderAlg.cxx.

56 {
57
58 SG::ReadHandle<xAOD::EventInfo> thisEvent{m_eventInfoKey,ctx};
59 unsigned int event_bcid = thisEvent->bcid();
60
61 //Get event inputs from read handles:
62 SG::ReadHandle<LArDigitContainer> inputContainer(m_digitKey,ctx);
63 //Write output via write handle
64 SG::WriteHandle<LArRawSCContainer> outputContainerHdl(m_larRawSCKey,ctx);
65 ATH_CHECK(outputContainerHdl.record(std::make_unique<LArRawSCContainer>()));
66 auto *outputContainer = outputContainerHdl.ptr();
67 outputContainer->clear(SG::VIEW_ELEMENTS);
68 outputContainer->reserve(inputContainer->size());
69 DataPool<LArRawSC> dataItemsPool(ctx);
70 dataItemsPool.reserve(inputContainer->size());
71
72 //Get Conditions input
73 SG::ReadCondHandle<ILArPedestal> pedHdl(m_keyPedestalSC,ctx);
74 const LArPedestalSC* Peds=dynamic_cast<const LArPedestalSC*>(pedHdl.cptr());
75 if (!Peds) return StatusCode::FAILURE;
76
77 SG::ReadCondHandle<ILArOFC> ofcHdl(m_keyOFCSC,ctx);
78 const LArOFCSC* OFCs=dynamic_cast<const LArOFCSC*>(ofcHdl.cptr());
79 if (!OFCs) return StatusCode::FAILURE;
80
81 SG::ReadCondHandle<ILArRamp> rampHdl(m_keyRampSC,ctx);
82 const LArRampSC* Ramps=dynamic_cast<const LArRampSC*>(rampHdl.cptr());
83 if (!Ramps) return StatusCode::FAILURE;
84
85 SG::ReadCondHandle<ILArDAC2uA> dac2uaHdl(m_keyDAC2uASC,ctx);
86 const LArDAC2uASC* DAC2uAs=dynamic_cast<const LArDAC2uASC*>(dac2uaHdl.cptr());
87 if (!DAC2uAs) return StatusCode::FAILURE;
88
89 SG::ReadCondHandle<ILAruA2MeV> ua2mevHdl(m_keyuA2MeVSC,ctx);
90 const LAruA2MeVSC* uA2MeVs=dynamic_cast<const LAruA2MeVSC*>(ua2mevHdl.cptr());
91 if (!uA2MeVs) return StatusCode::FAILURE;
92
93 SG::ReadCondHandle<ILArMphysOverMcal> mphysHdl(m_keyMphysOverMcalSC,ctx);
94 const LArMphysOverMcalSC* MphysOverMcals=dynamic_cast<const LArMphysOverMcalSC*>(mphysHdl.cptr());
95 if (!MphysOverMcals) return StatusCode::FAILURE;
96
97 SG::ReadCondHandle<ILArHVScaleCorr> hvHdl(m_keyHVScaleCorrSC,ctx);
98 const LArHVScaleCorrSC* HVScaleCorrs=dynamic_cast<const LArHVScaleCorrSC*>(hvHdl.cptr());
99 if (!HVScaleCorrs) return StatusCode::FAILURE;
100
101 SG::ReadCondHandle<LArOnOffIdMapping> cabling(m_cablingKey,ctx);
102
103 unsigned int nEnergies=m_nEnergies;
104
105 //Loop over digits:
106 for (const LArDigit* digit : *inputContainer) {
107
108 const LArSCDigit* digitSC=dynamic_cast<const LArSCDigit*>(digit);
109 if(!digitSC){
110 ATH_MSG_ERROR("container elements not of type LArSCDigit");
111 return StatusCode::FAILURE;
112 }
113 const std::vector<uint16_t>& bcids = digitSC->BCId();
114 const HWIdentifier id=digit->hardwareID();
115 std::flush(std::cout);
116 const std::vector<short>& samples=digit->samples();
117 int gain=digit->gain();
118 float ped=Peds->pedestal(id,gain);
119 LArOFCSC::OFCRef_t ofca=OFCs->OFC_a(id,gain);
120 LArOFCSC::OFCRef_t ofcb=OFCs->OFC_b(id,gain);
121 ILArRamp::RampRef_t ramp=Ramps->ADC2DAC(id,gain);
122 float dac2ua=DAC2uAs->DAC2UA(id);
123 float ua2mev=uA2MeVs->UA2MEV(id);
124 float mphys=MphysOverMcals->MphysOverMcal(id,gain);
125 float hvcorr=HVScaleCorrs->HVScaleCorr(id);
126 float ELSB = 12.5;
127
129 ATH_MSG_ERROR("No valid pedestal for connected channel " << id.get_identifier32().get_compact() << " gain " << gain);
130 return StatusCode::FAILURE;
131 }
132 if(ATH_UNLIKELY(!ofca.valid())){
133 ATH_MSG_ERROR("No valid ofca for connected channel " << id.get_identifier32().get_compact() << " gain " << gain);
134 return StatusCode::FAILURE;
135 }
136 if(ATH_UNLIKELY(!ofcb.valid())){
137 ATH_MSG_ERROR("No valid ofcb for connected channel " << id.get_identifier32().get_compact() << " gain " << gain);
138 return StatusCode::FAILURE;
139 }
140 if(ATH_UNLIKELY(!ramp.valid())){
141 ATH_MSG_ERROR("No valid ramp for connected channel " << id.get_identifier32().get_compact() << " gain " << gain);
142 return StatusCode::FAILURE;
143 }
144 if(ATH_UNLIKELY(ramp.size()!=2)){
145 ATH_MSG_ERROR("wrong ramp size for connected channel " << id.get_identifier32().get_compact() << " gain " << gain);
146 return StatusCode::FAILURE;
147 }
148 if (ATH_UNLIKELY(dac2ua==ILArDAC2uA::ERRORCODE)) {
149 ATH_MSG_ERROR("No valid dac2ua for connected channel " << id.get_identifier32().get_compact());
150 return StatusCode::FAILURE;
151 }
152 if (ATH_UNLIKELY(ua2mev==ILAruA2MeV::ERRORCODE)) {
153 ATH_MSG_ERROR("No valid ua2mev for connected channel " << id.get_identifier32().get_compact());
154 return StatusCode::FAILURE;
155 }
157 ATH_MSG_ERROR("No valid mphys for connected channel " << id.get_identifier32().get_compact() << " gain " << gain);
158 return StatusCode::FAILURE;
159 }
161 ATH_MSG_ERROR("No valid hvcorr for connected channel " << id.get_identifier32().get_compact());
162 return StatusCode::FAILURE;
163 }
164
166 std::vector<float> ofca_mev(ofca.size());
167 std::vector<float> ofcb_mev(ofca.size());
168 float peda=ped;
169 float pedb=ped;
170 for (unsigned int i = 0; i < ofca.size(); ++i) {
171 ofca_mev[i] = ofca[i] * ramp[1] * dac2ua * ua2mev / ELSB;
172 ofcb_mev[i] = ofcb[i] * ramp[1] * dac2ua * ua2mev / ELSB;
174 ofca_mev[i] /= mphys;
175 ofcb_mev[i] /= mphys;
176 }
178 ofca_mev[i] *= hvcorr;
179 ofcb_mev[i] *= hvcorr;
180 }
181 }
182 if (m_useR0) {
183 float suma=0; for(auto a:ofca)suma+=a;
184 float sumb=0; for(auto b:ofcb)sumb+=b;
185 peda=ped-ramp[0]/ramp[1]*suma;
186 pedb=ped-ramp[0]/ramp[1]*sumb;
187 }
188
189 bool aoverflow=false;
190 bool boverflow=false;
191 bool pedoverflow=false;
192
193 std::vector<int> ofca_int(ofca.size(),0);
194 std::vector<int> ofcb_int(ofca.size(),0);
195 int peda_int=0;
196 int pedb_int=0;
197
198 const int pedHardpoint = 3;
199 const int firLSBdropped = 8;
200 const int satLSBdropped = 6;
201 const int paramBitSize = 18;
202
203 for (unsigned int i = 0; i < ofca.size(); ++i) {
204 if (!floatToInt(ofca_mev[i], ofca_int[i], firLSBdropped - pedHardpoint,
205 paramBitSize)) {
206 aoverflow = true;
207 }
208 if (!floatToInt(ofcb_mev[i], ofcb_int[i], satLSBdropped - pedHardpoint,
209 paramBitSize)) {
210 boverflow = true;
211 }
212 }
213 if(!floatToInt(peda,peda_int,pedHardpoint,paramBitSize))pedoverflow=true;
214 if(!floatToInt(pedb,pedb_int,pedHardpoint,paramBitSize))pedoverflow=true;
215
216 unsigned int nsamples = samples.size();
217 unsigned int firsamples=4;
218 int startSample=-1;
219 for(unsigned int is=0; is<nsamples; ++is){
220 if(bcids[is]==event_bcid) startSample=is;
221 }
222 int maxNenergies = 0;
223 if(startSample<0){
224 ATH_MSG_WARNING("could not find correct BCID for recomputing the energies, event BCID="<<event_bcid<< " first sample BCID " << (nsamples?bcids[0]:-1));
225 }
226 else{
227 maxNenergies=nsamples-firsamples-startSample+1;
228 if(m_startSample) maxNenergies -= m_startSample;
229 }
230 if(maxNenergies<0) {
231 maxNenergies=0;
232 } else {
233 startSample += m_startSample;
234 }
235 if((int)nEnergies>maxNenergies){
236 ATH_MSG_WARNING("requested nEnergies > maxNenergies " << m_nEnergies << ">" <<maxNenergies<<". setting nEnegries to maxNenergies");
237 nEnergies=maxNenergies;
238 }
239
240 std::vector<unsigned short> newBCIDs(nEnergies,0);
241 std::vector<int> newEnergies(nEnergies,0);
242 std::vector<int> tauEnergies(nEnergies,0);
243 std::vector<bool> passSelections(nEnergies,false);
244 std::vector<bool> satur(nEnergies,false);
245 const unsigned int nMaxBitsEnergy=18;
246 const unsigned int nMaxBitsEnergyTau=22;
247
248 for(unsigned int ss=0; ss<nEnergies; ++ss){
249
250 int64_t computedE=0;
251 int64_t computedEtau=0;
252 unsigned short bcid = bcids[startSample+ss];
253 newBCIDs[ss]=bcid;
254 for(unsigned int is=0; is<firsamples; ++is){
255 int sample = samples[startSample + ss + is];
256 if (!m_isADCBas)
257 sample *= std::pow(2, pedHardpoint);
258 computedE += static_cast<int64_t>(sample - peda_int) * ofca_int[is];
259 computedEtau += static_cast<int64_t>(sample - pedb_int) * ofcb_int[is];
260 }
261 computedE=computedE>>firLSBdropped;
262 computedEtau=computedEtau>>satLSBdropped;
263
264 if(std::abs(computedE)>std::pow(2,nMaxBitsEnergy-1)){
265 if (computedE >= 0)
266 computedE = std::pow(2, nMaxBitsEnergy - 1) - 1;
267 else
268 computedE = 0;
269 }
270 if (std::abs(computedEtau) > std::pow(2, nMaxBitsEnergyTau - 1)) {
271 if (computedEtau >= 0)
272 computedEtau = std::pow(2, nMaxBitsEnergyTau - 1) - 1;
273 else
274 computedEtau = -std::pow(2, nMaxBitsEnergyTau - 1) + 1;
275 }
276 newEnergies[ss] = computedE;
277 tauEnergies[ss] = computedEtau;
278 bool passSelection = false;
279 if (computedE < 0 && computedE > -80) {
280 if (computedEtau > 8 * computedE && computedEtau < -8 * computedE)
281 passSelection = true;
282 } else if (computedE < 800) {
283 if (computedEtau > -8 * computedE && computedEtau < 8 * computedE)
284 passSelection = true;
285 } else if (computedE >= 800) {
286 if (computedEtau > -8 * computedE && computedEtau < 16 * computedE)
287 passSelection = true;
288 }
289 passSelections[ss] = passSelection;
290 }
291 LArRawSC* scraw = dataItemsPool.nextElementPtr();
292
293 scraw->setHardwareId(id);
294 scraw->setChannel(digitSC->Channel());
295 scraw->setSourceId(digitSC->SourceId());
296 scraw->setBCIds(std::move(newBCIDs));
297 scraw->setSaturation(std::move(satur));
298 scraw->setEnergies(std::move(newEnergies));
299 scraw->setTauEnergies(std::move(tauEnergies));
300 scraw->setPassTauSelection(std::move(passSelections));
301 scraw->setOFCaOverflow(aoverflow);
302 scraw->setOFCbOverflow(boverflow);
303 scraw->setPedOverflow(pedoverflow);
304
305 outputContainer->push_back(scraw);
306
307 }
308
309
310 return StatusCode::SUCCESS;
311}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
#define ATH_UNLIKELY(x)
static Double_t a
static Double_t ss
LArVectorProxy RampRef_t
This class defines the interface for accessing Ramp @stereotype Interface.
Definition ILArRamp.h:31
virtual const float & DAC2UA(const HWIdentifier &chid) const
access to DAC2UA conversion factor index by Identifier, and gain setting
virtual const float & HVScaleCorr(const HWIdentifier &chid) const
SG::ReadCondHandleKey< ILArHVScaleCorr > m_keyHVScaleCorrSC
static bool floatToInt(float val, int &newval, int hardpoint, int size)
reproduce LDPB package computation in https://gitlab.cern.ch/atlas-lar-online/onlinelatomedb/-/blob/m...
SG::ReadCondHandleKey< ILArDAC2uA > m_keyDAC2uASC
SG::WriteHandleKey< LArRawSCContainer > m_larRawSCKey
SG::ReadCondHandleKey< ILArPedestal > m_keyPedestalSC
Gaudi::Property< bool > m_applyHVCorrection
SG::ReadCondHandleKey< ILArMphysOverMcal > m_keyMphysOverMcalSC
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
SG::ReadCondHandleKey< ILAruA2MeV > m_keyuA2MeVSC
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Gaudi::Property< int > m_nEnergies
SG::ReadCondHandleKey< ILArRamp > m_keyRampSC
SG::ReadCondHandleKey< ILArOFC > m_keyOFCSC
Gaudi::Property< bool > m_useR0
SG::ReadHandleKey< LArDigitContainer > m_digitKey
Gaudi::Property< bool > m_applyMphysOverMcal
Gaudi::Property< bool > m_isADCBas
Gaudi::Property< int > m_startSample
virtual const float & MphysOverMcal(const HWIdentifier &chid, int gain) const
virtual OFCRef_t OFC_b(const HWIdentifier &CellID, int gain, int tbin=0) const
Definition LArOFCSC.cxx:85
virtual OFCRef_t OFC_a(const HWIdentifier &CellID, int gain, int tbin=0) const
access to OFCs by online ID, gain, and tbin (!=0 for testbeam)
Definition LArOFCSC.cxx:80
ILArOFC::OFCRef_t OFCRef_t
Definition LArOFCSC.h:24
virtual float pedestal(const HWIdentifier &CellID, int gain) const
virtual RampRef_t ADC2DAC(const HWIdentifier &CellID, int gain) const
Definition LArRampSC.cxx:26
void setBCIds(const std::vector< unsigned short > &&bcids)
Set bcids.
Definition LArRawSC.cxx:13
void setSaturation(const std::vector< bool > &&satur)
@set saturation flags
Definition LArRawSC.cxx:40
void setEnergies(const std::vector< int > &&energies)
Set energies .
Definition LArRawSC.cxx:8
void setHardwareId(const HWIdentifier id)
Set identifier.
Definition LArRawSC.cxx:28
void setTauEnergies(const std::vector< int > &&tauEnergies)
Set energies*taus .
Definition LArRawSC.cxx:18
void setPassTauSelection(const std::vector< bool > &&pass)
@set true if passes the tau selection
Definition LArRawSC.cxx:23
void setOFCbOverflow(bool overflow)
@set OFCb Overflow
Definition LArRawSC.h:161
void setOFCaOverflow(bool overflow)
@set OFCa Overflow
Definition LArRawSC.h:158
void setSourceId(const unsigned sourceId)
Set source id.
Definition LArRawSC.cxx:36
void setChannel(const unsigned chan)
Set channel number.
Definition LArRawSC.cxx:32
void setPedOverflow(bool overflow)
@set pedestal Overflow
Definition LArRawSC.h:164
unsigned int SourceId() const
Definition LArSCDigit.h:45
const std::vector< unsigned short > & BCId() const
Definition LArSCDigit.h:48
short Channel() const
Definition LArSCDigit.h:42
bool valid() const
Test to see if the proxy has been initialized.
virtual const float & UA2MEV(const HWIdentifier &chid) const
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
setEventNumber setTimeStamp bcid

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ finalize()

StatusCode LArLATOMEBuilderAlg::finalize ( )
override

Definition at line 52 of file LArLATOMEBuilderAlg.cxx.

52 {
53 return StatusCode::SUCCESS;
54}

◆ floatToInt()

bool LArLATOMEBuilderAlg::floatToInt ( float val,
int & newval,
int hardpoint,
int size )
staticprivate

reproduce LDPB package computation in https://gitlab.cern.ch/atlas-lar-online/onlinelatomedb/-/blob/master/src/CondFloatDB.cpp

Definition at line 314 of file LArLATOMEBuilderAlg.cxx.

314 {
315 if( std::isnan(val) )return false;
316 //int intVal = std::round(val*(0x1<<hardpoint)); //was round(val*pow(2,hardpoint));
317 int intVal=std::round(val*pow2(hardpoint));
318 bool isNeg = (intVal<0);
319 unsigned int posVal = std::abs(intVal);
320 if( (posVal >> (size -1)) != 0 ) return false;
321 newval=posVal;
322 if(isNeg)newval=-posVal;
323 return true;
324
325}
static const std::map< unsigned int, unsigned int > pow2

◆ initialize()

StatusCode LArLATOMEBuilderAlg::initialize ( )
override

Definition at line 29 of file LArLATOMEBuilderAlg.cxx.

29 {
30
31 ATH_MSG_INFO("LArLATOMEBuilderAlg init");
32
33 ATH_CHECK(m_eventInfoKey.initialize());
34 ATH_CHECK(m_digitKey.initialize());
35 ATH_CHECK(m_larRawSCKey.initialize());
36 ATH_CHECK(m_cablingKey.initialize());
37 ATH_CHECK(m_keyPedestalSC.initialize());
38 ATH_CHECK(m_keyOFCSC.initialize());
39 ATH_CHECK(m_keyRampSC.initialize());
40 ATH_CHECK(m_keyDAC2uASC.initialize());
41 ATH_CHECK(m_keyuA2MeVSC.initialize());
42 ATH_CHECK(m_keyHVScaleCorrSC.initialize());
43 ATH_CHECK(m_keyMphysOverMcalSC.initialize());
44
45 const LArOnline_SuperCellID* ll;
46 ATH_CHECK(detStore()->retrieve(ll,"LArOnline_SuperCellID"));
47 m_onlineId = static_cast<const LArOnlineID_Base*>(ll);
48
49 return StatusCode::SUCCESS;
50}
#define ATH_MSG_INFO(x)
const ServiceHandle< StoreGateSvc > & detStore() const
const LArOnlineID_Base * m_onlineId
long long ll
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_applyHVCorrection

Gaudi::Property<bool> LArLATOMEBuilderAlg::m_applyHVCorrection {this, "applyHVCorrection", true, "apply HV correction"}
private

Definition at line 65 of file LArLATOMEBuilderAlg.h.

65{this, "applyHVCorrection", true, "apply HV correction"};

◆ m_applyMphysOverMcal

Gaudi::Property<bool> LArLATOMEBuilderAlg::m_applyMphysOverMcal {this, "applyMphysOverMcal", true, "apply MphysOverMcal correction"}
private

Definition at line 66 of file LArLATOMEBuilderAlg.h.

66{this, "applyMphysOverMcal", true, "apply MphysOverMcal correction"};

◆ m_cablingKey

SG::ReadCondHandleKey<LArOnOffIdMapping> LArLATOMEBuilderAlg::m_cablingKey {this, "CablingSCKey","LArOnOffIdMapSC","SG Key of LArOnOffIdMapping object"}
private

Definition at line 49 of file LArLATOMEBuilderAlg.h.

49{this, "CablingSCKey","LArOnOffIdMapSC","SG Key of LArOnOffIdMapping object"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_digitKey

SG::ReadHandleKey<LArDigitContainer> LArLATOMEBuilderAlg::m_digitKey {this, "LArDigitKey","SC", "SG Key of the SC LArDigitContainer"}
private

Definition at line 44 of file LArLATOMEBuilderAlg.h.

44{this, "LArDigitKey","SC", "SG Key of the SC LArDigitContainer"};

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> LArLATOMEBuilderAlg::m_eventInfoKey {this,"EventInfo","EventInfo","SG Key of EventInfo object"}
private

Definition at line 42 of file LArLATOMEBuilderAlg.h.

42{this,"EventInfo","EventInfo","SG Key of EventInfo object"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_isADCBas

Gaudi::Property<bool> LArLATOMEBuilderAlg::m_isADCBas {this, "isADCBas", true, "Digits are ADC BAS"}
private

Definition at line 68 of file LArLATOMEBuilderAlg.h.

68{this, "isADCBas", true, "Digits are ADC BAS"};

◆ m_keyDAC2uASC

SG::ReadCondHandleKey<ILArDAC2uA> LArLATOMEBuilderAlg::m_keyDAC2uASC {this,"LArDAC2uAKeySC","LArDAC2uASC","SG key of LArDAC2uA conditions object"}
private

Definition at line 54 of file LArLATOMEBuilderAlg.h.

54{this,"LArDAC2uAKeySC","LArDAC2uASC","SG key of LArDAC2uA conditions object"};

◆ m_keyHVScaleCorrSC

SG::ReadCondHandleKey<ILArHVScaleCorr> LArLATOMEBuilderAlg::m_keyHVScaleCorrSC {this,"LArHVScaleCorrKeySC","LArHVScaleCorrSC","SG key of LArHVScaleCorr conditions object"}
private

Definition at line 56 of file LArLATOMEBuilderAlg.h.

56{this,"LArHVScaleCorrKeySC","LArHVScaleCorrSC","SG key of LArHVScaleCorr conditions object"};

◆ m_keyMphysOverMcalSC

SG::ReadCondHandleKey<ILArMphysOverMcal> LArLATOMEBuilderAlg::m_keyMphysOverMcalSC {this,"LArMphysOverMcalKeySC","LArMphysOverMcalSC","SG key of LArMphysOverMcal conditions object"}
private

Definition at line 57 of file LArLATOMEBuilderAlg.h.

57{this,"LArMphysOverMcalKeySC","LArMphysOverMcalSC","SG key of LArMphysOverMcal conditions object"};

◆ m_keyOFCSC

SG::ReadCondHandleKey<ILArOFC> LArLATOMEBuilderAlg::m_keyOFCSC {this,"LArOFCKeySC","LArOFCSC","SG key of LArOFC conditions object"}
private

Definition at line 52 of file LArLATOMEBuilderAlg.h.

52{this,"LArOFCKeySC","LArOFCSC","SG key of LArOFC conditions object"};

◆ m_keyPedestalSC

SG::ReadCondHandleKey<ILArPedestal> LArLATOMEBuilderAlg::m_keyPedestalSC {this,"LArPedestalKeySC","LArPedestalSC","SG key of LArPedestal conditions object"}
private

Definition at line 51 of file LArLATOMEBuilderAlg.h.

51{this,"LArPedestalKeySC","LArPedestalSC","SG key of LArPedestal conditions object"};

◆ m_keyRampSC

SG::ReadCondHandleKey<ILArRamp> LArLATOMEBuilderAlg::m_keyRampSC {this,"LArRampKeySC","LArRampSC","SG key of LArRamp conditions object"}
private

Definition at line 53 of file LArLATOMEBuilderAlg.h.

53{this,"LArRampKeySC","LArRampSC","SG key of LArRamp conditions object"};

◆ m_keyuA2MeVSC

SG::ReadCondHandleKey<ILAruA2MeV> LArLATOMEBuilderAlg::m_keyuA2MeVSC {this,"LAruA2MeVKeySC","LAruA2MeVSC","SG key of LAruA2MeV conditions object"}
private

Definition at line 55 of file LArLATOMEBuilderAlg.h.

55{this,"LAruA2MeVKeySC","LAruA2MeVSC","SG key of LAruA2MeV conditions object"};

◆ m_larRawSCKey

SG::WriteHandleKey<LArRawSCContainer> LArLATOMEBuilderAlg::m_larRawSCKey {this,"LArRawSCKey","SC_ET_RECO","SG key of the output LArRawSCContainer"}
private

Definition at line 46 of file LArLATOMEBuilderAlg.h.

46{this,"LArRawSCKey","SC_ET_RECO","SG key of the output LArRawSCContainer"};

◆ m_nEnergies

Gaudi::Property<int> LArLATOMEBuilderAlg::m_nEnergies {this, "nEnergies", 1, "how many energies to compute"}
private

Definition at line 63 of file LArLATOMEBuilderAlg.h.

63{this, "nEnergies", 1, "how many energies to compute"};

◆ m_onlineId

const LArOnlineID_Base* LArLATOMEBuilderAlg::m_onlineId = nullptr
private

Definition at line 72 of file LArLATOMEBuilderAlg.h.

◆ m_startSample

Gaudi::Property<int> LArLATOMEBuilderAlg::m_startSample {this,"startEnergy",0,"the first energy to compute with respect to the BCID"}
private

Definition at line 62 of file LArLATOMEBuilderAlg.h.

62{this,"startEnergy",0,"the first energy to compute with respect to the BCID"};

◆ m_useR0

Gaudi::Property<bool> LArLATOMEBuilderAlg::m_useR0 {this, "useR0", false, "use R0 from Ramp"}
private

Definition at line 67 of file LArLATOMEBuilderAlg.h.

67{this, "useR0", false, "use R0 from Ramp"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: