163{
164
165 bool validcell = true;
166
167
168 int nphi = -1;
169 int towereta = -99;
170 int towerphi = -99;
171 int iGTower = -99;
172 int towerID_Modifier = -999999999;
173
174
175
176
177
178
179
180
181 switch (sample) {
182
183 case CaloSampling::PreSamplerB: {
184
187
188 nphi = 32;
189
190 if(eta_index == 14){
191 if(pos_neg < 0){ towerID_Modifier = 300000; }
192 else if(pos_neg > 0){ towerID_Modifier = 400000; }
193 }
194 else{
195 if(pos_neg < 0){ towerID_Modifier = 100000; }
196 else if(pos_neg > 0){ towerID_Modifier = 200000; }
197 }
198
199 break;
200 }
201 case CaloSampling::EMB1:
202 case CaloSampling::EMB2: {
203
204 nphi = 32;
205
206 if (region == 0) {
209 if(pos_neg < 0){ towerID_Modifier = 100000; }
210 else if(pos_neg > 0){ towerID_Modifier = 200000; }
211 }
212 else if (region == 1){
213 towereta = 7;
215 if(pos_neg < 0){ towerID_Modifier = 300000; }
216 else if(pos_neg > 0){ towerID_Modifier = 400000; }
217 }
218 else {
219 ATH_MSG_DEBUG(
"[CaloSampling::EMB1 or CaloSampling::EMB2] -> invalid 'region' value: " << region <<
" (Under investigation) ");
220 }
221
222 switch(sample){
223 case CaloSampling::EMB1: {
224 break;
225 }
226 case CaloSampling::EMB2: {
227 break;
228 }
229
230 default: {
231 ATH_MSG_DEBUG(
"CaloSampling::EMBX -> invalid sample for assigning iCell value! " << sample <<
" (Under investigation) ");
232 break;
233 }
234 }
235
236 break;
237 }
238 case CaloSampling::EMB3: {
239
240 nphi = 32;
243
244
245 if(pos_neg < 0){ towerID_Modifier = 100000; }
246 else if(pos_neg > 0){ towerID_Modifier = 200000; }
247
248 break;
249 }
250
251 case CaloSampling::PreSamplerE: {
252
253 nphi = 32;
254
255 if (eta_index < 1) {towereta = 7;}
256 else {towereta = 8;}
258
259
260 if (towereta == 7){
261 if(pos_neg < 0){ towerID_Modifier = 300000; }
262 else if(pos_neg > 0){ towerID_Modifier = 400000; }
263 }
264 else if (towereta != 7){
265 if(pos_neg < 0){ towerID_Modifier = 500000; }
266 else if(pos_neg > 0){ towerID_Modifier = 600000; }
267 }
268
269 break;
270 }
271 case CaloSampling::EME1: {
272
273 nphi = 32;
274
275 switch (region) {
276 case 0: {
277
278 towereta = 7;
280
281 break;
282 }
283 case 2: {
284
285 if (eta_index < 4) {towereta = 7;}
286 else {towereta = 8;}
288
289 break;
290 }
291 case 3: {
292
293 if (eta_index < 11) {towereta = 8;}
294 else {towereta = 9;}
296 break;
297
298 }
299 case 4: {
300
301 if (eta_index < 8) {towereta = 10;}
302 else {towereta = 11;}
304
305 break;
306 }
307 case 5: {
308
309 towereta = 11 ;
311
312 break;
313 }
314 default: {
315 ATH_MSG_DEBUG(
"CaloSampling::EME1 -> invalid 'region' value: " << region <<
" (Under investigation) ");
316 break;
317 }
318 break;
319 }
320
321 if (towereta == 7){
322 if(pos_neg < 0){ towerID_Modifier = 300000; }
323 else if(pos_neg > 0){ towerID_Modifier = 400000; }
324 }
325 else if (towereta != 7){
326 if(pos_neg < 0){ towerID_Modifier = 500000; }
327 else if(pos_neg > 0){ towerID_Modifier = 600000; }
328 }
329
330 break;
331 }
332 case CaloSampling::EME2: {
333
334 nphi = 32;
335
336 switch (region) {
337 case 0: {
338
339 if(abs(pos_neg) == 2){
340 towereta = 7;
342 }
343 else if(abs(pos_neg) == 3){
344 if (eta_index == 0){
345 towereta = 12;
347 }
348 else if (eta_index == 1){
349 towereta = 13;
351 }
352 else if (eta_index == 2){
353 towereta = 14;
355 }
356 }
357 break;
358 }
359 case 1: {
360 if(abs(pos_neg) == 2){
362 if (eta_index < 7) {towereta = 7;}
363 else if (eta_index < 15) {towereta = 8;}
364 else if (eta_index < 23) {towereta = 9;}
365 else if (eta_index < 31) {towereta = 10;}
366 else if (eta_index < 43) {towereta = 11;}
367 }
368 else if(abs(pos_neg) == 3){
370 towereta = 15;
371 }
372 break;
373 }
374
375 default: {
376 ATH_MSG_DEBUG(
"CaloSampling::EME2 -> invalid 'region' value: " << region <<
" (Under investigation) ");
377 break;
378 }
379 break;
380 }
381
382 if (towereta == 7){
383 if(pos_neg < 0){ towerID_Modifier = 300000; }
384 else if(pos_neg > 0){ towerID_Modifier = 400000; }
385 }
386 else if (towereta == 12 || towereta == 13 || towereta == 14 || towereta == 15){
387 if(pos_neg < 0){ towerID_Modifier = 700000; }
388 else if(pos_neg > 0){ towerID_Modifier = 800000; }
389 }
390 else {
391 if(pos_neg < 0){ towerID_Modifier = 500000; }
392 else if(pos_neg > 0){ towerID_Modifier = 600000; }
393 }
394
395 break;
396 }
397 case CaloSampling::EME3: {
398
399 nphi = 32;
400 switch (region) {
401 case 0: {
402 if(abs(pos_neg) == 2){
404 if (eta_index == 0){
405 towereta = 7;
406 }
407 else if(eta_index < 3){
408 towereta = 8;
409 }
410 else if(eta_index < 5){
411 towereta = 9;
412 }
413 else if(eta_index < 7){
414 towereta = 10;
415 }
416 else if(eta_index < 10){
417 towereta = 11;
418 }
419
420 }
421 else if(abs(pos_neg) == 3){
422 if (eta_index == 0){
423 towereta = 12;
425 }
426 else if (eta_index == 1){
427 towereta = 13;
429 }
430 else if (eta_index == 2){
431 towereta = 14;
433 }
434 }
435 break;
436 }
437 case 1: {
439 towereta = 15;
440 break;
441 }
442 default: {
443 ATH_MSG_DEBUG(
"CaloSampling::EME3 -> invalid 'region' value: " << region <<
" (Under investigation) ");
444 break;
445 }
446 break;
447 }
448
449 if (towereta == 7){
450 if(pos_neg < 0){ towerID_Modifier = 300000; }
451 else if(pos_neg > 0){ towerID_Modifier = 400000; }
452 }
453 else if (towereta == 12 || towereta == 13 || towereta == 14 || towereta == 15){
454 if(pos_neg < 0){ towerID_Modifier = 700000; }
455 else if(pos_neg > 0){ towerID_Modifier = 800000; }
456 }
457 else {
458 if(pos_neg < 0){ towerID_Modifier = 500000; }
459 else if(pos_neg > 0){ towerID_Modifier = 600000; }
460 }
461 break;
462 }
463
464 case CaloSampling::HEC0:{
465 nphi = 32;
466 switch(region){
467 case 0: {
468 if(abs(pos_neg) == 2){
470 if (eta_index == 0){
471 towereta = 7;
472 }
473 else if(eta_index < 3){
474 towereta = 8;
475 }
476 else if(eta_index < 5){
477 towereta = 9;
478 }
479 else if(eta_index < 7){
480 towereta = 10;
481 }
482 else if(eta_index < 10){
483 towereta = 11;
484 }
485 }
486 break;
487
488 }
489
490 case 1: {
491 if(abs(pos_neg) == 2){
492 if (eta_index == 0){
493 towereta = 12;
495 }
496 else if(eta_index == 1){
497 towereta = 13;
499 }
500 else if(eta_index == 2){
501 towereta = 14;
503 }
504 else if(eta_index == 3){
505 towereta = 15;
507 }
508 }
509 break;
510
511 }
512
513 default: {
514 ATH_MSG_DEBUG(
"CaloSampling::HEC0 -> invalid 'region' value: " << region <<
" (Under investigation) ");
515 break;
516 }
517
518 }
519
520
521 if (towereta == 7){
522 nphi = 32;
523 if(pos_neg < 0){ towerID_Modifier = 300000; }
524 else if(pos_neg > 0){ towerID_Modifier = 400000; }
525 }
526 else if (towereta == 12 || towereta == 13 || towereta == 14 || towereta == 15){
527 if(pos_neg < 0){ towerID_Modifier = 700000; }
528 else if(pos_neg > 0){ towerID_Modifier = 800000; }
529 }
530 else {
531 nphi = 32;
532 if(pos_neg < 0){ towerID_Modifier = 500000; }
533 else if(pos_neg > 0){ towerID_Modifier = 600000; }
534 }
535
536 break;
537 }
538 case CaloSampling::TileBar0:
539 case CaloSampling::TileBar1:
540 case CaloSampling::TileBar2: {
542 validcell = false;
543 ATH_MSG_DEBUG(
"\n==== gSuperCellTowerMapper ============ Supercell is from Tile Barrel - it will be ignored.");
544 break;
545 }
546 case CaloSampling::TileGap1:
547 case CaloSampling::TileGap2:
548 case CaloSampling::TileGap3: {
549 ATH_MSG_DEBUG(
"\n==== gSuperCellTowerMapper ============ Supercell is from Tile Gap (ITC and scintillator) - it will be ignored.");
550 validcell = false;
551 break;
552 }
553 case CaloSampling::TileExt0:
554 case CaloSampling::TileExt1:
555 case CaloSampling::TileExt2: {
556 ATH_MSG_DEBUG(
"\n==== gSuperCellTowerMapper ============ Supercell is from Tile Extended Barrel - it will be ignored.");
557 validcell = false;
558 break;
559 }
560 case CaloSampling::FCAL0:{
561 nphi = 16;
563 if(eta_index < 5){
564 towereta = 16;
565 }
566 else if(eta_index < 8){
567 towereta = 17;
568 }
569 else if(eta_index < 10){
570 towereta = 18;
571 }
572 else if(eta_index < 12){
573 towereta = 19;
574 }
575
576 if(pos_neg < 0){ towerID_Modifier = 900000; }
577 else if(pos_neg > 0){ towerID_Modifier = 1000000; }
578
579 break;
580 }
581 case CaloSampling::FCAL1:{
582 nphi = 16;
584 if (eta_index < 4){
585 towereta = 16;
586 }
587 else if(eta_index < 6){
588 towereta = 17;
589 }
590 else if(eta_index < 7){
591 towereta = 18;
592 }
593 else if(eta_index < 8){
594 towereta = 19;
595 }
596
597 if(pos_neg < 0){ towerID_Modifier = 900000; }
598 else if(pos_neg > 0){ towerID_Modifier = 1000000; }
599
600 break;
601 }
602 case CaloSampling::FCAL2:{
603 nphi = 16;
605 if (eta_index < 1){
606 towereta = 16;
607 }
608 else if(eta_index < 3){
609 towereta = 17;
610 }
611 else if(eta_index < 4){
612 towereta = 18;
613 }
614
615 if(pos_neg < 0){ towerID_Modifier = 900000; }
616 else if(pos_neg > 0){ towerID_Modifier = 1000000; }
617 break;
618 }
619
620
621 case CaloSampling::MINIFCAL0:
622 case CaloSampling::MINIFCAL1:
623 case CaloSampling::MINIFCAL2:
624 case CaloSampling::MINIFCAL3: {
625 ATH_MSG_DEBUG(
"\n==== gSuperCellTowerMapper ============ Supercells is from MiniFCAL - it will be ignored.");
626 validcell = false;
627 break;
628 }
629 case CaloSampling::Unknown: {
630 ATH_MSG_WARNING(
"\n==== gSuperCellTowerMapper ============ Supercell sampling is officially unknown - it will be ignored. (Needs investigation). Please report this!");
631 validcell = false;
632 break;
633 }
634 default: {
635 ATH_MSG_DEBUG(
"\n==== gSuperCellTowerMapper ============ Supercell has invalid CaloSampling value: " << sample <<
" (Needs investigation). Please report this!");
636 validcell = false;
637 break;
638 }
639 }
640
641 if(validcell){
643 if(doPrint){
644 PrintCellSpec(sample, region, eta_index, phi_index, pos_neg, towereta, towerphi, nphi, towerID_Modifier, iGTower, prov, ID);
645 }
647 }
648
649
650
651 return 1;
652
653}
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
virtual void PrintCellSpec(const CaloSampling::CaloSample sample, const int region, const int eta_index, const int phi_index, const int pos_neg, int towereta, int towerphi, int nphi, int towerID_Modifier, int iGTower, int prov, Identifier ID) const override
virtual void ConnectSuperCellToTower(std::unique_ptr< gTowerContainer > &my_gTowerContainerRaw, int iGTower, Identifier ID, float et) const override