| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Detectors.h

Go to the documentation of this file.
00001 /* Detectors - succinct representation of the detectors
00002  *
00003  * 2008/3/11 bv@bnl.gov
00004  */
00005 
00006 #ifndef DETECTORS_H
00007 #define DETECTORS_H
00008 
00009 #include "Conventions/DetectorId.h"
00010 #include "Conventions/Site.h"
00011 
00012 #include <string>
00013 #include <ostream>
00014 
00015 namespace DayaBay {
00016 
00018     class Detector {
00019     public:
00021         Detector(Site::Site_t site,
00022                  DetectorId::DetectorId_t det);
00023 
00025         Detector(const Detector& det) { m_data = det.m_data; }
00026 
00028         Detector(int data) { m_data = data; }
00029 
00031         Detector(short int data) { m_data = data<<16; }
00032 
00034         Detector(std::string name) { m_data = (Detector::siteDetPackedFromString(name) << 16); }
00035 
00037         Detector();
00038 
00039         virtual ~Detector();
00040 
00041         // Assignment Operator
00042         Detector& operator=(const Detector& det) 
00043           { m_data = det.m_data; return *this; }
00044 
00046         void set(Site::Site_t site, DetectorId::DetectorId_t det);
00047 
00049         std::string asString() const;
00050 
00052         std::string detName() const;
00053 
00055         DetectorId::DetectorId_t detectorId() const;
00056 
00058         Site::Site_t site() const;
00059 
00063         int fullPackedData() const;
00064 
00066         short int siteDetPackedData() const;
00067         
00068         static short int siteDetPackedFromString(const std::string str);
00069 
00071         bool isAD() const { return DetectorId::isAD(this->detectorId()); }
00072 
00074         bool isWaterShield() const { return DetectorId::isWaterShield(this->detectorId()); }
00075 
00079         virtual bool bogus() const;
00080 
00081         bool operator==(const Detector& rhs) const { return this->m_data == rhs.m_data; }
00082         bool operator!=(const Detector& rhs) const { return !(*this == rhs); }
00083 
00084     protected:
00085         unsigned int m_data;
00086     };
00087 
00089     class DetectorSensor : public Detector {
00090     public:
00091         DetectorSensor() : Detector(0) {}
00092         DetectorSensor(unsigned int sensor_id,
00093                        Site::Site_t site,
00094                        DetectorId::DetectorId_t det);
00095         DetectorSensor(const DetectorSensor& sensor) : Detector(sensor) {}
00096         DetectorSensor(int data) : Detector(data) {}
00097         virtual ~DetectorSensor();
00098         // Assignment Operator
00099         DetectorSensor& operator=(const DetectorSensor& sensor) 
00100           { m_data = sensor.m_data; return *this; }
00101 
00103         int sensorId() const;
00104 
00106         virtual bool bogus() const;
00107     };
00108 
00114     class AdPmtSensor : public DetectorSensor {
00115     public:
00116         AdPmtSensor() : DetectorSensor(0) {}
00117         AdPmtSensor(int ring, int column, 
00118                     Site::Site_t site, DetectorId::DetectorId_t detid);
00119         AdPmtSensor(int ring, int column, 
00120                     Site::Site_t site, int ad_number);
00121         AdPmtSensor(const AdPmtSensor& sensor) : DetectorSensor(sensor) {}
00122         AdPmtSensor(int data) : DetectorSensor(data) {}
00123         virtual ~AdPmtSensor();
00124         // Assignment Operator
00125         AdPmtSensor& operator=(const AdPmtSensor& sensor) 
00126           { m_data = sensor.m_data; return *this; }
00127 
00129         int ring() const;
00130         
00132         int column() const;
00133 
00135         virtual bool bogus() const;
00136     };
00137 
00150     class PoolPmtSensor : public DetectorSensor {
00151     public:
00152         PoolPmtSensor() : DetectorSensor(0) {}
00153         PoolPmtSensor(int wall_number, int wall_spot, bool inward_facing,
00154                       Site::Site_t site, DetectorId::DetectorId_t detid);
00155         PoolPmtSensor(const PoolPmtSensor& sensor) : DetectorSensor(sensor) {}
00156         PoolPmtSensor(int data) : DetectorSensor(data) {}
00157         virtual ~PoolPmtSensor();
00158         // Assignment Operator
00159         PoolPmtSensor& operator=(const PoolPmtSensor& sensor) 
00160           { m_data = sensor.m_data; return *this; }
00161 
00162         int wallNumber() const;
00163         int wallSpot() const;
00164         bool inwardFacing() const;
00165 
00167         virtual bool bogus() const;
00168     };
00169 
00205     class RpcSensor : public DetectorSensor {
00206     public:
00207         RpcSensor() : DetectorSensor(0) {}
00208         RpcSensor(int panelRow, int panelColumn, int layer, int strip,
00209                   Site::Site_t site, DetectorId::DetectorId_t detid);
00210         RpcSensor(const RpcSensor& sensor) : DetectorSensor(sensor) {}
00211         RpcSensor(int data) : DetectorSensor(data) {}
00212         virtual ~RpcSensor();
00213         // Assignment Operator
00214         RpcSensor& operator=(const RpcSensor& sensor) 
00215           { m_data = sensor.m_data; return *this; }
00216 
00217         int panelRow() const;
00218         int panelColumn() const;
00219         int layer() const;
00220         int strip() const;
00221 
00223         virtual bool bogus() const;
00224     };
00225 
00226 
00227 
00228     std::ostream& operator<<(std::ostream& str, const DayaBay::Detector& det);
00229     std::ostream& operator<<(std::ostream& str, const DayaBay::DetectorSensor& detsens);
00230     std::ostream& operator<<(std::ostream& str, const DayaBay::AdPmtSensor& adsens);
00231     std::ostream& operator<<(std::ostream& str, const DayaBay::PoolPmtSensor& adsens);
00232     std::ostream& operator<<(std::ostream& str, const DayaBay::RpcSensor& rpcsens);
00233 
00234     bool operator<(const DayaBay::Detector& a, const DayaBay::Detector& b);
00235 }
00236 #endif  // DETECTORS_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:14:47 2011 for Conventions by doxygen 1.4.7