24 {
25 if(slbout->isValid()==false) return nullptr;
26
27 int channel = slbout->getChannel();
28 int block = slbout->getBlock();
30
33
34 int adjacentOfSLB = -1;
35 int channelInSLB = -1;
37 switch(moduleType){
39
40
41
42 if(orChannel==false){
43 if(channel%numberOfLayer==1){
46 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
47 +adjacentOfSLB;
48 }
49 if(channel%numberOfLayer==0){
52 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
53 +adjacentOfSLB;
54 }
55 }
56 if(orChannel==true){
57 if(channel%numberOfLayer==1){
60 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
61 +adjacentOfSLB;
62 }
63 if(channel%numberOfLayer==0){
66 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
67 +adjacentOfSLB;
68 }
69 }
70 break;
72
73
74
75 if(orChannel==false){
76 if(channel%numberOfLayer==1){
79 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
80 +adjacentOfSLB;
81 }
82 if(channel%numberOfLayer==0){
85 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
86 +adjacentOfSLB;
87 }
88 }
89 if(orChannel==true){
90 if(channel%numberOfLayer==1){
93 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
94 +adjacentOfSLB;
95 }
96 if(channel%numberOfLayer==0){
99 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
100 +adjacentOfSLB;
101 }
102 }
103 break;
105
106
107
108
109 if((channel+block*channelInBlock)%numberOfLayer==2){
112 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
113 +adjacentOfSLB;
114 }
115 if((channel+block*channelInBlock)%numberOfLayer==1){
118 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
119 +adjacentOfSLB;
120 }
121 if((channel+block*channelInBlock)%numberOfLayer==0){
124 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
125 +adjacentOfSLB;
126 }
127 break;
131
132
133
134 if(orChannel==false){
135 if(channel%numberOfLayer==1){
138 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
139 +adjacentOfSLB;
140 }
141 if(channel%numberOfLayer==0){
144 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
145 +adjacentOfSLB;
146 }
147 }
148 if(orChannel==true){
149 if(channel%numberOfLayer==1){
152 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
153 +adjacentOfSLB;
154 }
155 if(channel%numberOfLayer==0){
158 channelInSLB = (
channel+block*channelInBlock)/numberOfLayer
159 +adjacentOfSLB;
160 }
161 }
162 break;
163
164 default:
165 break;
166 }
167
168 TGCChannelSLBIn* slbin = nullptr;
169 if(channelInSLB!=-1){
171 cellType,channelInSLB);
172 slbin = new TGCChannelSLBIn(slbout->getSideType(),
173 slbout->getModuleType(),
174 slbout->getRegionType(),
175 slbout->getSector(),
176 slbout->getId(),
177 channelOfSLB);
178
179 }
180 return slbin;
181}
static int getAdjacentOfSLB(TGCId::ModuleType moduleType, CellType cellType)
static int convertChannel(TGCId::ModuleType moduleType, CellType cellType, int channelInSLB)
static int getNumberOfLayer(TGCId::ModuleType moduleType)
static int getChannelInBlock(TGCId::ModuleType moduleType)