17 m_database[TGCId::Endcap][TGCId::WD] =
18 std::make_unique<TGCDatabaseInPP>(filename,
"EWD");
19 m_database[TGCId::Endcap][TGCId::WT] =
20 std::make_unique<TGCDatabaseInPP>(filename,
"EWT");
21 m_database[TGCId::Endcap][TGCId::SD] =
22 std::make_unique<TGCDatabaseInPP>(filename,
"ESD");
23 m_database[TGCId::Endcap][TGCId::ST] =
24 std::make_unique<TGCDatabaseInPP>(filename,
"EST");
25 m_database[TGCId::Endcap][TGCId::WI] =
26 std::make_unique<TGCDatabaseInPP>(filename,
"EWI");
27 m_database[TGCId::Endcap][TGCId::SI] =
28 std::make_unique<TGCDatabaseInPP>(filename,
"ESI");
29 m_database[TGCId::Forward][TGCId::WD] =
30 std::make_unique<TGCDatabaseInPP>(filename,
"FWD");
31 m_database[TGCId::Forward][TGCId::WT] =
32 std::make_unique<TGCDatabaseInPP>(filename,
"FWT");
33 m_database[TGCId::Forward][TGCId::SD] =
34 std::make_unique<TGCDatabaseInPP>(filename,
"FSD");
35 m_database[TGCId::Forward][TGCId::ST] =
36 std::make_unique<TGCDatabaseInPP>(filename,
"FST");
37 m_database[TGCId::Forward][TGCId::WI] =
38 std::make_unique<TGCDatabaseInPP>(filename,
"FWI");
39 m_database[TGCId::Forward][TGCId::SI] =
40 std::make_unique<TGCDatabaseInPP>(filename,
"FSI");
76 int id = -1, block = -1, channel = -1;
79 for (
int idatabaseP = 0; idatabaseP < ndatabaseP; idatabaseP++) {
84 if (idatabaseP == 1) {
95 if (orChannel ==
false) {
97 id = databaseP[idatabaseP]->
getEntry(i, 3);
98 block = databaseP[idatabaseP]->
getEntry(i, 4);
99 channel = databaseP[idatabaseP]->
getEntry(i, 5);
100 if (
id == -1 && block == -1 && channel == -1) {
107 if (databaseP[idatabaseP]->getEntrySize(i) == 9) {
108 id = databaseP[idatabaseP]->
getEntry(i, 6);
109 block = databaseP[idatabaseP]->
getEntry(i, 7);
110 channel = databaseP[idatabaseP]->
getEntry(i, 8);
120 return std::make_unique<TGCChannelPPIn>(
132 const int ppinBlock = ppin.
getBlock();
133 const int ppinId = ppin.
getId();
139 for (
int i = 0; i < MaxEntry; i++) {
140 bool cond1 = (databaseP->
getEntry(i, 5) == ppinChannel) &&
141 (databaseP->
getEntry(i, 4) == ppinBlock) &&
142 (databaseP->
getEntry(i, 3) == ppinId);
145 (databaseP->
getEntry(i, 8) == ppinChannel) &&
146 (databaseP->
getEntry(i, 7) == ppinBlock) &&
147 (databaseP->
getEntry(i, 6) == ppinId);
149 if (cond1 || cond2) {
151 int block = databaseP->
getEntry(i, 1);
152 int channel = databaseP->
getEntry(i, 2);
155 int channelInSLB = -1;
156 bool adjacent =
false;
158 if (block == 0 || block == 2) {
163 if (channel < lengthOfD) {
167 channelInSLB = channel;
168 if (channelInSLB < adjacentOfD ||
169 channelInSLB >= lengthOfD - adjacentOfD) {
176 channelInSLB = channel - lengthOfD;
177 if (channelInSLB < adjacentOfC ||
178 channelInSLB >= lengthOfC - adjacentOfC) {
183 if (block == 1 || block == 3) {
188 if (channel < lengthOfB) {
192 channelInSLB = channel;
193 if (channelInSLB < adjacentOfB ||
194 channelInSLB >= lengthOfB - adjacentOfB) {
201 channelInSLB = channel - lengthOfB;
202 if (channelInSLB < adjacentOfA ||
203 channelInSLB >= lengthOfA - adjacentOfA) {
215 if (adjacent == orChannel) {
216 return std::make_unique<TGCChannelPPOut>(