]>
Commit | Line | Data |
---|---|---|
84d7440d | 1 | #if !defined(__CINT__) || defined(__MAKECINT__) |
2 | #include<Riostream.h> | |
3 | #include<AliRun.h> | |
4 | #include<TTree.h> | |
5 | #include<AliRunLoader.h> | |
6 | #include<AliESD.h> | |
7 | #include<TMath.h> | |
8 | #include<AliHeader.h> | |
9 | #include<AliGenEventHeader.h> | |
10 | #include<AliVertexerTracks.h> | |
11 | #include<AliITSVertexerTracks.h> | |
12 | #include<AliVertex.h> | |
13 | #include<AliESDVertex.h> | |
14 | #include<TFile.h> | |
15 | #endif | |
16 | ||
17 | void TestVertexerTracks(){ | |
18 | if (gAlice) { | |
19 | delete gAlice->GetRunLoader(); | |
20 | delete gAlice; | |
21 | gAlice = 0x0; | |
22 | } | |
23 | ||
24 | AliRunLoader *rl = AliRunLoader::Open("galice.root"); | |
25 | if (rl == 0x0) { | |
26 | cerr<<"Can not open session"<<endl; | |
27 | return; | |
28 | } | |
29 | ||
30 | rl->LoadgAlice(); | |
31 | AliMagF * magf = gAlice->Field(); | |
32 | AliTracker::SetFieldMap(magf,kTRUE); | |
33 | printf("MagneticField=%f\n",AliTracker::GetBz()); | |
34 | ||
35 | rl->LoadHeader(); | |
36 | rl->LoadKinematics(); | |
37 | Int_t totev=rl->GetNumberOfEvents(); | |
38 | cout<<"Number of events="<<totev<<endl; | |
39 | ||
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); | |
46 | ||
47 | Int_t e=0; | |
48 | tree->GetEvent(e); | |
49 | Int_t ntrk=event->GetNumberOfTracks(); | |
50 | cout<<"Number of ESD tracks : "<<ntrk<<endl; | |
51 | ||
52 | rl->GetEvent(e); | |
53 | AliESDVertex *vertESD = event->GetVertex(); | |
8aac1c41 | 54 | Double_t recVertex[3]; |
55 | AliGenEventHeader *header=rl->GetHeader()->GenEventHeader(); | |
56 | TArrayF mcVertex(3); | |
57 | header->PrimaryVertex(mcVertex); | |
84d7440d | 58 | cout<<"Primary vertex (MC) "; |
59 | for(Int_t kk=0;kk<3;kk++)cout<<mcVertex[kk]<<" "; | |
60 | cout<<endl; | |
61 | vertESD->GetXYZ(recVertex); | |
62 | cout<<"Primary vertex (from SPD clusters) "; | |
63 | for(Int_t kk=0;kk<3;kk++)cout<<recVertex[kk]<<" "; | |
64 | cout<<endl; | |
65 | TObjArray *trkarr=new TObjArray(); | |
66 | trkarr->Expand(3); | |
67 | ||
68 | TTree *trkTree = new TTree("TreeT","tracks"); | |
69 | AliESDtrack *esdTrack = 0; | |
70 | trkTree->Branch("tracks","AliESDtrack",&esdTrack); | |
71 | ||
72 | esdTrack=(AliESDtrack*)event->GetTrack(2); | |
73 | trkarr->AddLast(esdTrack); | |
74 | trkTree->Fill(); | |
75 | ||
76 | esdTrack=(AliESDtrack*)event->GetTrack(3); | |
77 | trkarr->AddLast(esdTrack); | |
78 | trkTree->Fill(); | |
79 | ||
80 | esdTrack=(AliESDtrack*)event->GetTrack(4); | |
81 | trkarr->AddLast(esdTrack); | |
82 | trkTree->Fill(); | |
83 | ||
84 | // BEWARE: the method VertexForSelectedTracks returns the address of the data member fVert | |
85 | // which is always the same for all calls to VertexForSelectedTracks. | |
86 | ||
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); | |
92 | vert->Print(); | |
93 | AliVertex *vert2=vtx->VertexForSelectedTracks(trkTree); | |
94 | vert->Print(); | |
95 | vert2->Print(); | |
96 | ||
97 | printf("\n*****************************\n"); | |
98 | printf("Use different finder algorithms\n"); | |
99 | printf("*****************************\n"); | |
100 | vtx->SetFinderAlgorithm(1); | |
101 | AliVertex *v1=vtx->VertexForSelectedTracks(trkarr); | |
102 | v1->Print(); | |
103 | vtx->SetFinderAlgorithm(2); | |
104 | AliVertex *v2=vtx->VertexForSelectedTracks(trkarr); | |
105 | v2->Print(); | |
106 | vtx->SetFinderAlgorithm(3); | |
107 | AliVertex *v3=vtx->VertexForSelectedTracks(trkarr); | |
108 | v3->Print(); | |
109 | vtx->SetFinderAlgorithm(4); | |
110 | AliVertex *v4=vtx->VertexForSelectedTracks(trkarr); | |
111 | v4->Print(); | |
112 | vtx->SetFinderAlgorithm(5); | |
113 | AliVertex *v5=vtx->VertexForSelectedTracks(trkarr); | |
114 | v5->Print(); | |
115 | delete vtx; | |
116 | ||
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(); | |
122 | itsvtx->SetDebug(0); | |
123 | AliVertex *vert3=itsvtx->VertexForSelectedTracks(event,3,trkPos,1); | |
124 | vert3->Print(); | |
125 | delete itsvtx; | |
126 | ||
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); | |
133 | evert->Print(); | |
134 | delete itsvtx2; | |
135 | } | |
136 | ||
137 | ||
138 |