ROOT logo
#include <iomanip>

void
FullMapping()
{
  AliGeomManager::LoadGeometry("geometry.root");
  AliCDBManager*    cdb   = AliCDBManager::Instance();
  AliFMDParameters* param = AliFMDParameters::Instance();
  AliFMDGeometry*   geom  = AliFMDGeometry::Instance();
  cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  cdb->SetRun(0);
  param->Init();
  geom->Init();
  geom->InitTransformations();
  AliFMDAltroMapping* map = param->GetAltroMap();

  std::ostream& out = cerr;
  
  out << "  DDL | Board | Altro | Channel |"
      << " Detector | Ring | Sector | Base-Strip |  Phi |"
      << "    X    |    Y    |    Z    " << std::endl;
  for (UShort_t ddl = 0; ddl < 3; ddl++) { 
    out << "------+-------+-------+---------+"
	<< "----------+------+--------+------------+------+"
	<< "---------+---------+---------" << std::endl;
    for (UShort_t ib = 0; ib < 4; ib++) { 
      if (ddl == 0 && (ib == 1 || ib == 3)) continue;
      UShort_t board = ib + (ib < 0x2 ? 0 : 0x10-2);
      for (UShort_t altro = 0; altro < 3; altro++) { 
	UShort_t nCh = (altro == 1 ? 8 : 16);
	for (UShort_t chan = 0; chan < nCh; chan++) { 
	  UShort_t det, sec;
	  Short_t baseStr;
	  Char_t  ring;
	  det = map->DDL2Detector(ddl);
	  if (!map->Channel2StripBase(board, altro, chan, ring, sec, baseStr))
	    continue;
	  
	  Double_t x, y, z;
	  geom->Detector2XYZ(det, ring, sec, baseStr, x, y, z);

	  Double_t phi = TMath::ATan2(y,x) * 180 / TMath::Pi();
	  if (phi < 0) phi += 360;
	  
	  out << " " << std::setprecision(4)
	      << std::setw(4)  << (3072) + ddl << " | " 
	      << std::setw(5)  << board   << " | " 
	      << std::setw(5)  << altro   << " | " 
	      << std::setw(7)  << chan    << " | " 
	      << std::setw(8)  << det     << " | " 
	      << std::setw(4)  << ring    << " | " 
	      << std::setw(6)  << sec     << " | " 
	      << std::setw(10) << baseStr << " | " 
	      << std::setw(4)  << phi     << " | " 
	      << std::setw(7)  << x       << " | " 
	      << std::setw(7)  << y       << " | " 
	      << std::setw(7)  << z       << std::endl;
	} // Chan
      } // Altro
    } // Board 
  } // DDL
}

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