Back to home page

sPhenix code displayed by LXR

 
 

    


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 }