Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
31 m_onlineHelper(nullptr),
33 m_fatalFebErrorPattern(0xffff)
67 ATH_MSG_ERROR(
"Configuration Problem: Neither doPedstal nor doAutoCorr set!" );
68 return StatusCode::FAILURE;
82 ATH_MSG_ERROR(
"Failed initialize LArConditionsContainer 'm_accu'" );
85 return StatusCode::SUCCESS;
97 ATH_MSG_ERROR(
"Key list is empty! No containers processed!" );
98 return StatusCode::FAILURE;
103 if (
evtStore()->contains<LArFebErrorSummary>(
"LArFebErrorSummary")) {
105 if (
sc.isFailure()) {
106 ATH_MSG_ERROR(
"Failed to retrieve FebErrorSummary object!" );
112 ATH_MSG_WARNING(
"No FebErrorSummaryObject found! Feb errors not checked!" );
121 if (
sc.isFailure() || !container) {
122 ATH_MSG_DEBUG(
"Cannot read LArAccumulatedDigitContainer from StoreGate! key=" <<
key);
124 ATH_MSG_ERROR(
"None of the provided LArAccumulatedDigitContainer keys could be read");
125 return StatusCode::FAILURE;
133 if(container->
empty() ) {
134 ATH_MSG_DEBUG(
"LArAccumulatedDigitContainer (key=" <<
key <<
") is empty ");
137 ATH_MSG_DEBUG(
"LArAccumulatedDigitContainer (key=" <<
key <<
") has length " << container->
size());
143 if (
dg->nTrigger()==0)
continue;
149 if (febid!=lastFailedFEB) {
152 <<
" reports error(s):" << febErrSum->
error_to_string(febErrs) <<
". Data ignored." );
162 ATH_MSG_ERROR(
"Failed to accumulate sub-steps! Inconsistent number of ADC samples" );
165 return StatusCode::SUCCESS;
172 std::unique_ptr<LArAutoCorrComplete> larAutoCorrComplete;
173 std::unique_ptr<LArPedestalComplete> larPedestalComplete;
178 larAutoCorrComplete = std::make_unique<LArAutoCorrComplete>();
186 larPedestalComplete = std::make_unique<LArPedestalComplete>();
198 objName=
"pedestal & autocorr";
200 int n_zero,n_min, n_max, n_cur;
201 n_zero=0; n_max=n_min=-1;
203 std::vector<float>
cov;
211 if (cell_it==cell_it_e){
214 for (;cell_it!=cell_it_e;cell_it++) {
216 n_cur =
dg.nTrigger();
217 if(n_cur==0) { n_zero++;
continue; }
221 if(n_cur<n_min || n_min<0) n_min=n_cur;
222 if(n_cur>n_max || n_max<0) n_max=n_cur;
225 if (larPedestalComplete)
228 if (larAutoCorrComplete) {
235 ATH_MSG_INFO(
"Gain " <<
gain <<
" Number of cells with 0 events to compute "<<objName<<
": " << n_zero );
236 ATH_MSG_INFO(
"Gain " <<
gain <<
" Minimum number of events*samples to compute " <<objName<<
": "<< n_min );
237 ATH_MSG_INFO(
"Gain " <<
gain <<
" Maximum number of events*samples to compute " <<objName<<
": " <<n_max );
240 ATH_MSG_INFO(
" Summary : Number of cells with " <<objName<<
" value computed : " << NCells );
241 ATH_MSG_INFO(
" Summary : Number of Barrel PS cells side A or C (connected+unconnected): 3904+ 192 = 4096 " );
242 ATH_MSG_INFO(
" Summary : Number of Barrel cells side A or C (connected+unconnected): 50944+2304 = 53248 " );
243 ATH_MSG_INFO(
" Summary : Number of EMEC cells side A or C (connected+unconnected): 31872+3456 = 35328 " );
244 ATH_MSG_INFO(
" Summary : Number of HEC cells side A or C (connected+unconnected): 2816+ 256 = 3072 " );
245 ATH_MSG_INFO(
" Summary : Number of FCAL cells side A or C (connected+unconnected): 1762+ 30 = 1792 " );
247 if (larPedestalComplete) {
252 if (larAutoCorrComplete) {
256 return StatusCode::SUCCESS;
def retrieve(aClass, aKey=None)
HWIdentifier channelId() const
Container class for LArAccumulatedDigit.
bool setAddSubStep(const CaloGain::CaloGain gain_value, const HWIdentifier chid, const std::vector< uint64_t > &sampleSum, const std::vector< uint64_t > &sampleSquare, const unsigned nTrigger)
Accumulate new values
virtual StatusCode stop()
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::vector< std::string > m_keylist
Declaration of const iterator.
std::string m_groupingType
~LArPedestalAutoCorrBuilder()
static std::string error_to_string(uint16_t error)
interpret the error in string
void set(const HWIdentifier &CellID, int gain, const std::vector< float > &vAutoCorr)
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
uint16_t feb_error(HWIdentifier febid) const
get error for feb
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Data class for ADC samples and autocorr preprocessed by the DSP.
ConstConditionsMapIterator end(unsigned int gain) const
end of all channels for this gain
::StatusCode StatusCode
StatusCode definition for legacy code.
ConstReference get(const HWIdentifier id, unsigned int gain=0) const
get data with online identifier
const LArOnlineID_Base * m_onlineHelper
void set(const HWIdentifier &CellID, const int gain, const float vPedestal, const float vPedestalRMS)
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
LArPedestalAutoCorrBuilder(const std::string &name, ISvcLocator *pSvcLocator)
uint16_t m_fatalFebErrorPattern
virtual StatusCode initialize()
Initialization done after creation or read back - derived classes may augment the functionality.
#define ATH_MSG_WARNING(x)
std::string m_pedContName
Holds information from the FEB Error Summary.
ConstConditionsMapIterator begin(unsigned int gain) const
get iterator for all channels for a gain
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.