ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)

#include <Riostream.h>
#include <TFile.h>
#include <TTree.h>
#include <TGeoManager.h>

#include "AliRunLoader.h"
#include "AliRun.h"
#include "AliESDEvent.h"

#include "AliITSLoader.h"
#include "AliITSMultReconstructor.h"
#include "AliGeomManager.h"                                                                                 

#endif

  void testITSMultReco(Char_t* dir = ".") {

  Char_t fileName[256];

  // defining pointers
  AliRunLoader* runLoader;
  TTree* esdTree = 0;
  AliESDEvent* esd = new AliESDEvent();

  // get runloader

  if (gAlice) {
    delete AliRunLoader::Instance();
    delete gAlice;
    gAlice=0;
  }

  sprintf(fileName,"%s/galice.root",dir);
  runLoader = AliRunLoader::Open(fileName);
/*  if (runLoader == 0x0) {
    cout << "Can not open session"<<endl;
    return;
  }*/
  
  // get geometry (here geometry.root is used, change it if needed)
  if (!gGeoManager) {
    sprintf(fileName,"%s/geometry.root",dir);
    AliGeomManager::LoadGeometry(fileName);
  }

  // open the ESD file and get the tree

  sprintf(fileName,"%s/AliESDs.root",dir);
  TFile esdFile(fileName, "READ");
  esdTree = (TTree*)esdFile.Get("esdTree");
  esd->ReadFromTree(esdTree);

  // setup ITS stuff

  AliITSLoader* itsLoader = (AliITSLoader*)runLoader->GetLoader("ITSLoader");
  if (!itsLoader) {
    cout << " Can't get the ITS loader!" << endl;
    return ;
  }
  itsLoader->LoadRecPoints("read");

  AliITSMultReconstructor* multReco = new AliITSMultReconstructor();
//  multReco->SetGeometry(itsGeo);

  // getting number of events

  Int_t nEvents = (Int_t)runLoader->GetNumberOfEvents();
  Int_t nESDEvents = esdTree->GetEntries();

  if (nEvents!=nESDEvents) {
    cout << " Different number of events from runloader and esdtree!!!" 
	 << nEvents << " / " << nESDEvents << endl;
    return;
  }

  // loop over number of events
  cout << nEvents << " event(s) found in the file set" << endl;
  for (Int_t iEv=0; iEv<nEvents; ++iEv) {
    
    cout << "-------------------------" << endl << " event# " << iEv << endl;
    
    runLoader->GetEvent(iEv);
    esdTree->GetEvent(iEv);

    // get the ESD vertex

    const AliESDVertex* vtxESD = esd->GetVertex();
    Double_t vtx[3];
    vtxESD->GetXYZ(vtx);   
    Float_t esdVtx[3];
    esdVtx[0] = vtx[0];
    esdVtx[1] = vtx[1];
    esdVtx[2] = vtx[2];
//    cout<<"vertex Z->"<<esdVtx[2]<<endl;    

    // get ITS clusters 

    TTree* itsClusterTree = itsLoader->TreeR();
    if (!itsClusterTree) {
      cerr<< " Can't get the ITS cluster tree !\n";
      return;
    }

    multReco->SetHistOn(kTRUE);
    multReco->Reconstruct(itsClusterTree, esdVtx, esdVtx);

    cout <<"Number of tracklets: "<<multReco->GetNTracklets()<<endl;     
    for (Int_t itr=0; itr<multReco->GetNTracklets(); itr++) {
      
      cout << "  tracklet "    << itr 
	   << " , theta = "    << multReco->GetTracklet(itr)[0]
	   << " , phi = "      << multReco->GetTracklet(itr)[1] 
           << " , DeltaPhi = " << multReco->GetTracklet(itr)[2]<< endl; 

    }
    cout<<""<<endl;
    cout <<"Number of single clusters (inner layer): "<<multReco->GetNSingleClusters()<<endl;     
    for (Int_t iscl=0; iscl<multReco->GetNSingleClusters(); iscl++) {
      
      cout << "  cluster "  << iscl
	   << " , theta = " << multReco->GetCluster(iscl)[0]
	   << " , phi = "   << multReco->GetCluster(iscl)[1] << endl; 
    }

  }
 
  TFile* fout = new TFile("out.root","RECREATE");  

  multReco->SaveHists();
  fout->Write();
  fout->Close();


}
 testITSMultReco.C:1
 testITSMultReco.C:2
 testITSMultReco.C:3
 testITSMultReco.C:4
 testITSMultReco.C:5
 testITSMultReco.C:6
 testITSMultReco.C:7
 testITSMultReco.C:8
 testITSMultReco.C:9
 testITSMultReco.C:10
 testITSMultReco.C:11
 testITSMultReco.C:12
 testITSMultReco.C:13
 testITSMultReco.C:14
 testITSMultReco.C:15
 testITSMultReco.C:16
 testITSMultReco.C:17
 testITSMultReco.C:18
 testITSMultReco.C:19
 testITSMultReco.C:20
 testITSMultReco.C:21
 testITSMultReco.C:22
 testITSMultReco.C:23
 testITSMultReco.C:24
 testITSMultReco.C:25
 testITSMultReco.C:26
 testITSMultReco.C:27
 testITSMultReco.C:28
 testITSMultReco.C:29
 testITSMultReco.C:30
 testITSMultReco.C:31
 testITSMultReco.C:32
 testITSMultReco.C:33
 testITSMultReco.C:34
 testITSMultReco.C:35
 testITSMultReco.C:36
 testITSMultReco.C:37
 testITSMultReco.C:38
 testITSMultReco.C:39
 testITSMultReco.C:40
 testITSMultReco.C:41
 testITSMultReco.C:42
 testITSMultReco.C:43
 testITSMultReco.C:44
 testITSMultReco.C:45
 testITSMultReco.C:46
 testITSMultReco.C:47
 testITSMultReco.C:48
 testITSMultReco.C:49
 testITSMultReco.C:50
 testITSMultReco.C:51
 testITSMultReco.C:52
 testITSMultReco.C:53
 testITSMultReco.C:54
 testITSMultReco.C:55
 testITSMultReco.C:56
 testITSMultReco.C:57
 testITSMultReco.C:58
 testITSMultReco.C:59
 testITSMultReco.C:60
 testITSMultReco.C:61
 testITSMultReco.C:62
 testITSMultReco.C:63
 testITSMultReco.C:64
 testITSMultReco.C:65
 testITSMultReco.C:66
 testITSMultReco.C:67
 testITSMultReco.C:68
 testITSMultReco.C:69
 testITSMultReco.C:70
 testITSMultReco.C:71
 testITSMultReco.C:72
 testITSMultReco.C:73
 testITSMultReco.C:74
 testITSMultReco.C:75
 testITSMultReco.C:76
 testITSMultReco.C:77
 testITSMultReco.C:78
 testITSMultReco.C:79
 testITSMultReco.C:80
 testITSMultReco.C:81
 testITSMultReco.C:82
 testITSMultReco.C:83
 testITSMultReco.C:84
 testITSMultReco.C:85
 testITSMultReco.C:86
 testITSMultReco.C:87
 testITSMultReco.C:88
 testITSMultReco.C:89
 testITSMultReco.C:90
 testITSMultReco.C:91
 testITSMultReco.C:92
 testITSMultReco.C:93
 testITSMultReco.C:94
 testITSMultReco.C:95
 testITSMultReco.C:96
 testITSMultReco.C:97
 testITSMultReco.C:98
 testITSMultReco.C:99
 testITSMultReco.C:100
 testITSMultReco.C:101
 testITSMultReco.C:102
 testITSMultReco.C:103
 testITSMultReco.C:104
 testITSMultReco.C:105
 testITSMultReco.C:106
 testITSMultReco.C:107
 testITSMultReco.C:108
 testITSMultReco.C:109
 testITSMultReco.C:110
 testITSMultReco.C:111
 testITSMultReco.C:112
 testITSMultReco.C:113
 testITSMultReco.C:114
 testITSMultReco.C:115
 testITSMultReco.C:116
 testITSMultReco.C:117
 testITSMultReco.C:118
 testITSMultReco.C:119
 testITSMultReco.C:120
 testITSMultReco.C:121
 testITSMultReco.C:122
 testITSMultReco.C:123
 testITSMultReco.C:124
 testITSMultReco.C:125
 testITSMultReco.C:126
 testITSMultReco.C:127
 testITSMultReco.C:128
 testITSMultReco.C:129
 testITSMultReco.C:130
 testITSMultReco.C:131
 testITSMultReco.C:132
 testITSMultReco.C:133
 testITSMultReco.C:134
 testITSMultReco.C:135
 testITSMultReco.C:136
 testITSMultReco.C:137