File indexing completed on 2025-08-05 08:18:14
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() {}
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 else
0037 {
0038 std::string line;
0039 while (std::getline(file, line))
0040 {
0041 std::istringstream iss(line);
0042 int layer, stave;
0043 double alpha, beta, gamma, x, y, z;
0044 if (!(iss >> layer >> stave >> alpha >> beta >> gamma >> x >> y >> z))
0045 {
0046 std::cout << "PHG4MvtxMisalignment::LoadMvtxStaveAlignmentParameters - ERROR - Could not read line " << line << std::endl;
0047 m_GlobalDisplacementX = 0.0;
0048 m_GlobalDisplacementY = 0.0;
0049 m_GlobalDisplacementZ = 0.0;
0050 continue;
0051 }
0052 else
0053 {
0054 m_GlobalDisplacementX += x;
0055 m_GlobalDisplacementY += y;
0056 m_GlobalDisplacementZ += z;
0057 }
0058 }
0059 }
0060
0061 double Ntotstaves = 0.0;
0062 for (const auto & i : PHG4MvtxDefs::mvtxdat)
0063 {
0064 Ntotstaves += i[PHG4MvtxDefs::kNStave];
0065 }
0066
0067 m_GlobalDisplacementX /= Ntotstaves;
0068 m_GlobalDisplacementY /= Ntotstaves;
0069 m_GlobalDisplacementZ /= Ntotstaves;
0070
0071 file.close();
0072 }