18 #ifndef ROOT_TGeoMCBranchArrayContainer
19 #define ROOT_TGeoMCBranchArrayContainer
28 class TGeoMCBranchArrayContainer {
31 TGeoMCBranchArrayContainer() =
default;
33 ~TGeoMCBranchArrayContainer() =
default;
37 void Initialize(UInt_t maxlevels = 100, UInt_t size = 8);
39 void InitializeFromGeoManager(TGeoManager *man, UInt_t size = 8);
44 TGeoBranchArray *GetNewGeoState(UInt_t &userIndex);
46 const TGeoBranchArray *GetGeoState(UInt_t userIndex);
48 void FreeGeoState(UInt_t userIndex);
50 void FreeGeoState(
const TGeoBranchArray *geoState);
56 TGeoMCBranchArrayContainer(
const TGeoMCBranchArrayContainer &);
58 TGeoMCBranchArrayContainer &operator=(
const TGeoMCBranchArrayContainer &);
60 void ExtendCache(UInt_t targetSize = 1);
64 std::vector<std::unique_ptr<TGeoBranchArray>> fCache;
66 UInt_t fMaxLevels = 100;
69 std::vector<UInt_t> fFreeIndices;
71 Bool_t fIsInitialized = kFALSE;
73 ClassDefNV(TGeoMCBranchArrayContainer, 1)