ROOT logo
// some global var/constants
const Int_t kNRCU = 2; // per SM
AliCaloAltroMapping *fMapping[4]; // 1 for each side (A/C) and each RCU (0/1), i.e. 2*2 total
//
const Bool_t kDebug = kFALSE;
const char *branchStr[] = {"A", "B"};

// help methods
Int_t GetHWAddress(Int_t branch, Int_t FEC, Int_t chip, Int_t chan);
void GetMapping();

// main method
void 
FEEToTower(Int_t iSM=0, Int_t iRCU=0, Int_t branch=0, Int_t FEC=1, Int_t chip=0, Int_t chan=0)
{
  // Get mapping file info, and clear arrays
  GetMapping();

  Int_t isect = iSM / 2; //
  Int_t iside = iSM % 2; // A or C side

  Int_t iRCUSide = iside*2 + iRCU;
  Int_t iDDL = iRCU + iSM * kNRCU;

  Int_t hwAddress = GetHWAddress(branch, FEC, chip, chan);

  Int_t icol = fMapping[iRCUSide]->GetPad(hwAddress);
  Int_t irow = fMapping[iRCUSide]->GetPadRow(hwAddress); 
  Int_t caloflag = fMapping[iRCUSide]->GetSector(hwAddress);
  
  // report channel info
  printf(" iSM %d iRCU %d (iDDL %d EqId %d) : branch %d (%s) FEC %d chip %d chan %d \n corresponds to \n iSM %d icol %d irow %d caloflag (igain) %d \n", 
	 iSM, iRCU, iDDL, iDDL + 0x1200, 
	 branch, branchStr[branch], FEC, chip, chan,
	 iSM, icol, irow, caloflag);

  return;
}

Int_t
GetHWAddress(Int_t branch, Int_t FEC, Int_t chip, Int_t chan)
{
  Int_t hwAddr = (branch << 11) | (FEC << 7) | (chip << 4) | chan; 
  return hwAddr;
}

void 
GetMapping()
{  
  TString sides[]={"A","C"};
  // Read mapping files from $ALICE_ROOT/CALO/mapping/*.data
  TString path = gSystem->Getenv("ALICE_ROOT");
  path += "/EMCAL/mapping/RCU";
  TString path2;
  for(Int_t j = 0; j < 2; j++){ // sides
    for(Int_t i = 0; i < 2; i++) { // RCU
      path2 = path;
      path2 += i;
      path2 += sides[j];
      path2 += ".data";
      if (kDebug) { printf("Mapping file: %s\n",path2.Data()); }
      fMapping[j*2 + i] = new AliCaloAltroMapping(path2.Data());
    }
  }
  return;
}

 FEEToTower.C:1
 FEEToTower.C:2
 FEEToTower.C:3
 FEEToTower.C:4
 FEEToTower.C:5
 FEEToTower.C:6
 FEEToTower.C:7
 FEEToTower.C:8
 FEEToTower.C:9
 FEEToTower.C:10
 FEEToTower.C:11
 FEEToTower.C:12
 FEEToTower.C:13
 FEEToTower.C:14
 FEEToTower.C:15
 FEEToTower.C:16
 FEEToTower.C:17
 FEEToTower.C:18
 FEEToTower.C:19
 FEEToTower.C:20
 FEEToTower.C:21
 FEEToTower.C:22
 FEEToTower.C:23
 FEEToTower.C:24
 FEEToTower.C:25
 FEEToTower.C:26
 FEEToTower.C:27
 FEEToTower.C:28
 FEEToTower.C:29
 FEEToTower.C:30
 FEEToTower.C:31
 FEEToTower.C:32
 FEEToTower.C:33
 FEEToTower.C:34
 FEEToTower.C:35
 FEEToTower.C:36
 FEEToTower.C:37
 FEEToTower.C:38
 FEEToTower.C:39
 FEEToTower.C:40
 FEEToTower.C:41
 FEEToTower.C:42
 FEEToTower.C:43
 FEEToTower.C:44
 FEEToTower.C:45
 FEEToTower.C:46
 FEEToTower.C:47
 FEEToTower.C:48
 FEEToTower.C:49
 FEEToTower.C:50
 FEEToTower.C:51
 FEEToTower.C:52
 FEEToTower.C:53
 FEEToTower.C:54
 FEEToTower.C:55
 FEEToTower.C:56
 FEEToTower.C:57
 FEEToTower.C:58
 FEEToTower.C:59
 FEEToTower.C:60
 FEEToTower.C:61
 FEEToTower.C:62
 FEEToTower.C:63
 FEEToTower.C:64
 FEEToTower.C:65
 FEEToTower.C:66
 FEEToTower.C:67
 FEEToTower.C:68