CMS 3D CMS Logo

CSCSegment.h
Go to the documentation of this file.
1 #ifndef CSCRecHit_CSCSegment_h
2 #define CSCRecHit_CSCSegment_h
3 
16 
17 #include <iosfwd>
18 
19 class CSCDetId;
20 
21 class CSCSegment final : public RecSegment {
22 
23 public:
24 
27 
29  CSCSegment(const std::vector<const CSCRecHit2D*>& proto_segment, LocalPoint origin,
30  LocalVector direction, const AlgebraicSymMatrix& errors, double chi2);
31 
33  ~CSCSegment() override;
34 
35  //--- Base class interface
36  CSCSegment* clone() const override { return new CSCSegment(*this); }
37 
38  LocalPoint localPosition() const override { return theOrigin; }
39  LocalError localPositionError() const override ;
40 
41  LocalVector localDirection() const override { return theLocalDirection; }
42  LocalError localDirectionError() const override ;
43 
45  AlgebraicVector parameters() const override;
46 
48  AlgebraicSymMatrix parametersError() const override { return theCovMatrix; }
49 
51  AlgebraicMatrix projectionMatrix() const override;
52 
53  std::vector<const TrackingRecHit*> recHits() const override;
54 
55  std::vector<TrackingRecHit*> recHits() override;
56 
57  double chi2() const override { return theChi2; };
58 
59  int dimension() const override { return 4; }
60 
61  int degreesOfFreedom() const override { return 2*nRecHits() - 4;}
62 
63  //--- Extension of the interface
64 
65  const std::vector<CSCRecHit2D>& specificRecHits() const { return theCSCRecHits; }
66 
67  int nRecHits() const { return theCSCRecHits.size(); }
68 
69  CSCDetId cscDetId() const { return geographicalId(); }
70 
71  void setDuplicateSegments(std::vector<CSCSegment*>& duplicates);
72 
73  bool isME11a_duplicate() const { return (!theDuplicateSegments.empty() ? true : false); }
74  // a copy of the duplicated segments (ME1/1a only)
75  const std::vector< CSCSegment> & duplicateSegments() const { return theDuplicateSegments; }
76 
77  bool testSharesAllInSpecificRecHits( const std::vector<CSCRecHit2D>& specificRecHits_1,
78  const std::vector<CSCRecHit2D>& specificRecHits_2,
80 
81  //bool sharesRecHits(CSCSegment & anotherSegment, CSCRecHit2D::SharedInputType);
82  // checks if ALL the rechits share the specific input (allWires, allStrips or all)
83  bool sharesRecHits(const CSCSegment & anotherSegment, CSCRecHit2D::SharedInputType sharesInput) const;
84  // checks if ALL the rechits share SOME wire AND SOME strip input
85  bool sharesRecHits(const CSCSegment & anotherSegment) const;
86 
87  float time() const;
88 
89  void print() const;
90 
91  private:
92 
93  std::vector<CSCRecHit2D> theCSCRecHits;
94  LocalPoint theOrigin; // in chamber frame - the GeomDet local coordinate system
95  LocalVector theLocalDirection; // in chamber frame - the GeomDet local coordinate system
96  AlgebraicSymMatrix theCovMatrix; // the covariance matrix
97  double theChi2;
99  std::vector<CSCSegment> theDuplicateSegments;// ME1/1a only
100 };
101 
102 std::ostream& operator<<(std::ostream& os, const CSCSegment& seg);
103 
104 #endif // CSCRecHit_CSCSegment_h
std::ostream & operator<<(std::ostream &os, const CSCSegment &seg)
Definition: CSCSegment.cc:190
CSCDetId cscDetId() const
Definition: CSCSegment.h:69
LocalVector localDirection() const override
Local direction.
Definition: CSCSegment.h:41
CSCSegment * clone() const override
Definition: CSCSegment.h:36
LocalError localDirectionError() const override
Error on the local direction.
Definition: CSCSegment.cc:51
const std::vector< CSCSegment > & duplicateSegments() const
Definition: CSCSegment.h:75
virtual bool sharesInput(const TrackingRecHit *other, SharedInputType what) const
std::vector< CSCSegment > theDuplicateSegments
Definition: CSCSegment.h:99
void setDuplicateSegments(std::vector< CSCSegment * > &duplicates)
Definition: CSCSegment.cc:86
bool aME11a_duplicate
Definition: CSCSegment.h:98
double theChi2
Definition: CSCSegment.h:97
AlgebraicMatrix projectionMatrix() const override
The projection matrix relates the trajectory state parameters to the segment parameters().
Definition: CSCSegment.cc:82
int dimension() const override
Dimension (in parameter space)
Definition: CSCSegment.h:59
~CSCSegment() override
Destructor.
Definition: CSCSegment.cc:28
bool testSharesAllInSpecificRecHits(const std::vector< CSCRecHit2D > &specificRecHits_1, const std::vector< CSCRecHit2D > &specificRecHits_2, CSCRecHit2D::SharedInputType) const
Definition: CSCSegment.cc:95
int nRecHits() const
Definition: CSCSegment.h:67
CLHEP::HepMatrix AlgebraicMatrix
AlgebraicSymMatrix theCovMatrix
Definition: CSCSegment.h:96
bool isME11a_duplicate() const
Definition: CSCSegment.h:73
LocalPoint localPosition() const override
Definition: CSCSegment.h:38
LocalPoint theOrigin
Definition: CSCSegment.h:94
const std::vector< CSCRecHit2D > & specificRecHits() const
Definition: CSCSegment.h:65
CLHEP::HepVector AlgebraicVector
std::vector< CSCRecHit2D > theCSCRecHits
Definition: CSCSegment.h:93
std::vector< const TrackingRecHit * > recHits() const override
Access to component RecHits (if any)
Definition: CSCSegment.cc:30
AlgebraicVector parameters() const override
Parameters of the segment, for the track fit in the order (dx/dz, dy/dz, x, y )
Definition: CSCSegment.cc:56
CSCSegment()
Default constructor.
Definition: CSCSegment.h:26
LocalVector theLocalDirection
Definition: CSCSegment.h:95
CLHEP::HepSymMatrix AlgebraicSymMatrix
double chi2() const override
Chi2 of the segment fit.
Definition: CSCSegment.h:57
Definition: errors.py:1
bool sharesRecHits(const CSCSegment &anotherSegment, CSCRecHit2D::SharedInputType sharesInput) const
Definition: CSCSegment.cc:133
DetId geographicalId() const
int degreesOfFreedom() const override
Degrees of freedom of the segment fit.
Definition: CSCSegment.h:61
LocalError localPositionError() const override
Definition: CSCSegment.cc:47
void print() const
Definition: CSCSegment.cc:186
AlgebraicSymMatrix parametersError() const override
Covariance matrix of parameters()
Definition: CSCSegment.h:48
float time() const
Definition: CSCSegment.cc:149