1 #if !defined(__CINT__) || defined(__MAKECINT__)
6 #include <TGeoManager.h>
7 #include <TGeoGlobalMagField.h>
8 #include <TStopwatch.h>
10 #include "AliTracker.h"
11 #include "AliGeomManager.h"
12 #include "AliCDBManager.h"
13 #include "AliCDBEntry.h"
14 #include "AliGRPManager.h"
15 #include "AliRunLoader.h"
16 #include "AliHeader.h"
17 #include "AliGenEventHeader.h"
19 #include "AliESDEvent.h"
20 #include "AliITSURecoParam.h"
21 #include "AliITSUReconstructor.h"
22 #include "AliITSUTrackerSA.h"
25 extern TSystem *gSystem;
27 const AliESDVertex *SetMCvertex(const AliRunLoader *rl, AliTracker *tr);
29 void testTrackerCA() {
30 gSystem->Load("libITSUpgradeBase");
31 gSystem->Load("libITSUpgradeSim");
32 gSystem->Load("libITSUpgradeRec");
34 // TGeoGlobalMagField::Instance()->
35 // SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG));
36 // // TGeoManager::Import("geometry.root");
37 AliCDBManager* man = AliCDBManager::Instance();
38 man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
39 man->SetSpecificStorage("GRP/GRP/Data",
40 Form("local://%s",gSystem->pwd()));
41 man->SetSpecificStorage("ITS/Align/Data",
42 Form("local://%s",gSystem->pwd()));
43 man->SetSpecificStorage("ITS/Calib/RecoParam",
44 Form("local://%s",gSystem->pwd()));
46 if ( !TGeoGlobalMagField::Instance()->GetField() ) {
47 printf("Loading field map...\n");
49 if( !grpMan.ReadGRPEntry() ) {
50 printf("Cannot get GRP entry\n");
52 if( !grpMan.SetMagField() ) {
53 printf("Problem with magnetic field setup\n");
56 AliGeomManager::LoadGeometry("geometry.root");
59 AliCDBEntry* ent = man->Get("ITS/Calib/RecoParam");
60 AliITSURecoParam* par = (AliITSURecoParam*)((TObjArray*)ent->GetObject())->At(1);
62 AliITSUReconstructor *rec = new AliITSUReconstructor();
63 rec->SetRecoParam(par);
66 AliITSUTrackerSA *tracker = new AliITSUTrackerSA();
70 TFile *esdFile=TFile::Open("AliESDs.root","recreate");
71 TTree *esdTree = new TTree("esdTree", "Tree with ESD objects");
72 AliESDEvent *esd=new AliESDEvent();
73 esd->CreateStdContent();
74 esd->WriteToTree(esdTree);
76 TFile *clsFile=TFile::Open("ITS.RecPoints.root");
78 AliRunLoader *rl = AliRunLoader::Open("galice.root","something");
83 Int_t nEvents=1;//rl->GetNumberOfEvents();
84 for (Int_t i=0; i<nEvents; i++) {
85 cout<<"\nEvent number "<<i<<endl;
88 const AliESDVertex *vtx=SetMCvertex(rl,tracker);
89 esd->SetPrimaryVertexSPD(vtx);
91 TTree *cTree=(TTree *)clsFile->Get(Form("Event%d/TreeR",i));
92 tracker->LoadClusters(cTree);
93 tracker->Clusters2Tracks(esd);
94 //tracker->PropagateBack(esd);
95 tracker->RefitInward(esd);
96 tracker->UnloadClusters();
98 Int_t n=esd->GetNumberOfTracks();
99 cout << "Number of reconstructed tracks " << n << endl;
100 for (Int_t t=0; t<n; t++) {
101 AliESDtrack *track=esd->GetTrack(t);
102 if (!track->RelateToVertex(vtx, tracker->GetBz(), 33)) continue;
103 //Double_t r[3]; track->GetXYZ(r);
104 //cout<<r[0]<<' '<<r[1]<<' '<<r[2]-vtx->GetZ()<<endl;
111 timer.Stop(); timer.Print();
121 const AliESDVertex *SetMCvertex(const AliRunLoader *rl, AliTracker *tracker) {
122 AliGenEventHeader *h=rl->GetHeader()->GenEventHeader();
124 h->PrimaryVertex(vtx);
125 cout<<"Vertex "<<vtx[0]<<' '<<vtx[1]<<' '<<vtx[2]<<endl;
126 Double_t xyz[]={vtx[0],vtx[1],vtx[2]};
127 Double_t ers[]={2.,2.,2.};
128 tracker->SetVertex(xyz,ers);
129 AliESDVertex *vertex=new AliESDVertex(xyz,ers);