Hi All,
I have a .root file with a bunch of branches each containing a TLeaf of a in-house class based off of a TObject:
Branch: Primary
Leaf: Primary
Branch: EventInfo
Leaf: EventInfo
Branch: SilHits
Leaf: SilHits_
Branch: SilDigi
Leaf: SilDigi_
Branch: PanelHits
Leaf: PanelHits_
Branch: PanelDIGI
Leaf: PanelDIGI_
Branch: MCTracks
Leaf: MCTracks_
The EventInfo branch points to a TEventInfo object defined as so:
class TEventInfo : public TObject
{
public:
TEventInfo(){};
int fnumPrimaryPi_0 = 0;
int fnumPrimaryPi_p = 0;
int fnumPrimaryPi_n = 0;
int fnumPrimaryMu_p = 0;
int fnumPrimaryMu_n = 0;
int fnumPrimaryp_p = 0;
int fnumPrimarye_n = 0;
std::vector<double> fPrimaryPionMoms = {};
int fnumSecondaryPi_0 = 0;
int fnumSecondaryPi_p = 0;
int fnumSecondaryPi_n = 0;
int fnumSecondaryMu_p = 0;
int fnumSecondaryMu_n = 0;
int fnumSecondaryp_p = 0;
int fnumSecondarye_n = 0;
std::vector<double> fSecondaryPionMoms = {};
}
I would like to convert this to a python friendly format. For example a df or dictionary where the ints are just columns and the vector is also just all in one column. I am having trouble working with this TObject in python, obviously AsNumpy() doesn’t work natively.
Any ideas how to best do this?
Cheers
(Just for more context I am trying to plot histograms of each of these members, and of all the vectors)
i can do this:
# Open the ROOT file
root_file = ROOT.TFile.Open("./Data/a2MC-2024-04-10-12-48-42_300.root")
# Get the tree or directory
tree_or_dir = root_file.Get("a2MC")
# Navigate to the branch
branch = tree_or_dir.GetBranch("fnumPrimaryPi_0")
Then these commands to give:
tree_or_dir.Print()
******************************************************************************
*Tree :a2MC : a2MC tree *
*Entries : 100 : Total = 1411669 bytes File Size = 690531 *
* : : Tree compression factor = 1.98 *
******************************************************************************
*Branch :Primary *
*Entries : 100 : BranchElement (see below) *
*............................................................................*
*Br 0 :fUniqueID : UInt_t *
*Entries : 100 : Total Size= 981 bytes File Size = 99 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.81 *
*............................................................................*
*Br 1 :fBits : UInt_t *
*Entries : 100 : Total Size= 1369 bytes File Size = 286 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 3.08 *
*............................................................................*
*Br 2 :fPdgCode : Int_t *
*Entries : 100 : Total Size= 976 bytes File Size = 102 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.66 *
*............................................................................*
*Br 3 :fVox : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 868 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 4 :fVoy : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 867 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 5 :fVoz : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 871 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 6 :fPox : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 871 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 7 :fPoy : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 871 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 8 :fPoz : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 871 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 9 :fEo : Double_t *
*Entries : 100 : Total Size= 1351 bytes File Size = 106 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 8.21 *
*............................................................................*
*Br 10 :fVdx : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 871 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 11 :fVdy : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 871 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 12 :fVdz : Double_t *
*Entries : 100 : Total Size= 1356 bytes File Size = 871 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 13 :fGenMode : Int_t *
*Entries : 100 : Total Size= 976 bytes File Size = 98 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.85 *
*............................................................................*
*Branch :EventInfo *
*Entries : 100 : BranchElement (see below) *
*............................................................................*
*Br 14 :fUniqueID : UInt_t *
*Entries : 100 : Total Size= 981 bytes File Size = 99 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.81 *
*............................................................................*
*Br 15 :fBits : UInt_t *
*Entries : 100 : Total Size= 1369 bytes File Size = 286 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 3.08 *
*............................................................................*
*Br 16 :fnumPrimaryPi_0 : Int_t *
*Entries : 100 : Total Size= 1011 bytes File Size = 190 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.54 *
*............................................................................*
*Br 17 :fnumPrimaryPi_p : Int_t *
*Entries : 100 : Total Size= 1011 bytes File Size = 183 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.63 *
*............................................................................*
*Br 18 :fnumPrimaryPi_n : Int_t *
*Entries : 100 : Total Size= 1011 bytes File Size = 181 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.66 *
*............................................................................*
*Br 19 :fnumPrimaryMu_p : Int_t *
*Entries : 100 : Total Size= 1011 bytes File Size = 105 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.59 *
*............................................................................*
*Br 20 :fnumPrimaryMu_n : Int_t *
*Entries : 100 : Total Size= 1011 bytes File Size = 105 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.59 *
*............................................................................*
*Br 21 :fnumPrimaryp_p : Int_t *
*Entries : 100 : Total Size= 1006 bytes File Size = 104 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.62 *
*............................................................................*
*Br 22 :fnumPrimarye_n : Int_t *
*Entries : 100 : Total Size= 1006 bytes File Size = 189 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.54 *
*............................................................................*
*Br 23 :fPrimaryPionMoms : vector<double> *
*Entries : 100 : Total Size= 4264 bytes File Size = 2795 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.33 *
*............................................................................*
*Br 24 :fnumSecondaryPi_0 : Int_t *
*Entries : 100 : Total Size= 1021 bytes File Size = 169 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.86 *
*............................................................................*
*Br 25 :fnumSecondaryPi_p : Int_t *
*Entries : 100 : Total Size= 1021 bytes File Size = 166 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.92 *
*............................................................................*
*Br 26 :fnumSecondaryPi_n : Int_t *
*Entries : 100 : Total Size= 1021 bytes File Size = 174 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.78 *
*............................................................................*
*Br 27 :fnumSecondaryMu_p : Int_t *
*Entries : 100 : Total Size= 1021 bytes File Size = 175 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.77 *
*............................................................................*
*Br 28 :fnumSecondaryMu_n : Int_t *
*Entries : 100 : Total Size= 1021 bytes File Size = 149 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 3.25 *
*............................................................................*
*Br 29 :fnumSecondaryp_p : Int_t *
*Entries : 100 : Total Size= 1016 bytes File Size = 239 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.02 *
*............................................................................*
*Br 30 :fnumSecondarye_n : Int_t *
*Entries : 100 : Total Size= 1016 bytes File Size = 252 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.92 *
*............................................................................*
*Br 31 :fSecondaryPionMoms : vector<double> *
*Entries : 100 : Total Size= 2634 bytes File Size = 1136 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.84 *
*............................................................................*
*Br 32 :SilHits : Int_t SilHits_ *
*Entries : 100 : Total Size= 12433 bytes File Size = 436 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.02 *
*............................................................................*
*Br 33 :SilHits.fUniqueID : UInt_t fUniqueID[SilHits_] *
*Entries : 100 : Total Size= 7705 bytes File Size = 398 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 17.81 *
*............................................................................*
*Br 34 :SilHits.fBits : UInt_t fBits[SilHits_] *
*Entries : 100 : Total Size= 7685 bytes File Size = 434 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 16.32 *
*............................................................................*
*Br 35 :SilHits.fTrackID : Int_t fTrackID[SilHits_] *
*Entries : 100 : Total Size= 7700 bytes File Size = 1756 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.04 *
*............................................................................*
*Br 36 :SilHits.fPdgCode : Int_t fPdgCode[SilHits_] *
*Entries : 100 : Total Size= 7700 bytes File Size = 1332 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 5.32 *
*............................................................................*
*Br 37 :SilHits.fMotherID : Int_t fMotherID[SilHits_] *
*Entries : 100 : Total Size= 7705 bytes File Size = 1396 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 5.08 *
*............................................................................*
*Br 38 :SilHits.fEvent : Int_t fEvent[SilHits_] *
*Entries : 100 : Total Size= 7690 bytes File Size = 739 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 9.59 *
*............................................................................*
*Br 39 :SilHits.fSilID : Int_t fSilID[SilHits_] *
*Entries : 100 : Total Size= 7690 bytes File Size = 2206 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 3.21 *
*............................................................................*
*Br 40 :SilHits.fLayN : Int_t fLayN[SilHits_] *
*Entries : 100 : Total Size= 7685 bytes File Size = 1306 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 5.42 *
*............................................................................*
*Br 41 :SilHits.fModN : Int_t fModN[SilHits_] *
*Entries : 100 : Total Size= 7685 bytes File Size = 1680 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 4.22 *
*............................................................................*
*Br 42 :SilHits.fnStrp : Int_t fnStrp[SilHits_] *
*Entries : 100 : Total Size= 7690 bytes File Size = 2873 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.47 *
*............................................................................*
*Br 43 :SilHits.fpStrp : Int_t fpStrp[SilHits_] *
*Entries : 100 : Total Size= 7690 bytes File Size = 2912 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.43 *
*............................................................................*
*Br 44 :SilHits.fEdep : Double_t fEdep[SilHits_] *
*Entries : 100 : Total Size= 14281 bytes File Size = 12873 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.06 *
*............................................................................*
*Br 45 :SilHits.fPosX : Double_t fPosX[SilHits_] *
*Entries : 100 : Total Size= 14281 bytes File Size = 13080 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.05 *
*............................................................................*
*Br 46 :SilHits.fPosY : Double_t fPosY[SilHits_] *
*Entries : 100 : Total Size= 14281 bytes File Size = 12526 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.09 *
*............................................................................*
*Br 47 :SilHits.fPosZ : Double_t fPosZ[SilHits_] *
*Entries : 100 : Total Size= 14281 bytes File Size = 13127 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.04 *
*............................................................................*
*Br 48 :SilHits.fMomX : Double_t fMomX[SilHits_] *
*Entries : 100 : Total Size= 14281 bytes File Size = 13056 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.05 *
*............................................................................*
*Br 49 :SilHits.fMomY : Double_t fMomY[SilHits_] *
*Entries : 100 : Total Size= 14281 bytes File Size = 13033 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.05 *
*............................................................................*
*Br 50 :SilHits.fMomZ : Double_t fMomZ[SilHits_] *
*Entries : 100 : Total Size= 14281 bytes File Size = 13034 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.05 *
*............................................................................*
*Br 51 :SilDigi : Int_t SilDigi_ *
*Entries : 100 : Total Size= 4835 bytes File Size = 436 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.02 *
*............................................................................*
*Br 52 :SilDigi.fUniqueID : UInt_t fUniqueID[SilDigi_] *
*Entries : 100 : Total Size= 7705 bytes File Size = 398 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 17.81 *
*............................................................................*
*Br 53 :SilDigi.fBits : UInt_t fBits[SilDigi_] *
*Entries : 100 : Total Size= 7685 bytes File Size = 434 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 16.32 *
*............................................................................*
*Br 54 :SilDigi.fElemID : Int_t fElemID[SilDigi_] *
*Entries : 100 : Total Size= 7695 bytes File Size = 399 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 17.76 *
*............................................................................*
*Br 55 :SilDigi.fEnergy : Double_t fEnergy[SilDigi_] *
*Entries : 100 : Total Size= 14291 bytes File Size = 435 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 31.45 *
*............................................................................*
*Br 56 :SilDigi.fEventID : Int_t fEventID[SilDigi_] *
*Entries : 100 : Total Size= 7700 bytes File Size = 400 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 17.72 *
*............................................................................*
*Br 57 :PanelHits : Int_t PanelHits_ *
*Entries : 100 : Total Size= 10281 bytes File Size = 350 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.53 *
*............................................................................*
*Br 58 :PanelHits.fUniqueID : UInt_t fUniqueID[PanelHits_] *
*Entries : 100 : Total Size= 1251 bytes File Size = 178 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 3.49 *
*............................................................................*
*Br 59 :PanelHits.fBits : UInt_t fBits[PanelHits_] *
*Entries : 100 : Total Size= 1231 bytes File Size = 196 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 3.15 *
*............................................................................*
*Br 60 :PanelHits.fTrackID : Int_t fTrackID[PanelHits_] *
*Entries : 100 : Total Size= 1246 bytes File Size = 249 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.49 *
*............................................................................*
*Br 61 :PanelHits.fPdgCode : Int_t fPdgCode[PanelHits_] *
*Entries : 100 : Total Size= 1246 bytes File Size = 234 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.65 *
*............................................................................*
*Br 62 :PanelHits.fMotherID : Int_t fMotherID[PanelHits_] *
*Entries : 100 : Total Size= 1251 bytes File Size = 224 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.78 *
*............................................................................*
*Br 63 :PanelHits.fEvent : Int_t fEvent[PanelHits_] *
*Entries : 100 : Total Size= 1236 bytes File Size = 222 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.79 *
*............................................................................*
*Br 64 :PanelHits.fPanelID : Int_t fPanelID[PanelHits_] *
*Entries : 100 : Total Size= 1246 bytes File Size = 209 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.97 *
*............................................................................*
*Br 65 :PanelHits.fEdep : Double_t fEdep[PanelHits_] *
*Entries : 100 : Total Size= 1359 bytes File Size = 444 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.68 *
*............................................................................*
*Br 66 :PanelHits.fPosX : Double_t fPosX[PanelHits_] *
*Entries : 100 : Total Size= 1359 bytes File Size = 381 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.96 *
*............................................................................*
*Br 67 :PanelHits.fPosY : Double_t fPosY[PanelHits_] *
*Entries : 100 : Total Size= 1359 bytes File Size = 438 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.70 *
*............................................................................*
*Br 68 :PanelHits.fPosZ : Double_t fPosZ[PanelHits_] *
*Entries : 100 : Total Size= 1359 bytes File Size = 429 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.74 *
*............................................................................*
*Br 69 :PanelHits.fMomX : Double_t fMomX[PanelHits_] *
*Entries : 100 : Total Size= 1359 bytes File Size = 408 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.83 *
*............................................................................*
*Br 70 :PanelHits.fMomY : Double_t fMomY[PanelHits_] *
*Entries : 100 : Total Size= 1359 bytes File Size = 404 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.85 *
*............................................................................*
*Br 71 :PanelHits.fMomZ : Double_t fMomZ[PanelHits_] *
*Entries : 100 : Total Size= 1359 bytes File Size = 409 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.82 *
*............................................................................*
*Br 72 :PanelDIGI : Int_t PanelDIGI_ *
*Entries : 100 : Total Size= 4911 bytes File Size = 348 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.54 *
*............................................................................*
*Br 73 :PanelDIGI.fUniqueID : UInt_t fUniqueID[PanelDIGI_] *
*Entries : 100 : Total Size= 1203 bytes File Size = 178 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 3.22 *
*............................................................................*
*Br 74 :PanelDIGI.fBits : UInt_t fBits[PanelDIGI_] *
*Entries : 100 : Total Size= 1183 bytes File Size = 183 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 3.11 *
*............................................................................*
*Br 75 :PanelDIGI.fEventID : Int_t fEventID[PanelDIGI_] *
*Entries : 100 : Total Size= 1198 bytes File Size = 220 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.60 *
*............................................................................*
*Br 76 :PanelDIGI.fPanelID : Int_t fPanelID[PanelDIGI_] *
*Entries : 100 : Total Size= 1198 bytes File Size = 204 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.81 *
*............................................................................*
*Br 77 :PanelDIGI.fEnergy : Double_t fEnergy[PanelDIGI_] *
*Entries : 100 : Total Size= 1273 bytes File Size = 342 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.91 *
*............................................................................*
*Br 78 :MCTracks : Int_t MCTracks_ *
*Entries : 100 : Total Size= 10121 bytes File Size = 458 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 1.93 *
*............................................................................*
*Br 79 :MCTracks.fUniqueID : UInt_t fUniqueID[MCTracks_] *
*Entries : 100 : Total Size= 46561 bytes File Size = 796 *
*Baskets : 2 : Basket Size= 32000 bytes Compression= 57.71 *
*............................................................................*
*Br 80 :MCTracks.fBits : UInt_t fBits[MCTracks_] *
*Entries : 100 : Total Size= 46537 bytes File Size = 850 *
*Baskets : 2 : Basket Size= 32000 bytes Compression= 54.04 *
*............................................................................*
*Br 81 :MCTracks.fPdgCode : Int_t fPdgCode[MCTracks_] *
*Entries : 100 : Total Size= 46555 bytes File Size = 9923 *
*Baskets : 2 : Basket Size= 32000 bytes Compression= 4.63 *
*............................................................................*
*Br 82 :MCTracks.fMother[2] : Int_t fMother[MCTracks_] *
*Entries : 100 : Total Size= 92004 bytes File Size = 25050 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 3.65 *
*............................................................................*
*Br 83 :MCTracks.fDaughter[2] : Int_t fDaughter[MCTracks_] *
*Entries : 100 : Total Size= 92018 bytes File Size = 17912 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 5.10 *
*............................................................................*
*Br 84 :MCTracks.fTrackID : Int_t fTrackID[MCTracks_] *
*Entries : 100 : Total Size= 46555 bytes File Size = 2252 *
*Baskets : 2 : Basket Size= 32000 bytes Compression= 20.40 *
*............................................................................*
*Br 85 :MCTracks.fPx : Double_t fPx[MCTracks_] *
*Entries : 100 : Total Size= 91964 bytes File Size = 84042 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 1.09 *
*............................................................................*
*Br 86 :MCTracks.fPy : Double_t fPy[MCTracks_] *
*Entries : 100 : Total Size= 91964 bytes File Size = 84023 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 1.09 *
*............................................................................*
*Br 87 :MCTracks.fPz : Double_t fPz[MCTracks_] *
*Entries : 100 : Total Size= 91964 bytes File Size = 84004 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 1.09 *
*............................................................................*
*Br 88 :MCTracks.fE : Double_t fE[MCTracks_] *
*Entries : 100 : Total Size= 91957 bytes File Size = 72782 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 1.26 *
*............................................................................*
*Br 89 :MCTracks.fVx : Double_t fVx[MCTracks_] *
*Entries : 100 : Total Size= 91964 bytes File Size = 42050 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 2.17 *
*............................................................................*
*Br 90 :MCTracks.fVy : Double_t fVy[MCTracks_] *
*Entries : 100 : Total Size= 91964 bytes File Size = 42073 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 2.17 *
*............................................................................*
*Br 91 :MCTracks.fVz : Double_t fVz[MCTracks_] *
*Entries : 100 : Total Size= 91964 bytes File Size = 41963 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 2.18 *
*............................................................................*
*Br 92 :MCTracks.fVt : Double_t fVt[MCTracks_] *
*Entries : 100 : Total Size= 91964 bytes File Size = 42330 *
*Baskets : 3 : Basket Size= 32000 bytes Compression= 2.16 *
*............................................................................*
and also:
branch.Print()
*Br 94 :fnumPrimaryPi_0 : Int_t *
*Entries : 100 : Total Size= 1011 bytes File Size = 190 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.54 *
*............................................................................*
in case that helps?
Danilo
April 11, 2024, 5:52am
3
Hi,
I would suggest to have a look to RDataFrame , and perhaps also its AsNumpy()
function.
I hope this helps.
Cheers,
Danilo
Hi, thanks for the response. Unfortunately as mentioned the AsNumpy() function doesnt just work natively on this root file, likely because I have TObjects inside, here is an example:
SimData = ROOT.RDataFrame("a2MC", "./Data/a2MC-2024-04-10-12-48-42_300.root").AsNumpy()
and result:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/tmp/ipykernel_531/3743446081.py in <module>
----> 1 SimData = ROOT.RDataFrame("a2MC", "./Data/a2MC-2024-04-10-12-48-42_300.root").AsNumpy()
/cvmfs/sft.cern.ch/lcg/views/LCG_105a_swan/x86_64-centos7-gcc11-opt/lib/ROOT/_pythonization/_rdataframe.py in RDataFrameAsNumpy(df, columns, exclude, lazy)
230 for column in columns:
231 column_type = df.GetColumnType(column)
--> 232 result_ptrs[column] = df.Take[column_type](column)
233
234 result = AsNumpyResult(result_ptrs, columns)
TypeError: Could not instantiate Take<TEventInfo>:
Failed to instantiate "Take<TEventInfo>(std::string)"
Warning in <TClass::Init>: no dictionary for class a2mcPrimary is available
Warning in <TClass::Init>: no dictionary for class TEventInfo is available
Warning in <TClass::Init>: no dictionary for class a2mcSilHit is available
Warning in <TClass::Init>: no dictionary for class a2mcSilDIGI is available
Warning in <TClass::Init>: no dictionary for class a2mcPanelHit is available
Warning in <TClass::Init>: no dictionary for class a2mcPanelDIGI is available
Warning in <TClass::Init>: no dictionary for class a2mcMCTrack is available
Hi @lgolino ,
you will need to do a bit more work, but it’s possible, maybe you can get inspired by this tutorial: ROOT: tutorials/dataframe/df026_AsNumpyArrays.py File Reference , especially look after these lines:
# You can read-out all objects from ROOT files since these are wrapped by PyROOT
# in the Python world. However, be aware that objects other than fundamental types,
# such as complex C++ objects and not int or float, are costly to read-out.
Cheers,
Marta
Is there no way I can just select specific branches to be read out? I don’t need the TObject in python (I do need them in the file) but I am able to identify, for example, this branch:
*............................................................................*
*Br 16 :fnumPrimaryPi_0 : Int_t *
*Entries : 100 : Total Size= 1011 bytes File Size = 190 *
*Baskets : 1 : Basket Size= 32000 bytes Compression= 2.54 *
*............................................................................*
which is just a branch of ints that should be easy to convert into a dataframe, no?
Hi @lgolino ,
you can make the numpy array out of selected columns only. A simple example from the RDF documentation:
df = ROOT.RDataFrame("myTree", "myFile.root")
cols = df.AsNumpy(["x", "y"]) # retrieve columns "x" and "y" as NumPy arrays
print(cols["x"], cols["y"]) # the values of the cols dictionary are NumPy arrays
Cheers,
Marta
Ah okay, yes that works exactly as needed, thank you.
system
Closed
April 25, 2024, 12:28pm
9
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.