Warning, file /DD4hep/DDCore/include/DDSegmentation/MultiSegmentation.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef DDSEGMENTATION_MULTISEGMENTATION_H
0014 #define DDSEGMENTATION_MULTISEGMENTATION_H
0015
0016 #include <DDSegmentation/Segmentation.h>
0017
0018
0019 namespace dd4hep {
0020
0021 namespace DDSegmentation {
0022
0023
0024
0025
0026
0027
0028
0029 class MultiSegmentation : public Segmentation {
0030 public:
0031
0032 struct Entry {
0033 long key_min, key_max;
0034 Segmentation* segmentation;
0035 };
0036 typedef std::vector<Entry> Segmentations;
0037
0038 protected:
0039
0040 Segmentations m_segmentations;
0041
0042
0043 std::string m_discriminatorId;
0044
0045
0046 const BitFieldElement* m_discriminator;
0047
0048
0049 int m_debug;
0050
0051 public:
0052
0053 MultiSegmentation(const std::string& cellEncoding = "");
0054
0055
0056 MultiSegmentation(const BitFieldCoder* decoder);
0057
0058
0059 virtual ~MultiSegmentation();
0060
0061
0062 virtual void addSubsegmentation(long key_min, long key_max, Segmentation* entry);
0063
0064
0065 const Segmentation& subsegmentation(const CellID& cellID) const;
0066
0067
0068 virtual Vector3D position(const CellID& cellID) const;
0069
0070
0071 virtual CellID cellID(const Vector3D& localPosition, const Vector3D& globalPosition, const VolumeID& volumeID) const;
0072
0073
0074
0075
0076
0077
0078
0079 virtual std::vector<double> cellDimensions(const CellID& cellID) const;
0080
0081
0082 const std::string& discriminatorName() const { return m_discriminatorId; }
0083
0084
0085 const BitFieldElement* discriminator() const { return m_discriminator; }
0086
0087
0088 virtual void setDecoder(const BitFieldCoder* decoder);
0089
0090
0091 const Segmentations& subSegmentations() const { return m_segmentations; }
0092
0093 };
0094
0095 }
0096 }
0097
0098 #endif