1 #ifndef GEMCSCSegment_GEMCSCSegFit_h
2 #define GEMCSCSegment_GEMCSCSegFit_h
41 #include <Math/Functions.h>
42 #include <Math/SVector.h>
43 #include <Math/SMatrix.h>
52 typedef ROOT::Math::SMatrix<double, 16, 16, ROOT::Math::MatRepSym<double, 16> >
SMatrixSym16;
58 typedef ROOT::Math::SMatrix<double, 4>
SMatrix4;
59 typedef ROOT::Math::SMatrix<double, 4, 4, ROOT::Math::MatRepSym<double, 4> >
SMatrixSym4;
62 typedef ROOT::Math::SMatrix<double, 2, 2, ROOT::Math::MatRepSym<double, 2> >
SMatrixSym2;
65 typedef ROOT::Math::SVector<double, 4>
SVector4;
71 std::map<uint32_t, const GEMEtaPartition*> gemrollmap,
72 const std::vector<const TrackingRecHit*>
hits)
80 edm::LogVerbatim(
"GEMCSCSegFit") <<
"[GEMCSCSegFit::ctor] cached the csclayermap and the gemrollmap";
83 std::stringstream csclayermapss;
84 csclayermapss <<
"[GEMCSCSegFit::ctor] :: csclayermap :: elements [" << std::endl;
87 csclayermapss <<
"[CSC DetId " << mapIt->first <<
" =" <<
CSCDetId(mapIt->first) <<
", CSC Layer "
88 << mapIt->second <<
" =" << (mapIt->second)->
id() <<
"]," << std::endl;
90 csclayermapss <<
"]" << std::endl;
96 std::stringstream gemetapartmapss;
97 gemetapartmapss <<
"[GEMCSCSegFit::ctor] :: gemetapartmap :: elements [" << std::endl;
98 for (std::map<uint32_t, const GEMEtaPartition*>::const_iterator mapIt =
gemetapartmap_.begin();
101 gemetapartmapss <<
"[GEM DetId " << mapIt->first <<
" =" <<
GEMDetId(mapIt->first) <<
", GEM EtaPart "
102 << mapIt->second <<
"]," << std::endl;
104 gemetapartmapss <<
"]" << std::endl;
105 std::string gemetapartmapstr = gemetapartmapss.str();
122 float xfit(
float z)
const;
123 float yfit(
float z)
const;
126 float xdev(
float x,
float z)
const;
127 float ydev(
float y,
float z)
const;
128 float Rdev(
float x,
float y,
float z)
const;
131 std::vector<const TrackingRecHit*>
hits(
void)
const {
return hits_; }
142 throw cms::Exception(
"InvalidDetId") <<
"[GEMCSCSegFit] Failed to find CSCChamber in CSCLayerMap" << std::endl;
150 throw cms::Exception(
"InvalidDetId") <<
"[GEMCSCSegFit] Failed to find CSCLayer in CSCLayerMap" << std::endl;
158 <<
"[GEMCSCSegFit] Failed to find GEMEtaPartition in GEMEtaPartMap" << std::endl;
166 <<
"[GEMCSCSegFit] Failed to find Reference CSCChamber in CSCLayerMap" << std::endl;
196 std::vector<const TrackingRecHit*>
hits_;
Log< level::Info, true > LogVerbatim
SMatrix16by4 derivativeMatrix(void)
void setScaleXError(double factor)
float xdev(float x, float z) const
std::vector< const TrackingRecHit * > hits_
float ydev(float y, float z) const
const CSCLayer * csclayer(uint32_t id) const
float Rdev(float x, float y, float z) const
std::map< uint32_t, const GEMEtaPartition * > gemetapartmap_
float xfit(float z) const
ROOT::Math::SVector< double, 4 > SVector4
LocalVector localdir() const
double scaleXError(void) const
AlgebraicSymMatrix covarianceMatrix(void)
const CSCChamber * refcscchamber() const
ROOT::Math::SMatrix< double, 2, 2, ROOT::Math::MatRepSym< double, 2 > > SMatrixSym2
std::vector< const TrackingRecHit * > hits(void) const
float yfit(float z) const
AlgebraicSymMatrix flipErrors(const SMatrixSym4 &)
ROOT::Math::SMatrix< double, 16, 4 > SMatrix16by4
ROOT::Math::SMatrix< double, 4 > SMatrix4
CLHEP::HepSymMatrix AlgebraicSymMatrix
SMatrixSym16 weightMatrix(void)
ROOT::Math::SMatrix< double, 16, 16, ROOT::Math::MatRepSym< double, 16 > > SMatrixSym16
std::map< uint32_t, const CSCLayer * > csclayermap_
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > SMatrixSym4
LocalPoint intercept() const
const CSCChamber * refcscchamber_
GEMCSCSegFit(std::map< uint32_t, const CSCLayer * > csclayermap, std::map< uint32_t, const GEMEtaPartition * > gemrollmap, const std::vector< const TrackingRecHit * > hits)
const CSCChamber * cscchamber(uint32_t id) const
const GEMEtaPartition * gemetapartition(uint32_t id) const