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>
54 typedef ROOT::Math::SMatrix<double,16,16,ROOT::Math::MatRepSym<double,16> >
SMatrixSym16;
60 typedef ROOT::Math::SMatrix<double, 4 >
SMatrix4;
61 typedef ROOT::Math::SMatrix<double,4,4,ROOT::Math::MatRepSym<double,4> >
SMatrixSym4;
64 typedef ROOT::Math::SMatrix<double,2,2,ROOT::Math::MatRepSym<double,2> >
SMatrixSym2;
67 typedef ROOT::Math::SVector<double,4>
SVector4;
73 GEMCSCSegFit(std::map<uint32_t, const CSCLayer*> csclayermap, std::map<uint32_t, const GEMEtaPartition*> gemrollmap,
const std::vector<const TrackingRecHit*>
hits) :
77 edm::LogVerbatim(
"GEMCSCSegFit") <<
"[GEMCSCSegFit::ctor] cached the csclayermap and the gemrollmap";
80 std::stringstream csclayermapss; csclayermapss<<
"[GEMCSCSegFit::ctor] :: csclayermap :: elements ["<<std::endl;
81 for(std::map<uint32_t, const CSCLayer*>::const_iterator mapIt =
csclayermap_.begin(); mapIt !=
csclayermap_.end(); ++mapIt)
83 csclayermapss<<
"[CSC DetId "<<mapIt->first<<
" ="<<
CSCDetId(mapIt->first)<<
", CSC Layer "<<mapIt->second<<
" ="<<(mapIt->second)->
id()<<
"],"<<std::endl;
85 csclayermapss<<
"]"<<std::endl;
91 std::stringstream gemetapartmapss; gemetapartmapss<<
"[GEMCSCSegFit::ctor] :: gemetapartmap :: elements ["<<std::endl;
94 gemetapartmapss<<
"[GEM DetId "<<mapIt->first<<
" ="<<
GEMDetId(mapIt->first)<<
", GEM EtaPart "<<mapIt->second<<
"],"<<std::endl;
96 gemetapartmapss<<
"]"<<std::endl;
97 std::string gemetapartmapstr = gemetapartmapss.str();
114 float xfit(
float z )
const;
115 float yfit(
float z )
const;
118 float xdev(
float x,
float z )
const;
119 float ydev (
float y,
float z )
const;
120 float Rdev(
float x,
float y,
float z )
const;
123 std::vector<const TrackingRecHit*>
hits(
void)
const {
return hits_; }
135 throw cms::Exception(
"InvalidDetId") <<
"[GEMCSCSegFit] Failed to find CSCChamber in CSCLayerMap"<< std::endl;
144 throw cms::Exception(
"InvalidDetId") <<
"[GEMCSCSegFit] Failed to find CSCLayer in CSCLayerMap" << std::endl;
150 throw cms::Exception(
"InvalidDetId") <<
"[GEMCSCSegFit] Failed to find GEMEtaPartition in GEMEtaPartMap" << std::endl;
156 throw cms::Exception(
"InvalidDetId") <<
"[GEMCSCSegFit] Failed to find Reference CSCChamber in CSCLayerMap" << std::endl;
189 std::vector<const TrackingRecHit*>
hits_;
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
ROOT::Math::SMatrix< double, 4 > SMatrix4
std::map< uint32_t, const GEMEtaPartition * > gemetapartmap_
ROOT::Math::SMatrix< double, 16, 4 > SMatrix16by4
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
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > SMatrixSym4
std::vector< const TrackingRecHit * > hits(void) const
float yfit(float z) const
AlgebraicSymMatrix flipErrors(const SMatrixSym4 &)
CLHEP::HepSymMatrix AlgebraicSymMatrix
SMatrixSym16 weightMatrix(void)
std::map< uint32_t, const CSCLayer * > csclayermap_
volatile std::atomic< bool > shutdown_flag false
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
ROOT::Math::SMatrix< double, 16, 16, ROOT::Math::MatRepSym< double, 16 > > SMatrixSym16