Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGeoRegion.cxx
Go to the documentation of this file.
1// @(#)root/geom:$Id$
2// Author: Andrei Gheata 18/10/17
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12/** \class TGeoRegion
13\ingroup Geometry_classes
14
15Regions are groups of volumes having a common set of user tracking cuts.
16
17Class wrapper for regions used by Monte Carlo packages
18A region is composed by a list of logical volumes and defines a set
19of cuts. Used mainly to transport region information stored in
20GDML format to the clients requiring it from the transient geometry.
21
22*/
23
24#include "TGeoRegion.h"
25
26#include "TGeoManager.h"
27
30
31////////////////////////////////////////////////////////////////////////////////
32/// Region destructor.
33
35{
36 fCuts.Delete();
37}
38
39////////////////////////////////////////////////////////////////////////////////
40/// Region copy constructor.
41TGeoRegion::TGeoRegion(const TGeoRegion &other) : TNamed(other), fVolumes(other.fVolumes)
42{
43 for (int i = 0; i < other.GetNcuts(); ++i)
44 AddCut(*other.GetCut(i));
45}
46
47////////////////////////////////////////////////////////////////////////////////
48/// Assignment operator.
50{
51 if (&other != this) {
52 TNamed::operator=(other);
53 fVolumes.operator=(other.fVolumes);
54 for (int i = 0; i < other.GetNcuts(); ++i)
55 AddCut(*(TGeoRegionCut *)other.fCuts.At(i));
56 }
57 return *this;
58}
59
60////////////////////////////////////////////////////////////////////////////////
61/// Add an existing volume to the region.
62bool TGeoRegion::AddVolume(const char *name)
63{
64 if (!gGeoManager)
65 return kFALSE;
67 if (!vol)
68 return kFALSE;
69 AddVolume(vol);
70 return kTRUE;
71}
72
73////////////////////////////////////////////////////////////////////////////////
74/// Add cut to the region.
75void TGeoRegion::AddCut(const char *name, Double_t cut)
76{
77 fCuts.Add(new TGeoRegionCut(name, cut));
78}
79
80////////////////////////////////////////////////////////////////////////////////
81/// Add an identical cut to the region.
82void TGeoRegion::AddCut(const TGeoRegionCut &regioncut)
83{
84 fCuts.Add(new TGeoRegionCut(regioncut));
85}
86
87////////////////////////////////////////////////////////////////////////////////
88/// Print region info
90{
91 printf("== Region: %s\n", GetName());
92 printf(" volumes: ");
93 for (int i = 0; i < GetNvolumes(); ++i)
94 printf("%s ", GetVolume(i)->GetName());
95 printf("\n");
96 for (int i = 0; i < GetNcuts(); ++i)
97 printf(" %s value %g\n", GetCut(i)->GetName(), GetCut(i)->GetCut());
98}
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
const char Option_t
Definition RtypesCore.h:66
#define ClassImp(name)
Definition Rtypes.h:377
char name[80]
Definition TGX11.cxx:110
R__EXTERN TGeoManager * gGeoManager
TGeoVolume * GetVolume(const char *name) const
Search for a named volume. All trailing blanks stripped.
Double_t GetCut() const
Definition TGeoRegion.h:30
Regions are groups of volumes having a common set of user tracking cuts.
Definition TGeoRegion.h:36
TGeoRegionCut * GetCut(int i) const
Definition TGeoRegion.h:58
TGeoRegion & operator=(const TGeoRegion &other)
Assignment operator.
TObjArray fVolumes
Definition TGeoRegion.h:38
~TGeoRegion() override
Region destructor.
void AddCut(const char *name, Double_t cut)
Add cut to the region.
TObjArray fCuts
Definition TGeoRegion.h:39
int GetNvolumes() const
Definition TGeoRegion.h:51
void Print(Option_t *option="") const override
Print region info.
TGeoVolume * GetVolume(int i) const
Definition TGeoRegion.h:52
void AddVolume(TGeoVolume *vol)
Definition TGeoRegion.h:49
int GetNcuts() const
Definition TGeoRegion.h:57
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:43
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
const char * GetName() const override
Returns name of object.
Definition TNamed.h:47
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
Definition TNamed.cxx:51
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
TObject * At(Int_t idx) const override
Definition TObjArray.h:164
void Add(TObject *obj) override
Definition TObjArray.h:68