ATLAS Offline Software
TileDigitsThresholdFilter.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //*****************************************************************************
6 // Filename : TileDigitsThresholdFilter.cxx
7 //
8 // DESCRIPTION
9 //
10 // Copy TileDigits and TileRawChannel from input container to output container
11 //
12 // HISTORY:
13 //
14 // BUGS:
15 //
16 //*****************************************************************************
17 
18 // Tile includes
20 
25 
26 // Atlas includes
28 #include "StoreGate/ReadHandle.h"
29 #include "StoreGate/WriteHandle.h"
31 
32 
33 //C++ STL includes
34 #include <vector>
35 #include <algorithm>
36 
37 
38 //
39 // Constructor
40 //
41 TileDigitsThresholdFilter::TileDigitsThresholdFilter(const std::string& name, ISvcLocator* pSvcLocator)
42  : AthAlgorithm(name, pSvcLocator)
43  , m_tileHWID(nullptr)
44  , m_tileDspThreshold("TileCondToolDspThreshold")
45 {
46  declareProperty("TileCondToolDspThreshold", m_tileDspThreshold);
47 }
48 
50 }
51 
52 //
53 // Alg standard initialize function
54 //
56 
58 
59  CHECK( m_tileDspThreshold.retrieve() );
60 
61  ATH_MSG_INFO( "Input digits container: '" << m_inputDigitsContainerKey.key()
62  << "' output container: '" << m_outputDigitsContainerKey.key() << "'" );
63 
66 
67  ATH_MSG_INFO( "initialization completed" );
68 
69  return StatusCode::SUCCESS;
70 }
71 
72 
73 /*==========================================================================*/
74 //
75 // Begin Execution Phase.
76 //
78 
79  // Create new container for filtered digits
81  ATH_CHECK( outputDigitsContainer.record(std::make_unique<TileDigitsContainer>(false, SG::VIEW_ELEMENTS)) );
82 
84  ATH_CHECK( inputDigitsContainer.isValid() );
85 
86  outputDigitsContainer->set_unit(inputDigitsContainer->get_unit());
87  outputDigitsContainer->set_type(inputDigitsContainer->get_type());
88  outputDigitsContainer->set_bsflags(inputDigitsContainer->get_bsflags());
89 
90  TileDigitsContainer::const_iterator collItr = inputDigitsContainer->begin();
91  TileDigitsContainer::const_iterator collEnd = inputDigitsContainer->end();
92 
93  for (; collItr != collEnd; ++collItr) {
94  const TileDigitsCollection* digitsCollection = *collItr;
95 
96  auto outputDigitsCollection = std::make_unique<ConstDataVector<TileDigitsCollection> >
97  (SG::VIEW_ELEMENTS, digitsCollection->identify());
98 
99  int fragId = digitsCollection->identify();
100  unsigned int drawerIdx = TileCalibUtils::getDrawerIdxFromFragId(fragId);
101 
102  for (const TileDigits* tile_digits : *digitsCollection) {
103  HWIdentifier adcId = tile_digits->adc_HWID();
104  int channel = m_tileHWID->channel(adcId);
105  int gain = m_tileHWID->adc(adcId);
106 
107  float dspThreshold = m_tileDspThreshold->getDspThreshold(drawerIdx, channel, gain);
108 
109  const std::vector<float>& digits = tile_digits->samples();
110  auto minMaxDigits = std::minmax_element(digits.begin(), digits.end());
111  float minDigit = *minMaxDigits.first;
112  float maxDigit = *minMaxDigits.second;
113 
114  if (maxDigit - minDigit > dspThreshold) {
115  outputDigitsCollection->push_back(tile_digits);
116  }
117 
118  }
119  ATH_CHECK( outputDigitsContainer->addCollection (outputDigitsCollection.release()->asDataVector(),
120  collItr.hashId()) );
121 
122  }
123 
124 
125  return StatusCode::SUCCESS;
126 }
127 
128 
130 
131  ATH_MSG_DEBUG( "in finalize()" );
132 
133  return StatusCode::SUCCESS;
134 }
135 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
IdentifiableContainerMT::addCollection
virtual StatusCode addCollection(const T *coll, IdentifierHash hashId) override final
insert collection into container with id hash if IDC should not take ownership of collection,...
Definition: IdentifiableContainerMT.h:300
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TileDigitsThresholdFilter::m_tileDspThreshold
ToolHandle< ITileCondToolDspThreshold > m_tileDspThreshold
Definition: TileDigitsThresholdFilter.h:66
TileDigitsThresholdFilter::m_inputDigitsContainerKey
SG::ReadHandleKey< TileDigitsContainer > m_inputDigitsContainerKey
Definition: TileDigitsThresholdFilter.h:68
TileDigitsThresholdFilter::~TileDigitsThresholdFilter
virtual ~TileDigitsThresholdFilter()
Definition: TileDigitsThresholdFilter.cxx:49
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
TileDigitsThresholdFilter::finalize
StatusCode finalize()
finalize method
Definition: TileDigitsThresholdFilter.cxx:129
TileDigitsThresholdFilter::TileDigitsThresholdFilter
TileDigitsThresholdFilter(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TileDigitsThresholdFilter.cxx:41
TileCalibUtils.h
TileDigitsThresholdFilter::m_outputDigitsContainerKey
SG::WriteHandleKey< TileDigitsContainer > m_outputDigitsContainerKey
Definition: TileDigitsThresholdFilter.h:71
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
HWIdentifier
Definition: HWIdentifier.h:13
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TileRawDataContainer::set_bsflags
void set_bsflags(uint32_t bsflags)
Definition: TileRawDataContainer.h:65
TileRawChannelContainer.h
WriteHandle.h
Handle class for recording to StoreGate.
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
TileDigitsThresholdFilter::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileDigitsThresholdFilter.h:65
TileHWID.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TileRawDataContainer::get_bsflags
uint32_t get_bsflags() const
Definition: TileRawDataContainer.h:64
TileDigitsThresholdFilter::execute
StatusCode execute()
execute method
Definition: TileDigitsThresholdFilter.cxx:77
TileRawDataContainer::set_unit
void set_unit(UNIT unit)
Definition: TileRawDataContainer.h:61
TileDigitsThresholdFilter.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IdentifiableContainerMT::end
const_iterator end() const
return const_iterator for end of container
Definition: IdentifiableContainerMT.h:242
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:82
IdentifiableContainerMT::begin
const_iterator begin() const
return const_iterator for first entry
Definition: IdentifiableContainerMT.h:236
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TileRawDataCollection::identify
ID identify() const
Definition: TileRawDataCollection.h:71
TileDigitsCollection
Definition: TileDigitsCollection.h:18
IdentifiableContainerMT::const_iterator::hashId
IdentifierHash hashId() const
hashId of the pointed-to element
Definition: IdentifiableContainerMT.h:130
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TileDigits
Definition: TileDigits.h:30
errorcheck.h
Helpers for checking error return status codes and reporting errors.
TileCondToolDspThreshold.h
TileRawDataContainer::get_type
TYPE get_type() const
Definition: TileRawDataContainer.h:62
TileRawDataContainer::set_type
void set_type(TYPE type)
Definition: TileRawDataContainer.h:63
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
TileRawDataContainer::get_unit
UNIT get_unit() const
Definition: TileRawDataContainer.h:60
ReadHandle.h
Handle class for reading from StoreGate.
TileCalibUtils::getDrawerIdxFromFragId
static unsigned int getDrawerIdxFromFragId(unsigned int fragId)
Returns a drawer hash from fragId This function assumes drawer context (i.e.
Definition: TileCalibUtils.cxx:71
TileDigitsThresholdFilter::initialize
StatusCode initialize()
initialize method
Definition: TileDigitsThresholdFilter.cxx:55