ROOT logo
// Test Macro, shows how to load Digits and Geometry, and how can we get 
// some of the parameters and variables.
// Author: Gustavo Conesa

void TestEMCALDigit()
{
  
  // Getting EMCAL Detector and Geometry.
  
  AliRunLoader *rl = AliRunLoader::Open("galice.root",AliConfig::GetDefaultEventFolderName(),"read");
  
  if (rl == 0x0)
    cout<<"Can not instatiate the Run Loader"<<endl;
  
  rl->LoadgAlice();//Needed to get geometry
  
  AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>
    (rl->GetDetectorLoader("EMCAL"));
  
  TGeoManager::Import("geometry.root");
  
  AliRun * alirun   = rl->GetAliRun(); // Needed to get Geometry
  AliEMCALGeometry * geom ;
  if(alirun){
    AliEMCAL * emcal  = (AliEMCAL*)alirun->GetDetector("EMCAL");
    geom = emcal->GetGeometry();
  }
  
  if (geom == 0) cout<<"Did not get geometry from EMCALLoader"<<endl;
  else   geom->PrintGeometry();
  
  //Load Digits
  rl->LoadDigits("EMCAL");
  
  //Get maximum number of events
  Int_t maxevent =  rl->GetNumberOfEvents();
  cout<<"Number of events "<<maxevent<<endl;
  //maxevent = 10 ;
  
  Int_t iEvent  = -1 ;
  Float_t amp   = -1 ;
  Float_t time  = -1 ;
  Int_t id      = -1 ;
  Int_t iSupMod =  0 ;
  Int_t iTower  =  0 ;
  Int_t iIphi   =  0 ;
  Int_t iIeta   =  0 ;
  Int_t iphi    =  0 ;
  Int_t ieta    =  0 ;
  
  AliEMCALDigit * dig;
  
  for ( iEvent=0; iEvent<maxevent; iEvent++)
    {
      cout <<  " ======> Event " << iEvent << endl ;
      //Load Event
      rl->GetEvent(iEvent);
      
      //Fill array of digits
      TClonesArray *digits = emcalLoader->Digits();	
      
      //Get digits from the list      
      for(Int_t idig = 0; idig< digits->GetEntries();idig++){
	//cout<<">> idig "<<idig<<endl;
	dig = static_cast<AliEMCALDigit *>(digits->At(idig)) ;
	
	if(dig != 0){
	  id   = dig->GetId() ; //cell (digit) label
	  amp  = dig->GetAmplitude(); //amplitude in cell (digit)
	  time = dig->GetTime();//time of creation of digit after collision
	  
	  cout<<"Cell ID "<<id<<" Amp "<<amp<<endl;//" time "<<time<<endl;
	  
	  //Geometry methods  
	  if(geom){
	    geom->GetCellIndex(id,iSupMod,iTower,iIphi,iIeta); 
	    //Gives SuperModule and Tower numbers
	    geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,
					      iIphi, iIeta,iphi,ieta);
	    //Gives label of cell in eta-phi position per each supermodule
	    cout<< "SModule "<<iSupMod<<"; Tower "<<iTower <<"; Eta "<<iIeta
		<<"; Phi "<<iIphi<<"; Cell Eta "<<ieta<<"; Cell Phi "<<iphi<<endl;
	  }
	}
	else
	  cout<<"Digit pointer 0x0"<<endl;
      }
      
    }


}

 TestEMCALDigit.C:1
 TestEMCALDigit.C:2
 TestEMCALDigit.C:3
 TestEMCALDigit.C:4
 TestEMCALDigit.C:5
 TestEMCALDigit.C:6
 TestEMCALDigit.C:7
 TestEMCALDigit.C:8
 TestEMCALDigit.C:9
 TestEMCALDigit.C:10
 TestEMCALDigit.C:11
 TestEMCALDigit.C:12
 TestEMCALDigit.C:13
 TestEMCALDigit.C:14
 TestEMCALDigit.C:15
 TestEMCALDigit.C:16
 TestEMCALDigit.C:17
 TestEMCALDigit.C:18
 TestEMCALDigit.C:19
 TestEMCALDigit.C:20
 TestEMCALDigit.C:21
 TestEMCALDigit.C:22
 TestEMCALDigit.C:23
 TestEMCALDigit.C:24
 TestEMCALDigit.C:25
 TestEMCALDigit.C:26
 TestEMCALDigit.C:27
 TestEMCALDigit.C:28
 TestEMCALDigit.C:29
 TestEMCALDigit.C:30
 TestEMCALDigit.C:31
 TestEMCALDigit.C:32
 TestEMCALDigit.C:33
 TestEMCALDigit.C:34
 TestEMCALDigit.C:35
 TestEMCALDigit.C:36
 TestEMCALDigit.C:37
 TestEMCALDigit.C:38
 TestEMCALDigit.C:39
 TestEMCALDigit.C:40
 TestEMCALDigit.C:41
 TestEMCALDigit.C:42
 TestEMCALDigit.C:43
 TestEMCALDigit.C:44
 TestEMCALDigit.C:45
 TestEMCALDigit.C:46
 TestEMCALDigit.C:47
 TestEMCALDigit.C:48
 TestEMCALDigit.C:49
 TestEMCALDigit.C:50
 TestEMCALDigit.C:51
 TestEMCALDigit.C:52
 TestEMCALDigit.C:53
 TestEMCALDigit.C:54
 TestEMCALDigit.C:55
 TestEMCALDigit.C:56
 TestEMCALDigit.C:57
 TestEMCALDigit.C:58
 TestEMCALDigit.C:59
 TestEMCALDigit.C:60
 TestEMCALDigit.C:61
 TestEMCALDigit.C:62
 TestEMCALDigit.C:63
 TestEMCALDigit.C:64
 TestEMCALDigit.C:65
 TestEMCALDigit.C:66
 TestEMCALDigit.C:67
 TestEMCALDigit.C:68
 TestEMCALDigit.C:69
 TestEMCALDigit.C:70
 TestEMCALDigit.C:71
 TestEMCALDigit.C:72
 TestEMCALDigit.C:73
 TestEMCALDigit.C:74
 TestEMCALDigit.C:75
 TestEMCALDigit.C:76
 TestEMCALDigit.C:77
 TestEMCALDigit.C:78
 TestEMCALDigit.C:79
 TestEMCALDigit.C:80
 TestEMCALDigit.C:81
 TestEMCALDigit.C:82
 TestEMCALDigit.C:83
 TestEMCALDigit.C:84
 TestEMCALDigit.C:85
 TestEMCALDigit.C:86
 TestEMCALDigit.C:87
 TestEMCALDigit.C:88
 TestEMCALDigit.C:89
 TestEMCALDigit.C:90
 TestEMCALDigit.C:91
 TestEMCALDigit.C:92
 TestEMCALDigit.C:93
 TestEMCALDigit.C:94