otsdaq_utilities  v2_05_02_indev
alice_esd.js
1 // function to extract tracks from ALICE_ESD tree
2 // tracks are in https://root.cern/files/alice_ESDs.root
3 // geometry in https://root.cern/files/alice_ESDgeometry.root
4 
5 function extract_geo_tracks(tree, opt, call_back) {
6  // as first argument, tree should be provided
7 
8  console.log('CALL extract_geo_tracks');
9 
10  var selector = new JSROOT.TSelector();
11 
12  selector.AddBranch("ESDfriend.fTracks.fPoints","pnts");
13 
14  var lst = JSROOT.Create("TList"), numentry = 0, numtracks = 0;
15 
16  selector.Process = function() {
17  // function called for every entry
18 
19  var pnts = this.tgtobj.pnts;
20 
21  numentry++;
22 
23  // now converts AliTrackPointArray into TGeoTrack
24  for (var p=0;p<pnts.length;++p) {
25  numtracks++;
26  var arr = pnts[p];
27  if (!arr.fNPoints) continue;
28  var track = JSROOT.Create("TGeoTrack");
29  track.fNpoints = arr.fNPoints;
30  track.fPoints = new Float32Array(track.fNpoints*3);
31  for (var k=0;k<track.fNpoints;++k) {
32  track.fPoints[k*3] = arr.fX[k];
33  track.fPoints[k*3+1] = arr.fY[k];
34  track.fPoints[k*3+2] = arr.fZ[k];
35  }
36  track.fLineWidth = 2;
37  track.fLineColor = 3;
38  lst.Add(track);
39  if (numtracks>100) return this.Abort(); // do not accumulate too many tracks
40  }
41  }
42 
43  selector.Terminate = function(res) {
44  // function called when processing finishes
45  console.log('Read done num entries', numentry, 'tracks', numtracks);
46  JSROOT.CallBack(call_back, lst);
47  }
48 
49  tree.Process(selector);
50 }
51 
52 console.log('LOAD alice_esd.js JSROOT', JSROOT.version);