File indexing completed on 2025-12-17 09:22:09
0001 #include "PHG4MvtxMisalignment.h"
0002
0003 #include <array>
0004 #include <cmath> // for M_PI
0005 #include <cstdio> // for sprintf
0006 #include <fstream>
0007 #include <iostream> // for operator<<, basic...
0008 #include <map>
0009 #include <memory>
0010 #include <set>
0011 #include <sstream>
0012 #include <string>
0013 #include <tuple> // for tuple
0014 #include <utility> // for pair, make_pair
0015 #include <vector>
0016
0017 PHG4MvtxMisalignment::PHG4MvtxMisalignment() = default;
0018
0019 std::vector<double> PHG4MvtxMisalignment::get_GlobalDisplacement()
0020 {
0021 std::vector<double> globalDisplacement = {m_GlobalDisplacementX, m_GlobalDisplacementY, m_GlobalDisplacementZ};
0022 return globalDisplacement;
0023 }
0024
0025 void PHG4MvtxMisalignment::LoadMvtxStaveAlignmentParameters()
0026 {
0027 std::ifstream file(mvtxStaveAlignParamsFile);
0028 if (!file.is_open())
0029 {
0030 std::cout << "PHG4MvtxMisalignment::LoadMvtxStaveAlignmentParameters - ERROR - Could not open file " << mvtxStaveAlignParamsFile << std::endl;
0031 m_GlobalDisplacementX = 0.0;
0032 m_GlobalDisplacementY = 0.0;
0033 m_GlobalDisplacementZ = 0.0;
0034 return;
0035 }
0036 std::string line;
0037 while (std::getline(file, line))
0038 {
0039 std::istringstream iss(line);
0040 int layer;
0041 int stave;
0042 double alpha;
0043 double beta;
0044 double gamma;
0045 double x;
0046 double y;
0047 double z;
0048 if (!(iss >> layer >> stave >> alpha >> beta >> gamma >> x >> y >> z))
0049 {
0050 std::cout << "PHG4MvtxMisalignment::LoadMvtxStaveAlignmentParameters - ERROR - Could not read line " << line << std::endl;
0051 m_GlobalDisplacementX = 0.0;
0052 m_GlobalDisplacementY = 0.0;
0053 m_GlobalDisplacementZ = 0.0;
0054 continue;
0055 }
0056
0057 m_GlobalDisplacementX += x;
0058 m_GlobalDisplacementY += y;
0059 m_GlobalDisplacementZ += z;
0060 }
0061
0062 double Ntotstaves = 0.0;
0063 for (const auto &i : PHG4MvtxDefs::mvtxdat)
0064 {
0065 Ntotstaves += i[PHG4MvtxDefs::kNStave];
0066 }
0067
0068 m_GlobalDisplacementX /= Ntotstaves;
0069 m_GlobalDisplacementY /= Ntotstaves;
0070 m_GlobalDisplacementZ /= Ntotstaves;
0071
0072 file.close();
0073 }