1 #if !defined(__CINT__) || defined(__MAKECINT__)
3 #include <TGeoManager.h>
10 #include <AliGenEventHeader.h>
11 #include <AliGeomManager.h>
12 #include <AliITSVertexerZ.h>
13 #include <AliRunLoader.h>
14 #include <AliITSLoader.h>
18 void AliITSVertexerZTest(Float_t delphi=0.05,Float_t window=3.,Float_t initx=0., Float_t inity=0.,TString FileIn="galice.root"){
19 // delphi ---> azimuthal range to accept tracklets
20 // window ---> window in Z around the peak of tracklets proj. in mm
22 TH2F *diff2 = new TH2F("diff2","Zfound vs Ztrue",100,-6,6,100,-6,6);
23 TH1F *diff1 = new TH1F("diff1","Zfound - Ztrue(#mu m)",100,-500,500);
26 AliRunLoader *rl = AliRunLoader::Open(FileIn.Data());
27 Int_t retval = rl->LoadgAlice();
29 cerr<<"AliITSVertexerZTest.C: AliRun object not found"<<endl;
32 retval = rl->LoadHeader();
34 cerr<<"AliITSVertexerZTest.C : LoadHeader returned error"<<endl;
37 retval = rl->LoadKinematics();
39 cerr<<"AliITSVertexerZTest.C : LoadKinematics returned error"<<endl;
43 AliGeomManager::LoadGeometry("geometry.root");
45 AliITSVertexerZ *dovert = new AliITSVertexerZ(initx,inity);
46 dovert->Init("default");
47 //dovert->SetDebug(0);
48 // dovert->SetDiffPhiMax(delphi);
49 // dovert->SetWindow(window);
50 dovert->PrintStatus();
52 AliESDVertex *vert = 0;
53 AliITSLoader* itsloader = (AliITSLoader*) rl->GetLoader("ITSLoader");
54 itsloader->LoadRecPoints("read");
55 for(Int_t i=0; i<rl->TreeE()->GetEntries(); i++){
57 // The true Z coord. is fetched for comparison
58 AliHeader *header = rl->GetHeader();
59 AliGenEventHeader* genEventHeader = header->GenEventHeader();
60 TArrayF primaryVertex(3);
61 genEventHeader->PrimaryVertex(primaryVertex);
62 TTree* cltree = itsloader->TreeR();
63 vert = dovert->FindVertexForCurrentEvent(cltree);
66 cout <<"========================================================\n";
67 cout << "Event number: "<<i<<") Z Vertex:"<<endl;
69 cout<<"FOUND: "<<vert->GetZv()<<"; ";
70 cout<<vert->GetZRes()<<"; "<<vert->GetNContributors()<<endl;
71 cout <<" True Z position "<<primaryVertex[2]<<", diff= ";
72 cout<<(primaryVertex[2]-vert->GetZv())*10000.<<endl;
74 cout<<"NOT FOUND"<<endl;
78 Float_t found = vert->GetZv();
79 diff2->Fill(primaryVertex[2],found);
80 found = 10000.*(found-primaryVertex[2]);
81 if(vert->GetZRes()!=0){
86 dovert->WriteCurrentVertex();
90 cout<<"Only one tracklet (sigma = 0) "<<sigmazero<<endl;