CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MSLayer.h
Go to the documentation of this file.
1 #ifndef MSLayer_H
2 #define MSLayer_H
7 #include <iosfwd>
8 
9 class DetLayer;
10 class MSLayersKeeper;
11 
12 class MSLayer {
13 public:
15 
16  struct DataX0 {
17  DataX0(const MSLayersKeeper *al = 0)
18  : hasX0(false), allLayers(al) { }
19  DataX0(float ax0, float asX0D, float aCotTheta)
20  : hasX0(true), hasFSlope(false), x0(ax0), sumX0D(asX0D),
21  cotTheta(aCotTheta), allLayers(0) { }
22  void setForwardSumX0DSlope(float aSlope)
23  { hasFSlope= true; slopeSumX0D = aSlope; }
27  };
28 
29 public:
30  MSLayer(const DetLayer* layer, DataX0 dataX0 = DataX0(0) );
31  MSLayer() { }
32 
34  float halfThickness = 0.,
35  DataX0 dataX0 = DataX0(0) );
36 
37  const Range & range() const { return theRange; }
38 
39  const GeomDetEnumerators::Location & face() const { return theFace; }
40  float position() const { return thePosition; }
41  float halfThickness() const { return theHalfThickness; }
42 
43  float x0(float cotTheta) const;
44  float sumX0D(float cotTheta) const;
45 
46  bool operator== (const MSLayer &o) const;
47  bool operator< (const MSLayer &o) const;
48  std::pair<PixelRecoPointRZ,bool> crossing(
49  const PixelRecoLineRZ &line) const;
50  float distance(const PixelRecoPointRZ & point) const;
51 
52 private:
53 
55  float thePosition;
59 
60  friend struct MSLayersKeeper;
61  friend std::ostream& operator<<( std::ostream& s, const MSLayer & l);
62 
63 };
64 
65 std::ostream& operator<<( std::ostream& s, const MSLayer & l);
66 std::ostream& operator<<( std::ostream& s, const MSLayer::DataX0 & d);
67 #endif
const MSLayersKeeper * allLayers
Definition: MSLayer.h:26
float sumX0D(float cotTheta) const
Definition: MSLayer.cc:169
float theHalfThickness
Definition: MSLayer.h:57
Range theRange
Definition: MSLayer.h:56
float x0(float cotTheta) const
Definition: MSLayer.cc:151
std::ostream & operator<<(std::ostream &out, const ALILine &li)
Definition: ALILine.cc:187
const Range & range() const
Definition: MSLayer.h:37
bool hasFSlope
Definition: MSLayer.h:24
const GeomDetEnumerators::Location & face() const
Definition: MSLayer.h:39
float position() const
Definition: MSLayer.h:40
float halfThickness() const
Definition: MSLayer.h:41
DataX0(float ax0, float asX0D, float aCotTheta)
Definition: MSLayer.h:19
bool operator<(const MSLayer &o) const
Definition: MSLayer.cc:138
DataX0 theX0Data
Definition: MSLayer.h:58
float distance(const PixelRecoPointRZ &point) const
Definition: MSLayer.cc:107
MSLayer()
Definition: MSLayer.h:31
bool operator==(const MSLayer &o) const
Definition: MSLayer.cc:70
float cotTheta
Definition: MSLayer.h:25
std::pair< PixelRecoPointRZ, bool > crossing(const PixelRecoLineRZ &line) const
Definition: MSLayer.cc:76
part
Definition: HCALResponse.h:21
float thePosition
Definition: MSLayer.h:55
DataX0(const MSLayersKeeper *al=0)
Definition: MSLayer.h:17
friend std::ostream & operator<<(std::ostream &s, const MSLayer &l)
void setForwardSumX0DSlope(float aSlope)
Definition: MSLayer.h:22
float slopeSumX0D
Definition: MSLayer.h:25
GeomDetEnumerators::Location theFace
Definition: MSLayer.h:54
PixelRecoRange< float > Range
Definition: MSLayer.h:14
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
float sumX0D
Definition: MSLayer.h:25