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