Hi,
I recently have to move to from pyroot to root because of performance issue in python and now I stuck in every direction that I move. I have some Tree with this structure:
TauJet = 0
TauJet_E = (vector<float>*)0x4250f40
TauJet_Px = (vector<float>*)0x4250e90
TauJet_Py = (vector<float>*)0x42510f0
TauJet_Pz = (vector<float>*)0x4253e60
TauJet_Eta = (vector<float>*)0x42541d0
TauJet_Phi = (vector<float>*)0x4254540
TauJet_PT = (vector<float>*)0x42548b0
TauJet_Charge = (vector<float>*)0x4254c20
TauJet_NTracks = (vector<int>*)0x425c860
TauJet_EHoverEE = (vector<float>*)0x425cb10
TauJet_size = 0
Jet = 6
Jet_E = (vector<float>*)0x425cc50
Jet_Px = (vector<float>*)0x43931b0
Jet_Py = (vector<float>*)0x439c040
Jet_Pz = (vector<float>*)0x43a4ed0
Jet_Eta = (vector<float>*)0x43add60
Jet_Phi = (vector<float>*)0x43b6bf0
Jet_PT = (vector<float>*)0x43bfa80
Jet_Btag = (vector<int>*)0x43c8910
Jet_NTracks = (vector<int>*)0x43d17a0
Jet_EHoverEE = (vector<float>*)0x43da630
Jet_size = 6
Electron = 0
Electron_E = (vector<float>*)0x43f3240
Electron_Px = (vector<float>*)0x43fc270
Electron_Py = (vector<float>*)0x44052a0
Electron_Pz = (vector<float>*)0x440e2d0
Electron_Eta = (vector<float>*)0x4417300
Electron_Phi = (vector<float>*)0x4420330
Electron_PT = (vector<float>*)0x4429360
Electron_Charge = (vector<float>*)0x4432390
Electron_IsolFlag = (vector<int>*)0x443b3c0
Electron_SumPt = (vector<float>*)0x443b760
Electron_EtaCalo = (vector<float>*)0x443bad0
Electron_PhiCalo = (vector<float>*)0x443be70
Electron_EHoverEE = (vector<float>*)0x443c210
Electron_FlagLoose = (vector<int>*)0x4468590
Electron_FlagMedium = (vector<int>*)0x44715f0
Electron_FlagTight = (vector<int>*)0x447a650
Electron_size = 0
Muon = 0
Muon_E = (vector<float>*)0x4493430
Muon_Px = (vector<float>*)0x449c460
Muon_Py = (vector<float>*)0x44a5490
Muon_Pz = (vector<float>*)0x44ae4c0
Muon_Eta = (vector<float>*)0x44b74f0
Muon_Phi = (vector<float>*)0x44c0520
Muon_PT = (vector<float>*)0x44c9550
Muon_Charge = (vector<float>*)0x44d2580
Muon_IsolFlag = (vector<int>*)0x44db5b0
Muon_SumPt = (vector<float>*)0x44e45e0
Muon_EtaCalo = (vector<float>*)0x44ed610
Muon_PhiCalo = (vector<float>*)0x44f6640
Muon_EHoverEE = (vector<float>*)0x44ff670
Muon_EtRatio = (vector<float>*)0x45086a0
Muon_ID = (vector<int>*)0x45116d0
Muon_size = 0
Photon = 7
Photon_E = (vector<float>*)0x452a480
Photon_Px = (vector<float>*)0x4533150
Photon_Py = (vector<float>*)0x453be20
Photon_Pz = (vector<float>*)0x4544af0
Photon_Eta = (vector<float>*)0x454d7c0
Photon_Phi = (vector<float>*)0x4556490
Photon_PT = (vector<float>*)0x455f160
Photon_EHoverEE = (vector<float>*)0x4567e30
Photon_size = 7
Tracks = 102
Tracks_Eta = (vector<float>*)0x45808a0
Tracks_Phi = (vector<float>*)0x4588cf0
Tracks_EtaOuter = (vector<float>*)0x4591140
Tracks_PhiOuter = (vector<float>*)0x4599590
Tracks_PT = (vector<float>*)0x45a1a20
Tracks_E = (vector<float>*)0x45a9e70
Tracks_Px = (vector<float>*)0x45b22c0
Tracks_Py = (vector<float>*)0x45ba710
Tracks_Pz = (vector<float>*)0x45c2b60
Tracks_Charge = (vector<float>*)0x45cafb0
Tracks_Vx = (vector<float>*)0x45d3400
Tracks_Vy = (vector<float>*)0x45db850
Tracks_Vz = (vector<float>*)0x45e3ca0
Tracks_size = 102
ETmis = 1
ETmis_ET = (vector<float>*)0x45fbe70
ETmis_Phi = (vector<float>*)0x4604ed0
ETmis_Px = (vector<float>*)0x460df30
ETmis_Py = (vector<float>*)0x4616f90
ETmis_size = 1
CaloTower = 333
CaloTower_Eta = (vector<float>*)0x462fd70
CaloTower_Phi = (vector<float>*)0x46386c0
CaloTower_E = (vector<float>*)0x4641010
CaloTower_E_em = (vector<float>*)0x4649960
CaloTower_E_had = (vector<float>*)0x46522b0
CaloTower_ET = (vector<float>*)0x465a3a0
CaloTower_size = 333
what I need to do is for each event, read the branches and put them in a nested vector. for example
for Event_Vec = [[TauJet], [Jet], [Electro], [Muon], [Photon], [Tracks], [ETmis], [CaloTower]]
where each element again is a vector:
[TauJet] = [TauJet_E,TauJet_Px,TauJet_Py,TauJet_Pz,TauJet_Eta,TauJet_Phi,TauJet_PT,TauJet_Charge,TauJet_NTracks,TauJet_EHoverEE,TauJet_size]
and each element here is a vector of float.
Now my first question is there any built-in in root to do this? if not, how should I access the vector in each branch? right now I can read one branch using this code:
gROOT->ProcessLine("#include <vector>");
vector<float> *Jet_E = new vector<float>();
tree->SetBranchAddress("Jet_E", &Jet_E);
is this the correct way? do I have to do these steps for every branch?
Thanks in advance