VMC
Version 2.2
Toggle main menu visibility
Loading...
Searching...
No Matches
source
include
TGeoMCBranchArrayContainer.h
Go to the documentation of this file.
1
// -----------------------------------------------------------------------
2
// Copyright (C) 2019 CERN and copyright holders of VMC Project.
3
// This software is distributed under the terms of the GNU General Public
4
// License v3 (GPL Version 3), copied verbatim in the file "LICENSE".
5
//
6
// See https://github.com/vmc-project/vmc for full licensing information.
7
// -----------------------------------------------------------------------
8
9
// Authors: Benedikt Volkel 07/03/2019
10
11
/*************************************************************************
12
* Copyright (C) 2019, Rene Brun and Fons Rademakers. *
13
* Copyright (C) 2019, ALICE Experiment at CERN. *
14
* All rights reserved. *
15
* *
16
* For the licensing terms see $ROOTSYS/LICENSE. *
17
* For the list of contributors see $ROOTSYS/README/CREDITS. *
18
*************************************************************************/
19
20
// Class TGeoMCBranchArrayContainer
21
// ---------------------
22
// cache for storing TGeoBranchArray objects
23
//
24
25
#ifndef ROOT_TGeoMCBranchArrayContainer
26
#define ROOT_TGeoMCBranchArrayContainer
27
28
#include <vector>
29
#include <memory>
30
31
#include "TGeoBranchArray.h"
32
33
class
TGeoManager;
34
35
class
TGeoMCBranchArrayContainer
{
36
public
:
38
TGeoMCBranchArrayContainer
() =
default
;
40
~TGeoMCBranchArrayContainer
() =
default
;
41
44
void
Initialize
(UInt_t maxlevels = 100, UInt_t size = 8);
46
void
InitializeFromGeoManager
(TGeoManager *man, UInt_t size = 8);
48
void
ResetCache
();
49
51
TGeoBranchArray *
GetNewGeoState
(UInt_t &userIndex);
53
const
TGeoBranchArray *
GetGeoState
(UInt_t userIndex);
55
void
FreeGeoState
(UInt_t userIndex);
57
void
FreeGeoState
(
const
TGeoBranchArray *geoState);
59
void
FreeGeoStates
();
60
61
private
:
63
TGeoMCBranchArrayContainer
(
const
TGeoMCBranchArrayContainer
&);
65
TGeoMCBranchArrayContainer
&
operator=
(
const
TGeoMCBranchArrayContainer
&);
67
void
ExtendCache
(UInt_t targetSize = 1);
68
69
private
:
71
std::vector<std::unique_ptr<TGeoBranchArray>>
fCache
;
73
UInt_t
fMaxLevels
= 100;
76
std::vector<UInt_t>
fFreeIndices
;
78
Bool_t
fIsInitialized
= kFALSE;
79
80
ClassDefNV(
TGeoMCBranchArrayContainer
, 1)
81
};
82
83
#endif
/* ROOT_TGeoMCBranchArrayContainer */
TGeoMCBranchArrayContainer::ExtendCache
void ExtendCache(UInt_t targetSize=1)
Resize the cache.
Definition
TGeoMCBranchArrayContainer.cxx:118
TGeoMCBranchArrayContainer::~TGeoMCBranchArrayContainer
~TGeoMCBranchArrayContainer()=default
Destructor.
TGeoMCBranchArrayContainer::fMaxLevels
UInt_t fMaxLevels
Maximum level of node array inside a chached state.
Definition
TGeoMCBranchArrayContainer.h:73
TGeoMCBranchArrayContainer::Initialize
void Initialize(UInt_t maxlevels=100, UInt_t size=8)
Initialize manually specifying initial number of internal TGeoBranchArray objects.
Definition
TGeoMCBranchArrayContainer.cxx:36
TGeoMCBranchArrayContainer::GetNewGeoState
TGeoBranchArray * GetNewGeoState(UInt_t &userIndex)
Get a TGeoBranchArray to set to current geo state.
Definition
TGeoMCBranchArrayContainer.cxx:58
TGeoMCBranchArrayContainer::GetGeoState
const TGeoBranchArray * GetGeoState(UInt_t userIndex)
Get a TGeoBranchArray to read the current state from.
Definition
TGeoMCBranchArrayContainer.cxx:72
TGeoMCBranchArrayContainer::fFreeIndices
std::vector< UInt_t > fFreeIndices
Provide indices in fCachedStates which are already popped and can be re-populated again.
Definition
TGeoMCBranchArrayContainer.h:76
TGeoMCBranchArrayContainer::TGeoMCBranchArrayContainer
TGeoMCBranchArrayContainer(const TGeoMCBranchArrayContainer &)
Copying kept private.
TGeoMCBranchArrayContainer::InitializeFromGeoManager
void InitializeFromGeoManager(TGeoManager *man, UInt_t size=8)
Initialize from TGeoManager to extract maxlevels.
Definition
TGeoMCBranchArrayContainer.cxx:46
TGeoMCBranchArrayContainer::fIsInitialized
Bool_t fIsInitialized
Flag if initialized.
Definition
TGeoMCBranchArrayContainer.h:78
TGeoMCBranchArrayContainer::ResetCache
void ResetCache()
Clear the internal cache.
Definition
TGeoMCBranchArrayContainer.cxx:51
TGeoMCBranchArrayContainer::FreeGeoStates
void FreeGeoStates()
Free all geo states at once but keep the container size.
Definition
TGeoMCBranchArrayContainer.cxx:109
TGeoMCBranchArrayContainer::TGeoMCBranchArrayContainer
TGeoMCBranchArrayContainer()=default
Default constructor.
TGeoMCBranchArrayContainer::operator=
TGeoMCBranchArrayContainer & operator=(const TGeoMCBranchArrayContainer &)
Assignement kept private.
TGeoMCBranchArrayContainer::FreeGeoState
void FreeGeoState(UInt_t userIndex)
Free the index of this geo state such that it can be re-used.
Definition
TGeoMCBranchArrayContainer.cxx:90
TGeoMCBranchArrayContainer::fCache
std::vector< std::unique_ptr< TGeoBranchArray > > fCache
Cache states via TGeoBranchArray.
Definition
TGeoMCBranchArrayContainer.h:71
Generated on
for VMC by
1.17.0