ROOT logo
// ----------------------------------------------------//
//                                                     //
//       This macro reads the PMD clusters,            //
//       does photon/hadron discrimination             //
//       and stores in the ESD                         //
//                                                     //
// ----------------------------------------------------//

extern AliRun *gAlice;

Int_t AliPMDesdmake(Int_t nevt = 1)
{
  if (gAlice)
    { 
      delete AliRunLoader::Instance();
      delete gAlice;//if everything was OK here it is already NULL
      gAlice = 0x0;
    }

  AliRunLoader *fRunLoader = AliRunLoader::Open("galice.root");
  if (!fRunLoader)
    {
      cerr<<"Can't load RunLoader"<<endl;
      return 1;
    }
  fRunLoader->LoadgAlice();
  gAlice = fRunLoader->GetAliRun();

  AliLoader *pmdloader = fRunLoader->GetLoader("PMDLoader");
  Int_t nEvent = 0;
  if (nevt <= 0)
    {
      nEvent = fRunLoader->GetNumberOfEvents();
    }
  else if (nevt > 0)
    {
      nEvent = nevt;
    }
  cout << " ************ nevent = " << nEvent << endl;
  
  if (pmdloader == 0x0)
    {
      cerr<<" ===> Can not find PMD or PMDLoader <===\n";
      delete fRunLoader;
      return 2;
    }
  pmdloader->LoadRecPoints("READ");

  TFile *bf=TFile::Open("AliESDcheck.root","RECREATE");
  if (!bf || !bf->IsOpen()) {
    cerr<<"Can't open AliESDcheck.root !\n"; return 1;
  }

  Char_t ename[100]; 

  for (Int_t ievt = 0; ievt < nEvent; ievt++)
    {

      AliESD *event=new AliESD(); 
      Int_t run = 0;
      event->SetRunNumber(run);
      event->SetEventNumber(ievt);

      fRunLoader->GetEvent(ievt);
      TTree *treeR = pmdloader->TreeR();
      if (treeR == 0x0)
	{
	  cout << " Can not get TreeR" << endl;
	  return 3;
	}
      AliPMDtracker *pmdtracker = new AliPMDtracker();
      pmdtracker->LoadClusters(treeR);
      pmdtracker->Clusters2Tracks(event);

      bf->cd();
      sprintf(ename,"in%d",ievt);
      event->Write(ename); bf->Flush();
      
      delete pmdtracker;  
      delete event;
    }
  bf->Close();
  return 0;
}

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