ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TFile.h>
#include <TGeoManager.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TTree.h>
#include <Riostream.h>
#include <AliRun.h>
#include <AliHeader.h>
#include <AliGenEventHeader.h>
#include <AliGeomManager.h>
#include <AliITSVertexerZ.h>
#include <AliRunLoader.h>
#include <AliITSLoader.h>

#endif

void AliITSVertexerZTest(Float_t delphi=0.05,Float_t window=3.,Float_t initx=0., Float_t inity=0.,TString FileIn="galice.root"){
  // delphi ---> azimuthal range to accept tracklets
  // window ---> window in Z around the peak of tracklets proj. in mm
  Int_t kDebug = 50;
  TH2F *diff2 = new TH2F("diff2","Zfound vs Ztrue",100,-6,6,100,-6,6); 
  TH1F *diff1 = new TH1F("diff1","Zfound - Ztrue(#mu m)",100,-500,500);
  delete gAlice;
  gAlice = 0;
  AliRunLoader *rl = AliRunLoader::Open(FileIn.Data());
  Int_t retval = rl->LoadgAlice();
  if(retval){
    cerr<<"AliITSVertexerZTest.C: AliRun object not found"<<endl;
    return;
  }
  retval = rl->LoadHeader();
  if (retval){
    cerr<<"AliITSVertexerZTest.C : LoadHeader returned error"<<endl;
    return;
  }
  retval = rl->LoadKinematics();
  if (retval){
    cerr<<"AliITSVertexerZTest.C : LoadKinematics returned error"<<endl;
    return;
  }
  
  AliGeomManager::LoadGeometry("geometry.root");

  AliITSVertexerZ *dovert = new AliITSVertexerZ(initx,inity);
  dovert->Init("default");
  //dovert->SetDebug(0);
  //  dovert->SetDiffPhiMax(delphi);
  //  dovert->SetWindow(window);
  dovert->PrintStatus();
  Int_t sigmazero=0;
  AliESDVertex *vert = 0;
  AliITSLoader* itsloader =  (AliITSLoader*) rl->GetLoader("ITSLoader");
  itsloader->LoadRecPoints("read");
  for(Int_t i=0; i<rl->TreeE()->GetEntries(); i++){
    rl->GetEvent(i);
    // The true Z coord. is fetched for comparison
    AliHeader *header = rl->GetHeader();
    AliGenEventHeader* genEventHeader = header->GenEventHeader();
    TArrayF primaryVertex(3);
    genEventHeader->PrimaryVertex(primaryVertex);
    TTree* cltree = itsloader->TreeR();
    vert = dovert->FindVertexForCurrentEvent(cltree);
    if(kDebug>0){
      // Prints the results
      cout <<"========================================================\n";
      cout << "Event number: "<<i<<")  Z Vertex:"<<endl;
      if(vert){
	cout<<"FOUND: "<<vert->GetZ()<<"; ";
	cout<<vert->GetZRes()<<"; "<<vert->GetNContributors()<<endl;
	cout <<" True Z position "<<primaryVertex[2]<<", diff= ";
	cout<<(primaryVertex[2]-vert->GetZ())*10000.<<endl;
      } else {
	cout<<"NOT FOUND"<<endl;
      }
    }
    if(vert){
      Float_t found = vert->GetZ();
      diff2->Fill(primaryVertex[2],found);
      found = 10000.*(found-primaryVertex[2]);
      if(vert->GetZRes()!=0){
	diff1->Fill(found);
      } else {
	sigmazero++;
      }
      dovert->WriteCurrentVertex();
    }
  }
  if(kDebug>0){
    cout<<"Only one tracklet (sigma = 0) "<<sigmazero<<endl;
  }
  
}
 AliITSVertexerZTest.C:1
 AliITSVertexerZTest.C:2
 AliITSVertexerZTest.C:3
 AliITSVertexerZTest.C:4
 AliITSVertexerZTest.C:5
 AliITSVertexerZTest.C:6
 AliITSVertexerZTest.C:7
 AliITSVertexerZTest.C:8
 AliITSVertexerZTest.C:9
 AliITSVertexerZTest.C:10
 AliITSVertexerZTest.C:11
 AliITSVertexerZTest.C:12
 AliITSVertexerZTest.C:13
 AliITSVertexerZTest.C:14
 AliITSVertexerZTest.C:15
 AliITSVertexerZTest.C:16
 AliITSVertexerZTest.C:17
 AliITSVertexerZTest.C:18
 AliITSVertexerZTest.C:19
 AliITSVertexerZTest.C:20
 AliITSVertexerZTest.C:21
 AliITSVertexerZTest.C:22
 AliITSVertexerZTest.C:23
 AliITSVertexerZTest.C:24
 AliITSVertexerZTest.C:25
 AliITSVertexerZTest.C:26
 AliITSVertexerZTest.C:27
 AliITSVertexerZTest.C:28
 AliITSVertexerZTest.C:29
 AliITSVertexerZTest.C:30
 AliITSVertexerZTest.C:31
 AliITSVertexerZTest.C:32
 AliITSVertexerZTest.C:33
 AliITSVertexerZTest.C:34
 AliITSVertexerZTest.C:35
 AliITSVertexerZTest.C:36
 AliITSVertexerZTest.C:37
 AliITSVertexerZTest.C:38
 AliITSVertexerZTest.C:39
 AliITSVertexerZTest.C:40
 AliITSVertexerZTest.C:41
 AliITSVertexerZTest.C:42
 AliITSVertexerZTest.C:43
 AliITSVertexerZTest.C:44
 AliITSVertexerZTest.C:45
 AliITSVertexerZTest.C:46
 AliITSVertexerZTest.C:47
 AliITSVertexerZTest.C:48
 AliITSVertexerZTest.C:49
 AliITSVertexerZTest.C:50
 AliITSVertexerZTest.C:51
 AliITSVertexerZTest.C:52
 AliITSVertexerZTest.C:53
 AliITSVertexerZTest.C:54
 AliITSVertexerZTest.C:55
 AliITSVertexerZTest.C:56
 AliITSVertexerZTest.C:57
 AliITSVertexerZTest.C:58
 AliITSVertexerZTest.C:59
 AliITSVertexerZTest.C:60
 AliITSVertexerZTest.C:61
 AliITSVertexerZTest.C:62
 AliITSVertexerZTest.C:63
 AliITSVertexerZTest.C:64
 AliITSVertexerZTest.C:65
 AliITSVertexerZTest.C:66
 AliITSVertexerZTest.C:67
 AliITSVertexerZTest.C:68
 AliITSVertexerZTest.C:69
 AliITSVertexerZTest.C:70
 AliITSVertexerZTest.C:71
 AliITSVertexerZTest.C:72
 AliITSVertexerZTest.C:73
 AliITSVertexerZTest.C:74
 AliITSVertexerZTest.C:75
 AliITSVertexerZTest.C:76
 AliITSVertexerZTest.C:77
 AliITSVertexerZTest.C:78
 AliITSVertexerZTest.C:79
 AliITSVertexerZTest.C:80
 AliITSVertexerZTest.C:81
 AliITSVertexerZTest.C:82
 AliITSVertexerZTest.C:83
 AliITSVertexerZTest.C:84
 AliITSVertexerZTest.C:85
 AliITSVertexerZTest.C:86
 AliITSVertexerZTest.C:87
 AliITSVertexerZTest.C:88
 AliITSVertexerZTest.C:89
 AliITSVertexerZTest.C:90
 AliITSVertexerZTest.C:91
 AliITSVertexerZTest.C:92
 AliITSVertexerZTest.C:93
 AliITSVertexerZTest.C:94