ATLAS Offline Software
Loading...
Searching...
No Matches
TgcChamber.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4#include "TgcChamber.h"
5#include "TString.h"
6#include <iostream>
7
8void TGC::TgcChamber::initChamber(const std::string& cham_name){
9 // example: A01M01f01E01
10 TGCSIDE iSide = (cham_name.substr(0,1).compare("A")==0)?(TGC::TGCSIDE::TGCASIDE):(TGC::TGCSIDE::TGCCSIDE);
11 int iSec = std::stoi(cham_name.substr(1,2));
12 int iM = std::stoi(cham_name.substr(4,2));
13 int iPhi = std::stoi(cham_name.substr(7,2));
14 int iEta = std::stoi(cham_name.substr(10,2));
16}
17void TGC::TgcChamber::initChamber(TGCSIDE side,int sec,int m, int phi, int eta)
18{
19 m_iSide = side;
20 m_iSec = sec;
21 m_iM = m;
22 m_iPhi = phi;
23 m_iEta = eta;
24 if(m_iM==1 && m_iEta==0){
25 m_stationName = 41;
27 m_stationPhi = (m_iSec-1)*2 + m_iPhi/2+1 - 1;
28 if( m_stationPhi <= 0 ) m_stationPhi += 24;
30 }else if(m_iM==1 && m_iEta!=0){
31 m_stationName = 42;
32 m_stationEta = ((m_iSide==TGC::TGCSIDE::TGCASIDE)?(+1):(-1)) * (5 - m_iEta);
33 m_stationPhi = (m_iSec-1)*4 + m_iPhi - 1;
34 if( m_stationPhi <= 0 ) m_stationPhi += 48;
36 }else if(m_iM==2 && m_iEta==0){
37 m_stationName = 43;
39 m_stationPhi = (m_iSec-1)*2 + m_iPhi/2+1 - 1;
40 if( m_stationPhi <= 0 ) m_stationPhi += 24;
42 }else if(m_iM==2 && m_iEta!=0){
43 m_stationName = 44;
44 m_stationEta = ((m_iSide==TGC::TGCSIDE::TGCASIDE)?(+1):(-1)) * (6 - m_iEta);
45 m_stationPhi = (m_iSec-1)*4 + m_iPhi - 1;
46 if( m_stationPhi <= 0 ) m_stationPhi += 48;
48 }else if(m_iM==3 && m_iEta==0){
49 m_stationName = 45;
51 m_stationPhi = (m_iSec-1)*2 + m_iPhi/2+1 - 1;
52 if( m_stationPhi <= 0 ) m_stationPhi += 24;
54 }else if(m_iM==3 && m_iEta!=0){
55 m_stationName = 46;
56 m_stationEta = ((m_iSide==TGC::TGCSIDE::TGCASIDE)?(+1):(-1)) * (6 - m_iEta);
57 m_stationPhi = (m_iSec-1)*4 + m_iPhi - 1;
58 if( m_stationPhi <= 0 ) m_stationPhi += 48;
60 }else if(m_iM==4 && m_iEta==0){
61 m_stationName = 47;
65 }else if(m_iM==4 && m_iEta!=0){
66 m_stationName = 48;
68 if(m_iSec==1){
70 }else if(m_iSec==3){
71 m_stationPhi = m_iPhi + 3;
72 }else if(m_iSec==5){
73 m_stationPhi = m_iPhi + 6;
74 }else if(m_iSec==7){
75 m_stationPhi = m_iPhi + 8;
76 }else if(m_iSec==9){
77 m_stationPhi = m_iPhi + 11;
78 }else if(m_iSec==11){
79 m_stationPhi = m_iPhi + 13;
80 }else if(m_iSec==13){
81 m_stationPhi = m_iPhi + 16;
82 }else if(m_iSec==15){
83 m_stationPhi = m_iPhi + 18;
84 }
85 if( m_stationPhi <= 0 ) m_stationPhi += 21;
87 }
88 m_cham_name = Form("%s%02dM%02df%02d%s%02d",(m_iSide==TGC::TGCSIDE::TGCASIDE)?("A"):("C"),m_iSec,m_iM,m_iPhi,(m_iEta==0)?("F"):("E"),m_iEta);
89}
90void TGC::TgcChamber::initChamber(TGCSIDE side,int stationEta ,int stationPhi, int stationName){
91 initChamber(std::abs(stationEta) * ((side==TGC::TGCSIDE::TGCASIDE) ? (+1.0) : (-1.0)) , stationPhi, stationName);
92}
93void TGC::TgcChamber::initChamber(int stationEta ,int stationPhi, int stationName){
95 int iSec = 0;
96 int iM = 0;
97 int iPhi = 0;
98 int iEta = 0;
99 iSide = (stationEta > 0) ? (TGC::TGCSIDE::TGCASIDE) : (TGC::TGCSIDE::TGCCSIDE);
100 iM = 0;
101 if (stationName == 41 || stationName == 42) iM = 1;
102 else if (stationName == 43 || stationName == 44) iM = 2;
103 else if (stationName == 45 || stationName == 46) iM = 3;
104 else if (stationName == 47 || stationName == 48) iM = 4; // EIFI
105
106 if (iM != 4) { // Big Wheel, (M1,M2,M3)
107 if (stationName % 2 == 0) { // Endcap
108 int iphi2 = stationPhi + 1; // 2,3,4,..,49
109 if (iphi2 >= 48) iphi2 -= 48; // 0,1,2,3 ..., 47
110 iSec = int(iphi2 / 4) + 1; // 1,2,3,,,12
111 iPhi = iphi2 - (iSec - 1) * 4; // 0,1,2,3
112 iEta = (iM == 1) ? (5 - std::abs(stationEta)) : (6 - std::abs(stationEta));
113 } else { // Forward
114 int iphi2 = stationPhi; // 1,2,3,4,..,25
115 if (iphi2 >= 24) iphi2 -= 24; // 0,1,2,3 ...,23
116 iSec = int(iphi2 / 2) + 1; // 1,2,3,,,12
117 iPhi = iphi2 - (iSec - 1) * 2; // 0,1
118 if (iPhi == 1) iPhi = 2; //0,2
119 iEta = 0; // F
120 }
121 } else { // Small Wheel (M4)
122 if (stationName == 47) { // FI
123 iSec = 0;
124 iPhi = stationPhi; // 1,2,3..24
125 iEta = 0;
126 } else if (stationName == 48) { // EI
127 int iphi2 = (stationPhi >= 21) ? (stationPhi - 21) : (stationPhi); // 0,1,2,..,20
128 if (iphi2 >= 0 && iphi2 <= 2) {
129 iSec = 1;
130 iPhi = iphi2; // 0,1,2
131 } else if (iphi2 >= 3 && iphi2 <= 5) {
132 iSec = 3;
133 iPhi = iphi2 - 3; // 0,1,2
134 } else if (iphi2 >= 6 && iphi2 <= 8) {
135 iSec = 5;
136 iPhi = iphi2 - 6; // 0,1,2
137 } else if (iphi2 >= 9 && iphi2 <= 10) {
138 iSec = 7;
139 iPhi = iphi2 - 9 + 1; // 1,2
140 } else if (iphi2 >= 11 && iphi2 <= 13) {
141 iSec = 9;
142 iPhi = iphi2 - 11; // 0,1,2
143 } else if (iphi2 >= 14 && iphi2 <= 15) {
144 iSec = 11;
145 iPhi = iphi2 - 13; // 1,2
146 } else if (iphi2 >= 16 && iphi2 <= 18) {
147 iSec = 13;
148 iPhi = iphi2 - 16; // 0,1,2
149 } else if (iphi2 >= 19 && iphi2 <= 20) {
150 iSec = 15;
151 iPhi = iphi2 - 19 + 1; // 1,2
152 }
153 iEta = 1;
154 }
155 }
157}
158
159
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
TGCDETECTOR m_detId
Definition TgcChamber.h:33
const int & iM() const
Definition TgcChamber.h:47
void initChamber(const std::string &chamber_name)
Definition TgcChamber.cxx:8
const int & iSec() const
Definition TgcChamber.h:46
TGCSIDE m_iSide
Definition TgcChamber.h:32
const TGCSIDE & iSide() const
Definition TgcChamber.h:44
const int & iEta() const
Definition TgcChamber.h:49
std::string m_cham_name
Definition TgcChamber.h:31
const int & iPhi() const
Definition TgcChamber.h:48
const std::string & cham_name() const
Definition TgcChamber.h:43
TGCSIDE
Definition TgcBase.h:10