1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#ifndef DDI_Material_h
#define DDI_Material_h
#include <iostream>
#include <vector>
#include <utility>
#include "DetectorDescription/Core/interface/DDMaterial.h"
namespace DDI {
class Material {
public:
Material() {}
Material(double z, double a, double d) : z_(z), a_(a), density_(d) {}
Material(double d) : z_(0), a_(0), density_(d) {}
virtual ~Material() {}
int noOfConsituents() const;
double a() const { return a_; }
double z() const { return z_; }
double density() const { return density_; }
double& a() { return a_; }
double& z() { return z_; }
double& density() { return density_; }
int addMaterial(const DDMaterial& m, double fm) {
composites_.emplace_back(std::make_pair(m, fm));
return noOfConstituents();
}
const DDMaterial::FractionV::value_type& constituent(int i) const { return composites_[i]; }
DDMaterial::FractionV::value_type& constituent(int i) { return composites_[i]; }
int noOfConstituents() const { return composites_.size(); }
protected:
double z_, a_, density_;
DDMaterial::FractionV composites_;
};
} // namespace DDI
#endif
|