14 const std::string& name,
15 const IInterface* parent):
32 for(
int i_saddress=0; i_saddress<
s_saddress; i_saddress++) {
33 for(
int i_innerR=0; i_innerR<
s_innerR; i_innerR++) {
43 for(
int i_eta=0; i_eta<
s_eta; i_eta++) {
44 for(
int i_phi=0; i_phi<
s_phi; i_phi++) {
45 for(
int i_etaQ=0; i_etaQ<
s_etaQ; i_etaQ++) {
46 m_dZ[i_saddress][i_innerR][i_eta][i_phi][i_etaQ] = 0;
53 file.open(lut_fileName.c_str());
55 ATH_MSG_INFO(
"Failed to open barrel alignment LUT file");
56 return StatusCode::FAILURE;
59 for(
int i_lut=0; i_lut<2; i_lut++) {
61 file >> saddress >> innerR;
69 for (
int i_eta=0; i_eta<
s_eta; i_eta++) {
70 for (
int i_phi=0; i_phi<
s_phi; i_phi++) {
71 for (
int i_etaQ=0; i_etaQ<
s_etaQ; i_etaQ++) {
73 file >> N0 >> N1 >> N2 >> A0 >> A1 >> A2;
75 m_dZ[saddress][innerR][i_eta][i_phi][i_etaQ] = A0;
83 return StatusCode::SUCCESS;
97 int innerR = (sp1R > 5800)? 1: 0;
100 int iEta =
bins.first;
101 int iPhi =
bins.second;
103 int iChamber=( std::abs(MFphi)>90*TMath::DegToRad() ) ? 1:0;
105 int iEta_inv=29-iEta;
106 int iPhi_inv=29-iPhi;
126 int sign_etam=(iEta>14)?-1:1;
127 int sign_etap=-sign_etam;
129 return (
m_dZ[saddress][innerR][iEta_bin][iPhi_bin][0]*sign_etam
130 +
m_dZ[saddress][innerR][iEta_bin][iPhi_bin][1]*sign_etap) / 2.;
133 ATH_MSG_INFO(
"Barrel alignment is implemented only for Large-SP");
145 if(saddress > 3 || saddress < 0 || innerR < 0 || innerR > 1)
return std::make_pair(-5,-5);
147 int etaBin = (int)((etaMap -
m_EtaMin[saddress][innerR])/
m_EtaStep[saddress][innerR]);
148 int phiBin = (int)((phiMap -
m_PhiMin[saddress][innerR])/
m_PhiStep[saddress][innerR]);
150 if(etaBin <= -1) etaBin = 0;
153 if(phiBin <= -1) phiBin = 0;
156 return std::make_pair(etaBin,phiBin);
static const std::vector< std::string > bins
std::pair< int, int > GetBinNumber(int saddress, int innerR, double etaMap, double phiMap) const
float m_PhiMin[s_saddress][s_innerR]
static constexpr int s_etaQ
float m_PhiStep[s_saddress][s_innerR]
static constexpr int s_phi
int m_NbinEta[s_saddress][s_innerR]
float m_EtaMax[s_saddress][s_innerR]
float m_EtaMin[s_saddress][s_innerR]
double GetDeltaZ(int &saddress, double &etaMap, double &phiMap, double &MFphi, float &sp1R) const
int m_NbinPhi[s_saddress][s_innerR]
AlignmentBarrelLUT(const std::string &type, const std::string &name, const IInterface *parent)
float m_PhiMax[s_saddress][s_innerR]
StatusCode readLUT(const std::string &lut_fileName)
float m_EtaStep[s_saddress][s_innerR]
static constexpr int s_eta
double m_dZ[s_saddress][s_innerR][s_eta][s_phi][s_etaQ]
static constexpr int s_innerR
static constexpr int s_saddress