ROOT logo
// 
// Macro to convert ITS local-coordinate points
// into globa lones
// 

Int_t AliITSL2GConvertPointsV2 
(const char* in_name = "ITS.RecPoints.root", 
 const char* out_name = "ITS.Neural.PointsV2.root", Int_t nev = 0)
{
	TStopwatch timer;

	// Open output file
	TFile *in = new TFile(in_name);
	TFile *out = new TFile(out_name, "recreate");
	
	// Load event files
	if (gAlice) {
		delete AliRunLoader::Instance();
		delete gAlice;
		gAlice=0;
	} 
	AliRunLoader* rl = AliRunLoader::Open("galice.root");
    if (rl == 0x0) {
		cerr << "AliITSL2GConvertPoints.C : Can not open session." << endl;
		return 3;
	}
    Int_t retval = rl->LoadgAlice();
	if (retval) {
		cerr << "AliITSL2GConvertPoints.C : LoadgAlice returned error" << endl;
		return 3;
	}
	gAlice=rl->GetAliRun();
	AliITSLoader* gime = (AliITSLoader*)rl->GetLoader("ITSLoader");
	if (gime == 0x0) {
		cerr << "AliITSL2GConvertPoints.C : can not get ITS loader" << endl;
		return 3;
	}
	AliITS *ITS = (AliITS*)gAlice->GetDetector("ITS");
	if (!ITS) {
		cerr << "AliITSL2GConvertPoints.C : AliITS object not found on file" << endl;
		return 3;
	}  // end if !ITS
	AliITSgeom *geom = (AliITSgeom*)ITS->GetITSgeom();
	if(!geom) {
		cerr << "AliITSL2GConvertPoints.C : AliITSgeom not found." << endl;
		return 4;
	} // end if
	gime->LoadRecPoints("read");
	rl->GetEvent(nev);
	TTree *TR = gime->TreeR();
	if (!TR) {
		cerr << "AliITSL2GConvertPoints.C : Can't get the clusters tree." << endl;
		return 4;
	}
		
	// Tree of recpoints
	Int_t nModules = 0;
	TTree *TR = (TTree*)in->Get(Form("Event%d/TreeR", nev));
	nModules = (Int_t)TR->GetEntries();
	if (!nModules) {
		cout << "Empty TreeR!!!" << endl;
		return;
	}

	timer.Start();
	
	// Converts and stores the ITS points into global coordinate format
	Int_t pos = 0;
	AliITSRecPoint *local = 0;
	AliITSNeuralPoint *global = 0;
	TTree *TP = new TTree("TreeP", "Event points in global coords");
	TP->Branch("pos", &pos, "pos/I");
	TP->Branch("Points", "AliITSNeuralPoint", &global);
	
	TObjArray *localArray = 0;
	TR->SetBranchAddress("Clusters", &localArray);
	Int_t module, layer, i, j, count, index;
	Double_t locPos[3], globPos[3], locErr[3][3], globErr[3][3];
	
	cout << geom->GetModuleIndex(1,1,1) << endl;
	cout << geom->GetModuleIndex(2,1,1) << endl;
	cout << geom->GetModuleIndex(3,1,1) << endl;
	cout << geom->GetModuleIndex(4,1,1) << endl;
	cout << geom->GetModuleIndex(5,1,1) << endl;
	cout << geom->GetModuleIndex(6,1,1) << endl;
	
	for(module = 0; module < nModules; module++) {
		TR->GetEvent(module);
		count = (Int_t)localArray->GetEntriesFast();
		for (index = 0; index < count; index++) {
			local = (AliITSRecPoint*)localArray->At(index);
			cout << module << " - " << local->GetDetectorIndex() << endl;
			global = new AliITSNeuralPoint(local, geom, module, index);
			global->SetUser(-1);
			global->ConfMap(0.0, 0.0);
			TP->Fill();
			pos++;
		}
	}

	timer.Stop();
	timer.Print();
	cout << TP->GetEntries() << " points collected" << endl;
	
	out->cd();
	out->mkdir(Form("Event%d", nev));
	out->cd(Form("Event%d", nev));
	TP->Write(Form("TreeP", nev));
	out->Close();
}

 AliITSL2GConvertPointsV2.C:1
 AliITSL2GConvertPointsV2.C:2
 AliITSL2GConvertPointsV2.C:3
 AliITSL2GConvertPointsV2.C:4
 AliITSL2GConvertPointsV2.C:5
 AliITSL2GConvertPointsV2.C:6
 AliITSL2GConvertPointsV2.C:7
 AliITSL2GConvertPointsV2.C:8
 AliITSL2GConvertPointsV2.C:9
 AliITSL2GConvertPointsV2.C:10
 AliITSL2GConvertPointsV2.C:11
 AliITSL2GConvertPointsV2.C:12
 AliITSL2GConvertPointsV2.C:13
 AliITSL2GConvertPointsV2.C:14
 AliITSL2GConvertPointsV2.C:15
 AliITSL2GConvertPointsV2.C:16
 AliITSL2GConvertPointsV2.C:17
 AliITSL2GConvertPointsV2.C:18
 AliITSL2GConvertPointsV2.C:19
 AliITSL2GConvertPointsV2.C:20
 AliITSL2GConvertPointsV2.C:21
 AliITSL2GConvertPointsV2.C:22
 AliITSL2GConvertPointsV2.C:23
 AliITSL2GConvertPointsV2.C:24
 AliITSL2GConvertPointsV2.C:25
 AliITSL2GConvertPointsV2.C:26
 AliITSL2GConvertPointsV2.C:27
 AliITSL2GConvertPointsV2.C:28
 AliITSL2GConvertPointsV2.C:29
 AliITSL2GConvertPointsV2.C:30
 AliITSL2GConvertPointsV2.C:31
 AliITSL2GConvertPointsV2.C:32
 AliITSL2GConvertPointsV2.C:33
 AliITSL2GConvertPointsV2.C:34
 AliITSL2GConvertPointsV2.C:35
 AliITSL2GConvertPointsV2.C:36
 AliITSL2GConvertPointsV2.C:37
 AliITSL2GConvertPointsV2.C:38
 AliITSL2GConvertPointsV2.C:39
 AliITSL2GConvertPointsV2.C:40
 AliITSL2GConvertPointsV2.C:41
 AliITSL2GConvertPointsV2.C:42
 AliITSL2GConvertPointsV2.C:43
 AliITSL2GConvertPointsV2.C:44
 AliITSL2GConvertPointsV2.C:45
 AliITSL2GConvertPointsV2.C:46
 AliITSL2GConvertPointsV2.C:47
 AliITSL2GConvertPointsV2.C:48
 AliITSL2GConvertPointsV2.C:49
 AliITSL2GConvertPointsV2.C:50
 AliITSL2GConvertPointsV2.C:51
 AliITSL2GConvertPointsV2.C:52
 AliITSL2GConvertPointsV2.C:53
 AliITSL2GConvertPointsV2.C:54
 AliITSL2GConvertPointsV2.C:55
 AliITSL2GConvertPointsV2.C:56
 AliITSL2GConvertPointsV2.C:57
 AliITSL2GConvertPointsV2.C:58
 AliITSL2GConvertPointsV2.C:59
 AliITSL2GConvertPointsV2.C:60
 AliITSL2GConvertPointsV2.C:61
 AliITSL2GConvertPointsV2.C:62
 AliITSL2GConvertPointsV2.C:63
 AliITSL2GConvertPointsV2.C:64
 AliITSL2GConvertPointsV2.C:65
 AliITSL2GConvertPointsV2.C:66
 AliITSL2GConvertPointsV2.C:67
 AliITSL2GConvertPointsV2.C:68
 AliITSL2GConvertPointsV2.C:69
 AliITSL2GConvertPointsV2.C:70
 AliITSL2GConvertPointsV2.C:71
 AliITSL2GConvertPointsV2.C:72
 AliITSL2GConvertPointsV2.C:73
 AliITSL2GConvertPointsV2.C:74
 AliITSL2GConvertPointsV2.C:75
 AliITSL2GConvertPointsV2.C:76
 AliITSL2GConvertPointsV2.C:77
 AliITSL2GConvertPointsV2.C:78
 AliITSL2GConvertPointsV2.C:79
 AliITSL2GConvertPointsV2.C:80
 AliITSL2GConvertPointsV2.C:81
 AliITSL2GConvertPointsV2.C:82
 AliITSL2GConvertPointsV2.C:83
 AliITSL2GConvertPointsV2.C:84
 AliITSL2GConvertPointsV2.C:85
 AliITSL2GConvertPointsV2.C:86
 AliITSL2GConvertPointsV2.C:87
 AliITSL2GConvertPointsV2.C:88
 AliITSL2GConvertPointsV2.C:89
 AliITSL2GConvertPointsV2.C:90
 AliITSL2GConvertPointsV2.C:91
 AliITSL2GConvertPointsV2.C:92
 AliITSL2GConvertPointsV2.C:93
 AliITSL2GConvertPointsV2.C:94
 AliITSL2GConvertPointsV2.C:95
 AliITSL2GConvertPointsV2.C:96
 AliITSL2GConvertPointsV2.C:97
 AliITSL2GConvertPointsV2.C:98
 AliITSL2GConvertPointsV2.C:99
 AliITSL2GConvertPointsV2.C:100
 AliITSL2GConvertPointsV2.C:101
 AliITSL2GConvertPointsV2.C:102
 AliITSL2GConvertPointsV2.C:103
 AliITSL2GConvertPointsV2.C:104
 AliITSL2GConvertPointsV2.C:105
 AliITSL2GConvertPointsV2.C:106
 AliITSL2GConvertPointsV2.C:107
 AliITSL2GConvertPointsV2.C:108
 AliITSL2GConvertPointsV2.C:109
 AliITSL2GConvertPointsV2.C:110
 AliITSL2GConvertPointsV2.C:111
 AliITSL2GConvertPointsV2.C:112