]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/macros/testTrackerCA.C
Fixing a memory leak
[u/mrichter/AliRoot.git] / ITS / UPGRADE / macros / testTrackerCA.C
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include <Riostream.h>
3 #include <TSystem.h>
4 #include <TFile.h>
5 #include <TTree.h>
6 #include <TGeoManager.h>
7 #include <TGeoGlobalMagField.h>
8 #include <TStopwatch.h>
9
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"
18 #include "AliMagF.h"
19 #include "AliESDEvent.h"
20 #include "AliITSURecoParam.h"
21 #include "AliITSUReconstructor.h"
22 #include "AliITSUTrackerSA.h"
23 #endif
24
25 extern TSystem *gSystem;
26
27 const AliESDVertex *SetMCvertex(const AliRunLoader *rl, AliTracker *tr);
28
29 void testTrackerCA() {
30   gSystem->Load("libITSUpgradeBase");
31   gSystem->Load("libITSUpgradeSim");
32   gSystem->Load("libITSUpgradeRec");
33
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()));
45   man->SetRun(0);
46   if ( !TGeoGlobalMagField::Instance()->GetField() ) {
47     printf("Loading field map...\n");
48     AliGRPManager grpMan;
49     if( !grpMan.ReadGRPEntry() ) { 
50       printf("Cannot get GRP entry\n"); 
51     }
52     if( !grpMan.SetMagField() ) { 
53       printf("Problem with magnetic field setup\n"); 
54     }
55   }
56   AliGeomManager::LoadGeometry("geometry.root");
57   //
58   //
59   AliCDBEntry* ent = man->Get("ITS/Calib/RecoParam");
60   AliITSURecoParam* par = (AliITSURecoParam*)((TObjArray*)ent->GetObject())->At(1);
61   //
62   AliITSUReconstructor *rec = new AliITSUReconstructor();
63   rec->SetRecoParam(par);
64   //
65   rec->Init();
66   AliITSUTrackerSA *tracker = new AliITSUTrackerSA();
67   tracker->Init(rec);
68
69
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);
75     
76   TFile *clsFile=TFile::Open("ITS.RecPoints.root");
77     
78   AliRunLoader *rl = AliRunLoader::Open("galice.root","something");
79   rl->LoadHeader();
80   
81
82   TStopwatch timer;    
83   Int_t nEvents=1;//rl->GetNumberOfEvents();
84   for (Int_t i=0; i<nEvents; i++) {
85     cout<<"\nEvent number "<<i<<endl;
86     rl->GetEvent(i);
87
88     const AliESDVertex *vtx=SetMCvertex(rl,tracker);
89     esd->SetPrimaryVertexSPD(vtx);              
90
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();
97
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;
105     }
106
107     esdTree->Fill();
108     esd->Reset();
109     delete vtx;
110   }
111   timer.Stop(); timer.Print();
112  
113   delete tracker;
114   //delete clsFile;
115   esdFile->cd();
116   esdTree->Write();
117   delete esd;
118   delete esdFile;
119 }
120
121 const AliESDVertex *SetMCvertex(const AliRunLoader *rl, AliTracker *tracker) {
122   AliGenEventHeader *h=rl->GetHeader()->GenEventHeader();
123   TArrayF vtx(3);
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);
130   return vertex;
131 }