CMS 3D CMS Logo

MuonChamberMatch.cc
Go to the documentation of this file.
8 #include <cmath>
9 using namespace reco;
10 
12  if (detector() == MuonSubdetId::DT) { // DT
13  DTChamberId segId(id.rawId());
14  return segId.station();
15  }
16  if (detector() == MuonSubdetId::CSC) { // CSC
17  CSCDetId segId(id.rawId());
18  return segId.station();
19  }
20  if (detector() == MuonSubdetId::RPC) { //RPC
21  RPCDetId segId(id.rawId());
22  return segId.station();
23  }
24  if (detector() == MuonSubdetId::GEM) { //GEM
25  GEMDetId segId(id.rawId());
26  return segId.station();
27  }
28  if (detector() == MuonSubdetId::ME0) { //ME0
29  ME0DetId segId(id.rawId());
30  return segId.station();
31  }
32  return -1; // is this appropriate? fix this
33 }
34 
35 std::pair<float, float> MuonChamberMatch::getDistancePair(float edgeX, float edgeY, float xErr, float yErr) const {
36  if (edgeX > 9E5 && edgeY > 9E5 && xErr > 9E5 && yErr > 9E5) // there is no track
37  return std::make_pair(999999, 999999);
38 
39  float distance = 999999;
40  float error = 999999;
41 
42  if (edgeX < 0 && edgeY < 0) {
43  if (edgeX < edgeY) {
44  distance = edgeY;
45  error = yErr;
46  } else {
47  distance = edgeX;
48  error = xErr;
49  }
50  }
51  if (edgeX < 0 && edgeY > 0) {
52  distance = edgeY;
53  error = yErr;
54  }
55  if (edgeX > 0 && edgeY < 0) {
56  distance = edgeX;
57  error = xErr;
58  }
59  if (edgeX > 0 && edgeY > 0) {
61  error = distance ? sqrt(edgeX * edgeX * xErr * xErr + edgeY * edgeY * yErr * yErr) / fabs(distance) : 0;
62  }
63 
64  return std::make_pair(distance, error);
65 }
MuonSubdetId::GEM
static constexpr int GEM
Definition: MuonSubdetId.h:14
MuonSubdetId::CSC
static constexpr int CSC
Definition: MuonSubdetId.h:12
RPCDetId::station
int station() const
Definition: RPCDetId.h:78
reco::MuonChamberMatch::station
int station() const
Definition: MuonChamberMatch.cc:11
ME0DetId.h
RPCDetId
Definition: RPCDetId.h:16
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
relativeConstraints.error
error
Definition: relativeConstraints.py:53
CSCDetId.h
reco::MuonChamberMatch::detector
int detector() const
Definition: MuonChamberMatch.h:31
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
MuonSubdetId::DT
static constexpr int DT
Definition: MuonSubdetId.h:11
DTChamberId.h
RPCDetId.h
GEMDetId
Definition: GEMDetId.h:18
CSCDetId
Definition: CSCDetId.h:26
ME0DetId::station
int station() const
Definition: ME0DetId.h:58
reco::MuonChamberMatch::xErr
float xErr
Definition: MuonChamberMatch.h:21
ME0DetId
Definition: ME0DetId.h:16
MuonSubdetId::ME0
static constexpr int ME0
Definition: MuonSubdetId.h:15
MuonSubdetId.h
reco::MuonChamberMatch::yErr
float yErr
Definition: MuonChamberMatch.h:22
reco::MuonChamberMatch::edgeY
float edgeY
Definition: MuonChamberMatch.h:18
GEMDetId.h
MuonSubdetId::RPC
static constexpr int RPC
Definition: MuonSubdetId.h:13
reco::MuonChamberMatch::edgeX
float edgeX
Definition: MuonChamberMatch.h:17
GEMDetId::station
constexpr int station() const
Definition: GEMDetId.h:179
DTChamberId
Definition: DTChamberId.h:14
CSCDetId::station
int station() const
Definition: CSCDetId.h:79
reco::MuonChamberMatch::getDistancePair
std::pair< float, float > getDistancePair(float edgeX, float edgeY, float xErr, float yErr) const
Definition: MuonChamberMatch.cc:35
HLT_FULL_cff.distance
distance
Definition: HLT_FULL_cff.py:7746
DTChamberId::station
int station() const
Return the station number.
Definition: DTChamberId.h:42
MuonChamberMatch.h