![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
20 #ifndef XAOD_STANDALONE
21 declareInterface<IZdcAnalysisTool>(
this);
28 declareProperty(
"MinZdcEnergy",
m_minZdcEnergy = {-1.0, -1.0},
"Minimum (calibrated) ZDC energy for valid centroid (negative to disable); per side");
29 declareProperty(
"MaxZdcEnergy",
m_maxZdcEnergy = {-1.0, -1.0},
"Maximum (calibrated) ZDC energy for valid centroid (negative to disable); per side");
30 declareProperty(
"MinEmEnergy",
m_minEmEnergy = {-1.0, -1.0},
"Minimum (calibrated) EM energy for valid centroid (negative to disable); per side");
31 declareProperty(
"MaxEmEnergy",
m_maxEmEnergy = {-1.0, -1.0},
"Minimum (calibrated) EM energy for valid centroid (negative to disable); per side");
32 declareProperty(
"PileupMaxFrac",
m_pileupMaxFrac = {1.0, 1.0},
"Maximum fractional pileup allowed in an RPD channel for valid centroid; per side");
33 declareProperty(
"ExcessiveSubtrUnderflowFrac",
m_maximumNegativeSubtrAmpFrac = {1.0, 1.0},
"If any RPD channel subtracted amplitude is negative and its fraction of subtracted amplitude sum is greater than or equal to this number, the centroid is invalid; per side");
34 declareProperty(
"UseRpdSumAdc",
m_useRpdSumAdc =
true,
"If true, use RPD channel sum ADC for centroid calculation, else use RPD channel max ADC");
35 declareProperty(
"UseCalibDecorations",
m_useCalibDecorations =
true,
"If true, use RPD channel sum/max ADC decorations with output calibration factors applied during reconstruction, else use decorations with raw values");
45 for (
unsigned int side : {0, 1}) {
124 return StatusCode::SUCCESS;
135 std::fill(sidev.begin(), sidev.end(), 0.0);
138 std::fill(sidev.begin(), sidev.end(), 0.0);
141 std::fill(sidev.begin(), sidev.end(), 0.0);
151 std::fill(sidev.begin(), sidev.end(), 0.0);
154 std::fill(sidev.begin(), sidev.end(), 0.0);
185 for (
auto const& zdcModule : moduleContainer) {
187 if (zdcModule->zdcSide() == -1) {
189 }
else if (zdcModule->zdcSide() == 1) {
194 if (zdcModule->zdcType() == 0) {
196 if (zdcModule->zdcModule() == 0) {
201 }
else if (zdcModule->zdcType() == 1) {
205 unsigned int const& rpdChannel = zdcModule->zdcChannel();
206 if (rpdChannel > 15) {
207 ATH_MSG_WARNING(
"Invalid RPD channel found on side " <<
side <<
", channel number = " << rpdChannel <<
", skipping this module");
210 unsigned short const&
row = rowHandle(*zdcModule);
211 unsigned short const&
col = colHandle(*zdcModule);
236 for (
auto const& zdcSum: moduleSumContainer) {
238 if (zdcSum->zdcSide() == -1) {
240 }
else if (zdcSum->zdcSide() == 1) {
398 if (
angle >= TMath::Pi())
angle -= TMath::TwoPi();
423 for (
auto const& zdcSum: moduleSumContainer) {
425 if (zdcSum->zdcSide() == -1) {
427 }
else if (zdcSum->zdcSide() == 1) {
436 centroidStatusHandle(*zdcSum) =
static_cast<unsigned int>(
m_centroidStatus.at(
side).to_ulong());
454 if (moduleContainer.
size() == 0) {
456 return StatusCode::SUCCESS;
459 if (!
readAOD(moduleContainer, moduleSumContainer))
return StatusCode::FAILURE;
460 for (
unsigned int side : {0, 1}) {
477 return StatusCode::SUCCESS;
484 return StatusCode::FAILURE;
492 return StatusCode::SUCCESS;
def retrieve(aClass, aKey=None)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Handle class for reading a decoration on an object.
::StatusCode StatusCode
StatusCode definition for legacy code.
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Handle class for adding a decoration to an object.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
#define ATH_MSG_WARNING(x)
size_type size() const noexcept
Returns the number of elements in the collection.
GeoGenfun::FunctionNoop ATan2(GeoGenfun::GENFUNCTION y, GeoGenfun::GENFUNCTION x)