00001 #ifndef CALIBRATION_HH
00002 #define CALIBRATION_HH
00003
00013
00014 #include "CLHEP/Units/SystemOfUnits.h"
00015 #include "Conventions/Detectors.h"
00016 #include <string>
00017
00018 namespace DayaBay {
00019
00020 namespace Calibration {
00021
00022 namespace SourceType {
00023 enum SourceType_t {
00024 kUnknown = 0,
00025 kLED = 1,
00026 kGe68 = 2,
00027 kAmC_Co60 = 3
00028 };
00029
00030
00031 const char* AsString(SourceType_t site);
00032 SourceType_t FromString(const char* str);
00033 }
00034
00035 namespace Location {
00036 enum Location_t {
00037 kUnknown = 0,
00038 kAcuA_Center = 1,
00039 kAcuB_GdlsEdge = 2,
00040 kAcuC_GammaCatcher = 3,
00041 kAdWallUpper = 4,
00042 kAdWallCenter = 5,
00043 kAdWallLower = 6
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 };
00054
00055
00056 const char* AsString(Location_t site);
00057 Location_t FromString(const char* str);
00058 }
00059
00060 static const double AD_AxisA_r = 0.0 * CLHEP::mm;
00061 static const double AD_AxisB_r = 1350.0 * CLHEP::mm;
00062 static const double AD_AxisC_r = 1772.5 * CLHEP::mm;
00063 static const double AD_Wall_r = 2195.5 * CLHEP::mm;
00064 static const double AD_AxisA_phi = 0.0 * CLHEP::degree;
00065 static const double AD_AxisB_phi = 112.5 * CLHEP::degree;
00066 static const double AD_AxisC_phi = 292.5 * CLHEP::degree;
00067 static const double AD_Wall_phi = 240.0 * CLHEP::degree;
00068 static const double AD_WallUpper_z = 1491.0 * CLHEP::mm;
00069 static const double AD_WallCenter_z = 0.0 * CLHEP::mm;
00070 static const double AD_WallLower_z = -1491.0 * CLHEP::mm;
00071
00072 }
00073
00074 class CalibSourceId : public Detector {
00075 public:
00076 CalibSourceId() : Detector(0) {}
00077 CalibSourceId(Calibration::SourceType::SourceType_t type,
00078 Calibration::Location::Location_t location,
00079 Site::Site_t site,
00080 DetectorId::DetectorId_t det);
00081 CalibSourceId(const std::string& name);
00082 CalibSourceId(const CalibSourceId& source) : Detector(source) {}
00083 CalibSourceId(int data) : Detector(data) {}
00084 virtual ~CalibSourceId();
00085
00086 CalibSourceId& operator=(const CalibSourceId& id)
00087 { m_data = id.m_data; return *this; }
00088
00089
00090 Calibration::SourceType::SourceType_t type() const;
00091
00092
00093 Calibration::Location::Location_t location() const;
00094
00095
00096 bool isWallMounted() const;
00097
00098
00099 std::string name() const;
00100
00101
00102
00103 double nominalX() const;
00104 double nominalY() const;
00105 double nominalZ() const;
00106
00107 };
00108
00109 std::ostream& operator<<(std::ostream& str,
00110 const DayaBay::CalibSourceId& sourceId);
00111 }
00112
00113 #endif