T0 DAs + enable optimization for ITS
[u/mrichter/AliRoot.git] / ITS / AliITSL2GConvertPointsV2.C
CommitLineData
5f292941 1//
2// Macro to convert ITS local-coordinate points
3// into globa lones
4//
5
6Int_t AliITSL2GConvertPointsV2
7(const char* in_name = "ITS.RecPoints.root",
8 const char* out_name = "ITS.Neural.PointsV2.root", Int_t nev = 0)
9{
10 TStopwatch timer;
11
12 // Open output file
13 TFile *in = new TFile(in_name);
14 TFile *out = new TFile(out_name, "recreate");
15
16 // Load event files
17 if (gAlice) {
33c3c91a 18 delete AliRunLoader::Instance();
5f292941 19 delete gAlice;
20 gAlice=0;
21 }
22 AliRunLoader* rl = AliRunLoader::Open("galice.root");
23 if (rl == 0x0) {
24 cerr << "AliITSL2GConvertPoints.C : Can not open session." << endl;
25 return 3;
26 }
27 Int_t retval = rl->LoadgAlice();
28 if (retval) {
29 cerr << "AliITSL2GConvertPoints.C : LoadgAlice returned error" << endl;
30 return 3;
31 }
32 gAlice=rl->GetAliRun();
33 AliITSLoader* gime = (AliITSLoader*)rl->GetLoader("ITSLoader");
34 if (gime == 0x0) {
35 cerr << "AliITSL2GConvertPoints.C : can not get ITS loader" << endl;
36 return 3;
37 }
38 AliITS *ITS = (AliITS*)gAlice->GetDetector("ITS");
39 if (!ITS) {
40 cerr << "AliITSL2GConvertPoints.C : AliITS object not found on file" << endl;
41 return 3;
42 } // end if !ITS
43 AliITSgeom *geom = (AliITSgeom*)ITS->GetITSgeom();
44 if(!geom) {
45 cerr << "AliITSL2GConvertPoints.C : AliITSgeom not found." << endl;
46 return 4;
47 } // end if
48 gime->LoadRecPoints("read");
49 rl->GetEvent(nev);
50 TTree *TR = gime->TreeR();
51 if (!TR) {
52 cerr << "AliITSL2GConvertPoints.C : Can't get the clusters tree." << endl;
53 return 4;
54 }
55
56 // Tree of recpoints
57 Int_t nModules = 0;
58 TTree *TR = (TTree*)in->Get(Form("Event%d/TreeR", nev));
59 nModules = (Int_t)TR->GetEntries();
60 if (!nModules) {
61 cout << "Empty TreeR!!!" << endl;
62 return;
63 }
64
65 timer.Start();
66
67 // Converts and stores the ITS points into global coordinate format
68 Int_t pos = 0;
00a7cc50 69 AliITSRecPoint *local = 0;
5f292941 70 AliITSNeuralPoint *global = 0;
71 TTree *TP = new TTree("TreeP", "Event points in global coords");
72 TP->Branch("pos", &pos, "pos/I");
73 TP->Branch("Points", "AliITSNeuralPoint", &global);
74
75 TObjArray *localArray = 0;
76 TR->SetBranchAddress("Clusters", &localArray);
77 Int_t module, layer, i, j, count, index;
78 Double_t locPos[3], globPos[3], locErr[3][3], globErr[3][3];
79
80 cout << geom->GetModuleIndex(1,1,1) << endl;
81 cout << geom->GetModuleIndex(2,1,1) << endl;
82 cout << geom->GetModuleIndex(3,1,1) << endl;
83 cout << geom->GetModuleIndex(4,1,1) << endl;
84 cout << geom->GetModuleIndex(5,1,1) << endl;
85 cout << geom->GetModuleIndex(6,1,1) << endl;
86
87 for(module = 0; module < nModules; module++) {
88 TR->GetEvent(module);
89 count = (Int_t)localArray->GetEntriesFast();
90 for (index = 0; index < count; index++) {
00a7cc50 91 local = (AliITSRecPoint*)localArray->At(index);
5f292941 92 cout << module << " - " << local->GetDetectorIndex() << endl;
93 global = new AliITSNeuralPoint(local, geom, module, index);
94 global->SetUser(-1);
95 global->ConfMap(0.0, 0.0);
96 TP->Fill();
97 pos++;
98 }
99 }
100
101 timer.Stop();
102 timer.Print();
103 cout << TP->GetEntries() << " points collected" << endl;
104
105 out->cd();
106 out->mkdir(Form("Event%d", nev));
107 out->cd(Form("Event%d", nev));
108 TP->Write(Form("TreeP", nev));
109 out->Close();
110}
111