Hello, the output of a Geant4 simulation is very big (41GB for 10^9 primary events) then I’m writing a ROOT macro to copy the Tree branches in several root files.
The macro should take the tree in Sim.root file and store
- Edep branch in SimEdep.root file
- Zint branch in SimZint.root file
- Egamma branch in SimEgamma.root file
- Egammacascade branch in SimEgammacascade.root file
- Pgx+Pgy+Pgz branches in SimPgamma.root file
I wrote the macro, but it crashes
root [0] .x treefilter.cpp
TFile** Sim.root
TFile* Sim.root
KEY: TH1D ParticleCodes;1
KEY: TH1D hGeTotE0;1
KEY: TH1D hGeTotEGauss0;1
KEY: TH1D hGeTotE1;1
KEY: TH1D hGeTotEGauss1;1
KEY: TH1D SecGammaKinE;1
KEY: TH2D SecGammaKinEVSParKinE;1
KEY: TH2D ParPosZVSSecKinE;1
KEY: TH2D ParPosZVSParKinE;1
KEY: TH1D SrcGGCosTheta;1
KEY: TH1D ParKinEne;1
KEY: TH1D ParPosZ;1
KEY: TH2D KinEFragIon1VSKinEFragIon2;1
KEY: TH2D thetaFragIon1VSKinEFragIon1;1
KEY: TH2D thetaFragIon2VSKinEFragIon2;1
KEY: TH2D KinECapGammaVSKinECapFragIon;1
KEY: TH2D thetaCapGammaVSKinECapGamma;1
KEY: TH2D thetaCapFragIonVSKinECapFragIon;1
KEY: TH2D PrimaryXvsY;1
KEY: TH1D PrimaryZ;1
KEY: TH1D PrimarykinE;1
KEY: TH1D PrimaryDiv;1
KEY: TTree Tree1;1 RawData
Start Edep copy
==========================================
=============== STACKTRACE ===============
==========================================
================ Thread 0 ================
libCling!TClingCallbacks::PrintStackTrace()
libCling!cling::runtime::internal::EvaluateDynamicExpression()
0x693154e ??
libCling!cling::Value::print()
libCling!cling::runtime::internal::EvaluateDynamicExpression()
libCling!cling::runtime::internal::EvaluateDynamicExpression()
libCling!cling::runtime::internal::EvaluateDynamicExpression()
libCling!cling::runtime::internal::setValueWithAlloc()
libCling!cling::runtime::internal::setValueWithAlloc()
libCling!cling::runtime::internal::setValueWithAlloc()
libCling!cling::runtime::internal::setValueWithAlloc()
libCling!cling::runtime::internal::setValueWithAlloc()
libCling!cling::runtime::internal::setValueWithAlloc()
libCling!TClingLookupHelper__ExistingTypeCheck()
libCling!TCling::ProcessLine()
libCling!TCling::ProcessLineSynch()
libCore!TApplication::ExecuteFile()
libCore!TApplication::ProcessFile()
libCore!TApplication::ProcessLine()
libRint!TRint::ProcessLineNr()
libRint!TRint::HandleTermInput()
libCore!TWinNTSystem::DispatchOneEvent()
libCore!TSystem::InnerLoop()
libCore!TSystem::Run()
libCore!TApplication::Run()
libRint!TRint::Run()
root!Init_thread_footer()
root!Init_thread_footer()
KERNEL32!BaseThreadInitThunk()
ntdll!RtlGetFullPathName_UEx()
ntdll!RtlGetFullPathName_UEx()
================ Thread 1 ================
ntdll!ZwWaitForWorkViaWorkerFactory()
KERNEL32!BaseThreadInitThunk()
ntdll!RtlGetFullPathName_UEx()
ntdll!RtlGetFullPathName_UEx()
================ Thread 2 ================
ntdll!ZwWaitForWorkViaWorkerFactory()
KERNEL32!BaseThreadInitThunk()
ntdll!RtlGetFullPathName_UEx()
ntdll!RtlGetFullPathName_UEx()
================ Thread 3 ================
ntdll!ZwWaitForWorkViaWorkerFactory()
KERNEL32!BaseThreadInitThunk()
ntdll!RtlGetFullPathName_UEx()
ntdll!RtlGetFullPathName_UEx()
================ Thread 4 ================
ntdll!ZwDelayExecution()
KERNELBASE!SleepEx()
KERNELBASE!Sleep()
libCore!TWinNTSystem::TimerThread()
libCore!TWinNTSystem::ThreadStub()
KERNEL32!BaseThreadInitThunk()
ntdll!RtlGetFullPathName_UEx()
ntdll!RtlGetFullPathName_UEx()
================ Thread 5 ================
win32u!NtUserGetMessage()
libCore!TWinNTSystem::GetProcInfo()
KERNEL32!BaseThreadInitThunk()
ntdll!RtlGetFullPathName_UEx()
ntdll!RtlGetFullPathName_UEx()
================ Thread 6 ================
ntdll!ZwWaitForWorkViaWorkerFactory()
KERNEL32!BaseThreadInitThunk()
ntdll!RtlGetFullPathName_UEx()
ntdll!RtlGetFullPathName_UEx()
================ Thread 7 ================
ntdll!ZwWaitForWorkViaWorkerFactory()
KERNEL32!BaseThreadInitThunk()
ntdll!RtlGetFullPathName_UEx()
ntdll!RtlGetFullPathName_UEx()
==========================================
============= END STACKTRACE =============
==========================================
treefilter.cpp (1.9 KB)