Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
28 std::vector<std::string> modules;
36 std::ostringstream
os;
52 std::map<std::string, unsigned int> roses = { {
"AUX", 0}, {
"LBA", 1}, {
"LBC", 2}, {
"EBA", 3}, {
"EBC", 4} };
53 for (
const std::string& maskedModuleChannels :
m_masked) {
55 std::string
module = maskedModuleChannels.substr(0, 5);
59 <<
" => skip because of bad format: " << maskedModuleChannels);
63 unsigned int drawer = std::stoi(
module.substr(3, 2)) - 1;
66 <<
" => skip because of bad format: " << maskedModuleChannels);
73 std::string
gain = maskedModuleChannels.substr(5,7);
74 unsigned int adc = std::stoi(
gain);
77 ATH_MSG_WARNING(
"There no such gain: " <<
gain <<
" => skip because of bad format: " << maskedModuleChannels);
81 std::stringstream
channels(maskedModuleChannels.substr(7));
88 <<
" => skip because of bad format: " << maskedModuleChannels);
116 std::vector<std::string> beamChambers{
"BC1",
"BC2"};
123 return StatusCode::SUCCESS;
139 std::vector<std::reference_wrapper<int>>
mu{muTag, muHalo, muVeto};
157 double totalMuonWallEnergy = 0;
162 ATH_MSG_VERBOSE(
"TileRawDataContainer of TileRawDataCollection of TileBeamElem size = " << beamElemContainer->
size());
167 int frag = beamElemCollection->identify();
168 ATH_MSG_VERBOSE(
"TileRawDataCollection of TileBeamElem Id = 0x" << MSG::hex << frag << MSG::dec
169 <<
" size = " << beamElemCollection->size());
171 for (
const TileBeamElem* beamElement : *beamElemCollection) {
175 HWIdentifier
id = beamElement->adc_HWID();
176 std::vector<uint32_t> digits = beamElement->get_digits();
178 int nDigits = digits.size();
180 if ( nDigits <= 0 ) {
183 <<
" in frag 0x"<< MSG::hex << frag << MSG::dec
184 <<
" - " << BeamFragName[frag & 0x1F]);
187 int amplitude = digits[0];
190 <<
" in frag 0x" << MSG::hex << frag << MSG::dec
191 <<
" - " << BeamFragName[frag & 0x1F]
192 <<
" with amp=" << amplitude);
201 totalMuonWallEnergy += amplitude;
213 muonWall[8 +
channel] = amplitude;
215 totalMuonWallEnergy += amplitude;
264 cherenkov[
channel - 3] = amplitude;
285 muonWall[10] = amplitude;
287 totalMuonWallEnergy += amplitude;
290 sCounter[2] = amplitude;
293 cherenkov[
channel - 3] = amplitude;
295 muonWall[
channel - 6] = amplitude;
297 totalMuonWallEnergy += amplitude;
312 cherenkov[
channel - 3] = amplitude;
329 totalMuonWallEnergy += amplitude;
342 scaler12 = amplitude;
354 fill(
"TileTBTotalMuonEnergy", monTotalMuonEnergy);
356 std::vector<int> counterToTOF{14,15,13};
362 for (
unsigned int pairIdx = 0; pairIdx <
m_tofPairs.size(); ++pairIdx) {
363 const std::pair<int, int>& tofPair =
m_tofPairs[pairIdx];
364 int tof1 = tof[counterToTOF[tofPair.first - 1]];
365 int tof2 = tof[counterToTOF[tofPair.second - 1]];
366 if (tof1 != 0 && tof2 != 0) {
384 fill(
"CherCompare", monCherenkovAmplitude1, monCherenkovAmplitude2);
386 for (
int tofCounter = 0; tofCounter <
N_TOF; ++tofCounter) {
388 for (
int cherenkovCounter = 0; cherenkovCounter <
N_CHERENKOV; ++cherenkovCounter) {
401 fill(
"Scaler12", monCounts12);
414 fill(
"PMTHitMap", monColumn, monRow, monAmplitude);
458 fill(
"ImpactProfile", xImp, yImp);
466 if (!caloCellContainer->
empty()) {
468 double cellEnergy = 0;
469 double totalEnergy(0.0);
474 if (!tile_cell)
continue;
478 IdentifierHash hash1 = caloDDE->
onl1();
479 IdentifierHash hash2 = caloDDE->
onl2();
524 double energy_pC =
energy * 0.001;
525 totalEnergy += energy_pC;
527 if (energy_pC > cellEnergy) {
528 cellEnergy = energy_pC;
541 fill(
"CellEnergyImpactX", xImp, monCellEnergy);
542 fill(
"CellEnergyImpactY", yImp, monCellEnergy);
543 fill(
"TotalEnergyImpactX", xImp, monTotalEnergy);
544 fill(
"TotalEnergyImpactY", yImp, monTotalEnergy);
547 fill(
"ScinCalEnergy", monAmplitudeS1, monTotalEnergy);
553 return StatusCode::SUCCESS;
559 <<
" in frag 0x" << MSG::hex << frag << MSG::dec
560 <<
" - " << BeamFragName[frag & 0x1F]);
std::array< std::array< unsigned char, TileCalibUtils::MAX_CHAN >, TileCalibUtils::MAX_DRAWERIDX > m_maskedChannels
std::array< bool, N_MUON_WALL_PMT > m_maskedMuPMTs
def retrieve(aClass, aKey=None)
IdentifierHash onl2() const
cell online identifier 2
Gaudi::Property< double > m_bc1VerticalOffset
std::vector< int > m_tofDiffGroups
Gaudi::Property< int > m_TBperiod
SG::ReadHandleKey< TileBeamElemContainer > m_beamElemContainerKey
setOverV setNumU setNumY setODFibSel setYDetCS setYLhcCS setXRPotCS setXStatCS setXBeamCS scaler
float ene1(void) const
get energy of first PMT
Gaudi::Property< std::vector< unsigned int > > m_maskMuonPMTs
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Gaudi::Property< double > m_bc1VerticalSlope
size_t size() const
Duplicate of fullSize for backwards compatability.
std::array< bool, TileCalibUtils::MAX_DRAWERIDX > m_monitoredDrawerIdx
#define ATH_MSG_VERBOSE(x)
bool empty() const
Test if the key is blank.
Gaudi::Property< std::vector< int > > m_fragIDs
Gaudi::Property< std::vector< std::string > > m_masked
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
def timer(name, disabled=False)
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
static const unsigned int MAX_DRAWER
Number of drawers in ROS 1-4.
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Gaudi::Property< std::vector< std::pair< int, int > > > m_tofPairs
IdentifierHash onl1() const
cell online identifier 1
std::map< std::string, int > m_beamChamberGroups
Generic monitoring tool for athena components.
::StatusCode StatusCode
StatusCode definition for legacy code.
const TileHWID * m_tileID
std::vector< std::vector< int > > m_cherenkovVsTOFGroups
std::vector< int > m_cherenkovVsEnergyGroups
void errorWrongChannel(int frag, int channel) const
SG::ReadHandleKey< CaloCellContainer > m_caloCellContainerKey
Gaudi::Property< double > m_beamBC1Z
std::vector< int > m_tofGroups
bool is_tile(Identifier id) const
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
int gain1(void) const
get gain of first PMT
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Gaudi::Property< double > m_bc2VerticalOffset
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Gaudi::Property< double > m_bc2HorizontalSlope
HWIdentifier channel_id(int ros, int drawer, int channel) const
channel HWIdentifer
Gaudi::Property< double > m_beamBC2Z
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
Gaudi::Property< double > m_bc2VerticalSlope
Gaudi::Property< double > m_bc1HorizontalOffset
virtual StatusCode initialize() override
initialize
virtual StatusCode initialize() override
initialize
Gaudi::Property< double > m_bc2HorizontalOffset
static std::string getDrawerString(unsigned int ros, unsigned int drawer)
Return the drawer name, e.g.
int gain2(void) const
get gain of second PMT
float ene2(void) const
get energy of second PMT
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Data object for each calorimeter readout cell.
#define ATH_MSG_WARNING(x)
std::vector< int > m_cherenkovGroups
std::vector< int > m_scalerGroups
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Declare a monitored scalar variable.
Handle class for reading from StoreGate.
static const unsigned int MAX_CHAN
Number of channels in drawer.
const TileHWID * m_tileHWID
std::vector< int > m_sCounterGroups
Gaudi::Property< double > m_bc1HorizontalSlope
bool empty() const noexcept
Returns true if the collection is empty.
std::vector< int > m_muonWallGroups
static const unsigned int MAX_GAIN
Number of gains per channel