- // ROOT
- #include "TH1.h"
-
- // Gaudi
- #include "GaudiKernel/IHistogramSvc.h"
- #include "GaudiUtils/Aida2ROOT.h"
-
- // Local
- #include "TbAlignmentSurvey.h"
-
- DECLARE_TOOL_FACTORY(TbAlignmentSurvey)
-
- //=============================================================================
- // Standard constructor, initializes variables
- //=============================================================================
- TbAlignmentSurvey::TbAlignmentSurvey(const std::string& type,
- const std::string& name,
- const IInterface* parent)
- : TbAlignmentBase(type, name, parent) {}
-
- //=============================================================================
- // Destructor
- //=============================================================================
- TbAlignmentSurvey::~TbAlignmentSurvey() {}
-
- //=============================================================================
- // Initialization
- //=============================================================================
- StatusCode TbAlignmentSurvey::initialize() {
-
- // Initialise the base class.
- StatusCode sc = TbAlignmentBase::initialize();
- if (sc.isFailure()) return sc;
-
- return StatusCode::SUCCESS;
- }
-
- void TbAlignmentSurvey::align(std::vector<TbAlignmentTrack*>& /*tracks*/) {
-
- info() << "Survey alignment" << endmsg;
- for (unsigned int i = 0; i < m_nPlanes; ++i) {
- if (masked(i)) continue;
- const std::string plane = std::to_string(i);
- const std::string path = "Tb/TbClusterPlots/Differences/";
- const std::string titlex = path + "x/Plane" + plane;
- const std::string titley = path + "y/Plane" + plane;
- double tx = m_modules[i]->x();
- double ty = m_modules[i]->y();
-
- if (m_dofs[0]) {
- AIDA::IHistogram1D* hAida = NULL;
- StatusCode sc = GaudiTool::histoSvc()->retrieveObject(titlex, hAida);
- if (sc.isFailure() || !hAida) {
- warning() << "Cannot retrieve histogram " << titlex << endmsg;
- } else {
- auto hRoot = Gaudi::Utils::Aida2ROOT::aida2root(hAida);
- tx -= hRoot->GetBinCenter(hRoot->GetMaximumBin());
- }
- }
- if (m_dofs[1]) {
- AIDA::IHistogram1D* hAida = NULL;
- StatusCode sc = GaudiTool::histoSvc()->retrieveObject(titley, hAida);
- if (sc.isFailure() || !hAida) {
- warning() << "Cannot retrieve histogram " << titley << endmsg;
- } else {
- auto hRoot = Gaudi::Utils::Aida2ROOT::aida2root(hAida);
- ty -= hRoot->GetBinCenter(hRoot->GetMaximumBin());
- }
- }
- const double rx = m_modules[i]->rotX();
- const double ry = m_modules[i]->rotY();
- const double rz = m_modules[i]->rotZ();
- const double tz = m_modules[i]->z();
- m_modules[i]->setAlignment(tx, ty, tz, rx, ry, rz, 0., 0., 0., 0., 0., 0.);
- }
- }