1 #if !defined(__CINT__) || defined(__MAKECINT__)
5 #include<AliRunLoader.h>
9 #include<AliGenEventHeader.h>
10 #include<AliVertexerTracks.h>
11 #include<AliITSVertexerTracks.h>
13 #include<AliESDVertex.h>
17 void TestVertexerTracks(){
19 delete AliRunLoader::Instance();
24 AliRunLoader *rl = AliRunLoader::Open("galice.root");
26 cerr<<"Can not open session"<<endl;
31 AliMagF * magf = gAlice->Field();
32 AliTracker::SetFieldMap(magf,kTRUE);
33 printf("MagneticField=%f\n",AliTracker::GetBz());
37 Int_t totev=rl->GetNumberOfEvents();
38 cout<<"Number of events="<<totev<<endl;
40 TFile *ef=TFile::Open("AliESDs.root");
41 if (!ef || !ef->IsOpen()) {cerr<<"Can't AliESDs.root !n";}
42 AliESD* event = new AliESD;
43 TTree* tree = (TTree*) ef->Get("esdTree");
44 if (!tree) {cerr<<"no ESD tree foundn";};
45 tree->SetBranchAddress("ESD", &event);
49 Int_t ntrk=event->GetNumberOfTracks();
50 cout<<"Number of ESD tracks : "<<ntrk<<endl;
53 AliESDVertex *vertESD = event->GetVertex();
54 Double_t recVertex[3];
55 AliGenEventHeader *header=rl->GetHeader()->GenEventHeader();
57 header->PrimaryVertex(mcVertex);
58 cout<<"Primary vertex (MC) ";
59 for(Int_t kk=0;kk<3;kk++)cout<<mcVertex[kk]<<" ";
61 vertESD->GetXYZ(recVertex);
62 cout<<"Primary vertex (from SPD clusters) ";
63 for(Int_t kk=0;kk<3;kk++)cout<<recVertex[kk]<<" ";
65 TObjArray *trkarr=new TObjArray();
68 TTree *trkTree = new TTree("TreeT","tracks");
69 AliESDtrack *esdTrack = 0;
70 trkTree->Branch("tracks","AliESDtrack",&esdTrack);
72 esdTrack=(AliESDtrack*)event->GetTrack(2);
73 trkarr->AddLast(esdTrack);
76 esdTrack=(AliESDtrack*)event->GetTrack(3);
77 trkarr->AddLast(esdTrack);
80 esdTrack=(AliESDtrack*)event->GetTrack(4);
81 trkarr->AddLast(esdTrack);
84 // BEWARE: the method VertexForSelectedTracks returns the address of the data member fVert
85 // which is always the same for all calls to VertexForSelectedTracks.
87 printf("\n*****************************\n");
88 printf("Call VertexForSelectedTracks with different arguments\n");
89 printf("*****************************\n");
90 AliVertexerTracks *vtx=new AliVertexerTracks();
91 AliVertex *vert=vtx->VertexForSelectedTracks(trkarr);
93 AliVertex *vert2=vtx->VertexForSelectedTracks(trkTree);
97 printf("\n*****************************\n");
98 printf("Use different finder algorithms\n");
99 printf("*****************************\n");
100 vtx->SetFinderAlgorithm(1);
101 AliVertex *v1=vtx->VertexForSelectedTracks(trkarr);
103 vtx->SetFinderAlgorithm(2);
104 AliVertex *v2=vtx->VertexForSelectedTracks(trkarr);
106 vtx->SetFinderAlgorithm(3);
107 AliVertex *v3=vtx->VertexForSelectedTracks(trkarr);
109 vtx->SetFinderAlgorithm(4);
110 AliVertex *v4=vtx->VertexForSelectedTracks(trkarr);
112 vtx->SetFinderAlgorithm(5);
113 AliVertex *v5=vtx->VertexForSelectedTracks(trkarr);
117 printf("\n*****************************\n");
118 printf("Call AliITSVertexerTracks::VertexForSelected Tracks\n");
119 printf("*****************************\n");
120 Int_t trkPos[3]={0,1,2};
121 AliITSVertexerTracks *itsvtx=new AliITSVertexerTracks();
123 AliVertex *vert3=itsvtx->VertexForSelectedTracks(event,3,trkPos,1);
127 printf("\n*****************************\n");
128 printf("Find Primary Vertex\n");
129 printf("*****************************\n");
130 AliITSVertexerTracks *itsvtx2=new AliITSVertexerTracks();
131 itsvtx2->SetDebug(0);
132 AliESDVertex* evert=itsvtx2->FindPrimaryVertexForCurrentEvent(event);