forked from mkrzewic/AliceO2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDetector.h
More file actions
81 lines (62 loc) · 2.96 KB
/
Detector.h
File metadata and controls
81 lines (62 loc) · 2.96 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/// \file UpgradeSegmentationPixel.h
/// \brief Definition of the UpgradeSegmentationPixel class
#ifndef ALICEO2_BASE_DETECTOR_H_
#define ALICEO2_BASE_DETECTOR_H_
#include "FairDetector.h" // for FairDetector
#include "Rtypes.h" // for Float_t, Int_t, Double_t, Detector::Class, etc
namespace AliceO2 {
namespace Base {
/// This is the basic class for any AliceO2 detector module, whether it is
/// sensitive or not. Detector classes depend on this.
class Detector : public FairDetector {
public:
Detector(const char* name, Bool_t Active, Int_t DetId = 0);
/// Default Constructor
Detector();
/// Default Destructor
virtual ~Detector();
// Module composition
virtual void Material(Int_t imat, const char* name, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl,
Float_t* buf = 0, Int_t nwbuf = 0) const;
virtual void Mixture(Int_t imat, const char* name, Float_t* a, Float_t* z, Float_t dens, Int_t nlmat,
Float_t* wmat) const;
virtual void Medium(Int_t numed, const char* name, Int_t nmat, Int_t isvol, Int_t ifield, Float_t fieldm,
Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin, Float_t* ubuf = 0,
Int_t nbuf = 0) const;
/// Define a rotation matrix. angles are in degrees.
/// \param nmat on output contains the number assigned to the rotation matrix
/// \param theta1 polar angle for axis I
/// \param theta2 polar angle for axis II
/// \param theta3 polar angle for axis III
/// \param phi1 azimuthal angle for axis I
/// \param phi2 azimuthal angle for axis II
/// \param phi3 azimuthal angle for axis III
virtual void Matrix(Int_t& nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2, Float_t theta3,
Float_t phi3) const;
static void setDensityFactor(Float_t density)
{
mDensityFactor = density;
}
static Float_t getDensityFactor()
{
return mDensityFactor;
}
/// Sets per wrapper volume parameters
virtual void defineWrapperVolume(Int_t id, Double_t rmin, Double_t rmax, Double_t zspan);
/// Books arrays for wrapper volumes
virtual void setNumberOfWrapperVolumes(Int_t n);
virtual void defineLayer(Int_t nlay, Double_t phi0, Double_t r, Double_t zlen, Int_t nladd, Int_t nmod,
Double_t lthick = 0., Double_t dthick = 0., UInt_t detType = 0, Int_t buildFlag = 0);
virtual void defineLayerTurbo(Int_t nlay, Double_t phi0, Double_t r, Double_t zlen, Int_t nladd, Int_t nmod,
Double_t width, Double_t tilt, Double_t lthick = 0., Double_t dthick = 0.,
UInt_t detType = 0, Int_t buildFlag = 0);
protected:
Detector(const Detector& origin);
Detector& operator=(const Detector&);
static Float_t mDensityFactor; //! factor that is multiplied to all material densities (ONLY for
// systematic studies)
ClassDef(Detector, 1) // Base class for ALICE Modules
};
}
}
#endif