Back to home page

sPhenix code displayed by LXR

 
 

    


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 }