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 public:
25 
27  CSCSegment(const std::vector<const CSCRecHit2D*>& proto_segment,
28  LocalPoint origin,
29  LocalVector direction,
31  double chi2);
32 
34  ~CSCSegment() override;
35 
36  //--- Base class interface
37  CSCSegment* clone() const override { return new CSCSegment(*this); }
38 
39  LocalPoint localPosition() const override { return theOrigin; }
40  LocalError localPositionError() const override;
41 
42  LocalVector localDirection() const override { return theLocalDirection; }
43  LocalError localDirectionError() const override;
44 
46  AlgebraicVector parameters() const override;
47 
49  AlgebraicSymMatrix parametersError() const override { return theCovMatrix; }
50 
52  AlgebraicMatrix projectionMatrix() const override;
53 
54  std::vector<const TrackingRecHit*> recHits() const override;
55 
56  std::vector<TrackingRecHit*> recHits() override;
57 
58  double chi2() const override { return theChi2; };
59 
60  int dimension() const override { return 4; }
61 
62  int degreesOfFreedom() const override { return 2 * nRecHits() - 4; }
63 
64  //--- Extension of the interface
65 
66  const std::vector<CSCRecHit2D>& specificRecHits() const { return theCSCRecHits; }
67 
68  int nRecHits() const { return theCSCRecHits.size(); }
69 
70  CSCDetId cscDetId() const { return geographicalId(); }
71 
72  void setDuplicateSegments(std::vector<CSCSegment*>& duplicates);
73 
74  bool isME11a_duplicate() const { return (!theDuplicateSegments.empty() ? true : false); }
75  // a copy of the duplicated segments (ME1/1a only)
76  const std::vector<CSCSegment>& duplicateSegments() const { return theDuplicateSegments; }
77 
78  bool testSharesAllInSpecificRecHits(const std::vector<CSCRecHit2D>& specificRecHits_1,
79  const std::vector<CSCRecHit2D>& specificRecHits_2,
81 
82  //bool sharesRecHits(CSCSegment & anotherSegment, CSCRecHit2D::SharedInputType);
83  // checks if ALL the rechits share the specific input (allWires, allStrips or all)
84  bool sharesRecHits(const CSCSegment& anotherSegment, CSCRecHit2D::SharedInputType sharesInput) const;
85  // checks if ALL the rechits share SOME wire AND SOME strip input
86  bool sharesRecHits(const CSCSegment& anotherSegment) const;
87 
88  float time() const;
89 
90  void print() const;
91 
92 private:
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::vector< const TrackingRecHit * > recHits() const override
Access to component RecHits (if any)
Definition: CSCSegment.cc:32
bool sharesRecHits(const CSCSegment &anotherSegment, CSCRecHit2D::SharedInputType sharesInput) const
Definition: CSCSegment.cc:129
float time() const
Definition: CSCSegment.cc:144
LocalPoint localPosition() const override
Definition: CSCSegment.h:39
std::ostream & operator<<(std::ostream &os, const CSCSegment &seg)
Definition: CSCSegment.cc:181
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
bool isME11a_duplicate() const
Definition: CSCSegment.h:74
std::vector< CSCSegment > theDuplicateSegments
Definition: CSCSegment.h:99
bool aME11a_duplicate
Definition: CSCSegment.h:98
double chi2() const override
Chi2 of the segment fit.
Definition: CSCSegment.h:58
virtual bool sharesInput(const TrackingRecHit *other, SharedInputType what) const
double theChi2
Definition: CSCSegment.h:97
LocalVector localDirection() const override
Local direction.
Definition: CSCSegment.h:42
~CSCSegment() override
Destructor.
Definition: CSCSegment.cc:30
CLHEP::HepMatrix AlgebraicMatrix
AlgebraicSymMatrix theCovMatrix
Definition: CSCSegment.h:96
void print() const
Definition: CSCSegment.cc:179
int nRecHits() const
Definition: CSCSegment.h:68
int degreesOfFreedom() const override
Degrees of freedom of the segment fit.
Definition: CSCSegment.h:62
LocalPoint theOrigin
Definition: CSCSegment.h:94
LocalError localDirectionError() const override
Error on the local direction.
Definition: CSCSegment.cc:52
CLHEP::HepVector AlgebraicVector
std::vector< CSCRecHit2D > theCSCRecHits
Definition: CSCSegment.h:93
int dimension() const override
Dimension (in parameter space)
Definition: CSCSegment.h:60
DetId geographicalId() const
CSCDetId cscDetId() const
Definition: CSCSegment.h:70
CSCSegment()
Default constructor.
Definition: CSCSegment.h:24
AlgebraicSymMatrix parametersError() const override
Covariance matrix of parameters()
Definition: CSCSegment.h:49
AlgebraicMatrix projectionMatrix() const override
The projection matrix relates the trajectory state parameters to the segment parameters().
Definition: CSCSegment.cc:81
bool testSharesAllInSpecificRecHits(const std::vector< CSCRecHit2D > &specificRecHits_1, const std::vector< CSCRecHit2D > &specificRecHits_2, CSCRecHit2D::SharedInputType) const
Definition: CSCSegment.cc:92
LocalVector theLocalDirection
Definition: CSCSegment.h:95
CLHEP::HepSymMatrix AlgebraicSymMatrix
const std::vector< CSCRecHit2D > & specificRecHits() const
Definition: CSCSegment.h:66
Definition: errors.py:1
CSCSegment * clone() const override
Definition: CSCSegment.h:37
LocalError localPositionError() const override
Definition: CSCSegment.cc:48
const std::vector< CSCSegment > & duplicateSegments() const
Definition: CSCSegment.h:76
void setDuplicateSegments(std::vector< CSCSegment *> &duplicates)
Definition: CSCSegment.cc:83