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

void TestEMCALRecPoint()
{
  
  // 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");
  AliGeomManager::LoadGeometry("geometry.root");  
  AliRun * alirun   = rl->GetAliRun(); // Needed to get Geometry
  AliEMCALGeometry * geom ;
  if(alirun){
    AliEMCAL * emcal  = (AliEMCAL*)alirun->GetDetector("EMCAL");
    geom = emcal->GetGeometry();
  }
  else {
    cout<<"alirun not available, instantiate"<<endl;
    geom =  AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1") ;  
  } 
  
  //Load RecPoints
  rl->LoadRecPoints("EMCAL");
  //Get maximum number of events
  Int_t maxevent =  rl->GetNumberOfEvents();
  cout<<"Number of events "<<maxevent<<endl;
  
  Int_t iEvent     = -1 ;
  Int_t iprim      = -1 ;
  Float_t energy   = -1 ;
  TVector3 gpos ;
  
  AliEMCALRecPoint * rp;
  for ( iEvent=0; iEvent<maxevent; iEvent++)
  {
    cout <<  " ======> Event " << iEvent << endl ;
    //Load Event
    rl->GetEvent(iEvent);
    //      AliStack *sta=rl->Stack();
    //Fill array of digits
    TObjArray *rpoints ;//= emcalLoader->RecPoints();
    
    TTree *treeR = emcalLoader->TreeR();
    TBranch * branchR = treeR->GetBranch("EMCALECARP");	
    branchR->SetAddress(&rpoints);
    branchR->GetEntry(0);
    
    if(!rpoints->GetEntries()) continue;
    cout <<  " ======> Event " << iEvent << endl ;
    
    cout<<">> Entries "<<rpoints->GetEntries()<<endl;
    
    //Get recpoints  from the list      
    for(Int_t irp = 0; irp< rpoints->GetEntries();irp++){
      rp = static_cast<AliEMCALRecPoint *>(rpoints->At(irp)) ;
      //rp = emcalLoader->RecPoint(irp);
      if(rp != 0){
        {
          energy  = rp->GetEnergy(); //cluster energy
          cout<<"Energy "<<energy<<" PointEnergy "<<rp->GetPointEnergy()<<endl;
          rp->GetGlobalPosition(gpos);//global ALICE xyz position
          Int_t  primMult  = 0;
          //Int_t *primInts =  rp->GetPrimaries(primMult);
          //for (Int_t ipr=0; ipr<primMult; ipr++) 
          //	cout<<"primlist "<<ipr<<" index "<< primInts[ipr]<<endl;
          //iprim=rp->GetPrimaryIndex() ;
          //    cout<<"Selected primary index "<<iprim<<endl;
          //  if(iprim>0){
          //TParticle *primary=sta->Particle(iprim);
          //cout<<"Primary phi "<<primary->Phi()*180/TMath::Pi()<<" Reconstructed phi "<<gpos.Phi()*180/TMath::Pi()<<"; Energy "<<primary->Energy()<<endl;
          //h->Fill((gpos.Phi()-primary->Phi())*180/TMath::Pi());
          cout<<"rec point "<<irp<<"; Energy "<<energy<<" Phi "<<gpos.Phi()*180/TMath::Pi()<<" Eta "<<gpos.Eta()<<" iprim "<<iprim<<endl; 
          //}
          Float_t lmb[2];
          rp->GetElipsAxis(lmb);
          cout<<"lmb0 "<<lmb[0]<<" lmb1 "<<lmb[1]<<endl;
        }
      }
      else
        cout<<"recpoint pointer 0x0"<<endl;
    } 
  }
}

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