File indexing completed on 2024-09-07 04:36:27
0001 #ifndef GEOMETRY_CALOGEOMETRY_CALOCELLCROSSING_H
0002 #define GEOMETRY_CALOGEOMETRY_CALOCELLCROSSING_H 1
0003
0004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0005 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0006
0007 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
0008
0009 #include <vector>
0010 #include <string>
0011
0012 class CaloCellCrossing {
0013 public:
0014 typedef std::vector<DetId> DetIds;
0015 typedef std::vector<GlobalPoint> Points;
0016 typedef std::vector<double> Lengths;
0017
0018 CaloCellCrossing(const GlobalPoint& gp,
0019 const GlobalVector& gv,
0020 const DetIds* di,
0021 const CaloSubdetectorGeometry* sg,
0022 DetId::Detector det,
0023 int subdet,
0024 double small = 1.e-10,
0025 bool onewayonly = false);
0026
0027 virtual ~CaloCellCrossing() {}
0028
0029 const GlobalPoint& gp() const { return m_gp; }
0030 const GlobalVector& gv() const { return m_gv; }
0031
0032 const DetIds& detIds() const { return m_detId; }
0033 const Points& centers() const { return m_ctr; }
0034 const Points& entrances() const { return m_entr; }
0035 const Points& exits() const { return m_exit; }
0036 const Lengths& lengths() const { return m_len; }
0037
0038 CaloCellCrossing(const CaloCellCrossing&) = delete;
0039 CaloCellCrossing operator=(const CaloCellCrossing&) = delete;
0040
0041 private:
0042 GlobalPoint m_gp;
0043 GlobalVector m_gv;
0044
0045 DetIds m_detId;
0046
0047 Points m_ctr;
0048
0049 Points m_entr;
0050 Points m_exit;
0051 Lengths m_len;
0052 };
0053
0054 std::ostream& operator<<(std::ostream& s, const CaloCellCrossing& cell);
0055
0056 #endif