ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
//-- --- standard headers------------- 
#include <Riostream.h>
//--------Root headers ---------------
#include <TSystem.h>
#include <TFile.h>
#include <TStopwatch.h>
#include <TObject.h>
#include <TTree.h>
//----- AliRoot headers ---------------
#include "alles.h"
#include "AliRun.h"
#include "AliMagF.h"
#include "AliKalmanTrack.h"
#include "AliITSVertex.h"
#include "AliITSVertexer.h"
#include "AliITSVertexerTracks.h"
#include <AliHeader.h>
#include <AliGenEventHeader.h>
//-------------------------------------
#endif
void AliITSVertexerTracksTest2(Int_t evFirst=0,Int_t evLast=0,
			      const Char_t *galiceName="galice.root",
			      const Char_t *trksName="AliITStracksV2.root",
			      const Char_t *vtxName="AliITSVertices.root") {
  /*******************************************************************
   *                                                                 *
   * Test macro for vertexing in pp using tracks.                    *
   * Input file must contain trees with AliITStrackV2 objects.       *
   * Output file can be the same file with the tracks                *
   * or another file.                                                *
   * If the file galice.root is available, B is taken from there,    *
   * otherwise is can be set here "by hand".                         *
   *                                                                 *
   * Origin: A.Dainese, Padova  andrea.dainese@pd.infn.it            *
   *******************************************************************/     

  // Look for field value in galice.root
  Double_t field = 0.4;
  Int_t kDebug = 0;
  TFile *galice = 0;
  if(!gSystem->AccessPathName(galiceName,kFileExists)) {
    galice = new TFile(galiceName);
    gAlice = (AliRun*)galice->Get("gAlice");
    AliMagF *fiel = TGeoGlobalMagField::Instance()->GetField();
    field=(Double_t)fiel->SolenoidField()/10.;
    AliKalmanTrack::SetConvConst(100/0.299792458/field);
    printf(" B = %3.1f read from gAlice and set\n",field);
  } else {
    printf(" File galice.root not found: default 0.4 T being used!\n");
  }

  // Open input and output files
  TFile *inFile = TFile::Open(trksName);
  TFile *outFile = TFile::Open(vtxName,"recreate");

  // Create vertexer
  AliITSVertexerTracks *vertexer = 
    new AliITSVertexerTracks(inFile,outFile,field,0.,0.);
  vertexer->SetDebug(0);
  vertexer->SetUseThrustFrame(0);
  vertexer->PrintStatus();

  AliITSVertex *vert = 0;
  // Find vertices

  for(Int_t i=evFirst; i<=evLast; i++){
    if(i%100==0)cout<<"processing event "<<i<<endl;
    gAlice->GetEvent(i);
    // The true Z coord. is fetched for comparison
    AliHeader *header = gAlice->GetHeader();
    AliGenEventHeader* genEventHeader = header->GenEventHeader();
    TArrayF primaryVertex(3);
    genEventHeader->PrimaryVertex(primaryVertex);
    vert = vertexer->FindVertexForCurrentEvent(i);
    if(kDebug>0){
      // Prints the results
      cout <<"========================================================\n";
      cout << "Event number: "<<i<<")  Z Vertex:"<<endl;
      if(vert){
	cout<<"FOUND: "<<vert->GetZ()<<"; "<<vert->GetZRes()<<endl;
	cout <<" True Z position "<<primaryVertex[2]<<endl;
	cout<<", diff= "<<(primaryVertex[2]-vert->GetZ())*10000.<<endl;
      }
      else {
	cout<<"NOT FOUND "<<endl;
      }
    }
    if(vert){
      Double_t pos[3];
      for(Int_t kk=0;kk<3;kk++)pos[kk]=(Double_t)primaryVertex[kk];
      vert->SetTruePos(pos);
      vertexer->WriteCurrentVertex();
    }
  }

  delete vertexer;



  inFile->Close();
  outFile->Close();
  delete inFile;
  delete outFile;
  galice->Close();
  delete galice;
  return;
}
 AliITSVertexerTracksTest2.C:1
 AliITSVertexerTracksTest2.C:2
 AliITSVertexerTracksTest2.C:3
 AliITSVertexerTracksTest2.C:4
 AliITSVertexerTracksTest2.C:5
 AliITSVertexerTracksTest2.C:6
 AliITSVertexerTracksTest2.C:7
 AliITSVertexerTracksTest2.C:8
 AliITSVertexerTracksTest2.C:9
 AliITSVertexerTracksTest2.C:10
 AliITSVertexerTracksTest2.C:11
 AliITSVertexerTracksTest2.C:12
 AliITSVertexerTracksTest2.C:13
 AliITSVertexerTracksTest2.C:14
 AliITSVertexerTracksTest2.C:15
 AliITSVertexerTracksTest2.C:16
 AliITSVertexerTracksTest2.C:17
 AliITSVertexerTracksTest2.C:18
 AliITSVertexerTracksTest2.C:19
 AliITSVertexerTracksTest2.C:20
 AliITSVertexerTracksTest2.C:21
 AliITSVertexerTracksTest2.C:22
 AliITSVertexerTracksTest2.C:23
 AliITSVertexerTracksTest2.C:24
 AliITSVertexerTracksTest2.C:25
 AliITSVertexerTracksTest2.C:26
 AliITSVertexerTracksTest2.C:27
 AliITSVertexerTracksTest2.C:28
 AliITSVertexerTracksTest2.C:29
 AliITSVertexerTracksTest2.C:30
 AliITSVertexerTracksTest2.C:31
 AliITSVertexerTracksTest2.C:32
 AliITSVertexerTracksTest2.C:33
 AliITSVertexerTracksTest2.C:34
 AliITSVertexerTracksTest2.C:35
 AliITSVertexerTracksTest2.C:36
 AliITSVertexerTracksTest2.C:37
 AliITSVertexerTracksTest2.C:38
 AliITSVertexerTracksTest2.C:39
 AliITSVertexerTracksTest2.C:40
 AliITSVertexerTracksTest2.C:41
 AliITSVertexerTracksTest2.C:42
 AliITSVertexerTracksTest2.C:43
 AliITSVertexerTracksTest2.C:44
 AliITSVertexerTracksTest2.C:45
 AliITSVertexerTracksTest2.C:46
 AliITSVertexerTracksTest2.C:47
 AliITSVertexerTracksTest2.C:48
 AliITSVertexerTracksTest2.C:49
 AliITSVertexerTracksTest2.C:50
 AliITSVertexerTracksTest2.C:51
 AliITSVertexerTracksTest2.C:52
 AliITSVertexerTracksTest2.C:53
 AliITSVertexerTracksTest2.C:54
 AliITSVertexerTracksTest2.C:55
 AliITSVertexerTracksTest2.C:56
 AliITSVertexerTracksTest2.C:57
 AliITSVertexerTracksTest2.C:58
 AliITSVertexerTracksTest2.C:59
 AliITSVertexerTracksTest2.C:60
 AliITSVertexerTracksTest2.C:61
 AliITSVertexerTracksTest2.C:62
 AliITSVertexerTracksTest2.C:63
 AliITSVertexerTracksTest2.C:64
 AliITSVertexerTracksTest2.C:65
 AliITSVertexerTracksTest2.C:66
 AliITSVertexerTracksTest2.C:67
 AliITSVertexerTracksTest2.C:68
 AliITSVertexerTracksTest2.C:69
 AliITSVertexerTracksTest2.C:70
 AliITSVertexerTracksTest2.C:71
 AliITSVertexerTracksTest2.C:72
 AliITSVertexerTracksTest2.C:73
 AliITSVertexerTracksTest2.C:74
 AliITSVertexerTracksTest2.C:75
 AliITSVertexerTracksTest2.C:76
 AliITSVertexerTracksTest2.C:77
 AliITSVertexerTracksTest2.C:78
 AliITSVertexerTracksTest2.C:79
 AliITSVertexerTracksTest2.C:80
 AliITSVertexerTracksTest2.C:81
 AliITSVertexerTracksTest2.C:82
 AliITSVertexerTracksTest2.C:83
 AliITSVertexerTracksTest2.C:84
 AliITSVertexerTracksTest2.C:85
 AliITSVertexerTracksTest2.C:86
 AliITSVertexerTracksTest2.C:87
 AliITSVertexerTracksTest2.C:88
 AliITSVertexerTracksTest2.C:89
 AliITSVertexerTracksTest2.C:90
 AliITSVertexerTracksTest2.C:91
 AliITSVertexerTracksTest2.C:92
 AliITSVertexerTracksTest2.C:93
 AliITSVertexerTracksTest2.C:94
 AliITSVertexerTracksTest2.C:95
 AliITSVertexerTracksTest2.C:96
 AliITSVertexerTracksTest2.C:97
 AliITSVertexerTracksTest2.C:98
 AliITSVertexerTracksTest2.C:99
 AliITSVertexerTracksTest2.C:100
 AliITSVertexerTracksTest2.C:101
 AliITSVertexerTracksTest2.C:102
 AliITSVertexerTracksTest2.C:103
 AliITSVertexerTracksTest2.C:104
 AliITSVertexerTracksTest2.C:105
 AliITSVertexerTracksTest2.C:106
 AliITSVertexerTracksTest2.C:107
 AliITSVertexerTracksTest2.C:108
 AliITSVertexerTracksTest2.C:109