00001 00010 #ifndef PointForAlignment_PointForAlignment_h 00011 #define PointForAlignment_PointForAlignment_h 00012 00013 00014 #include "DataFormats/GeometrySurface/interface/LocalError.h" 00015 00016 #include "DataFormats/GeometryVector/interface/LocalVector.h" 00017 #include "DataFormats/GeometryVector/interface/LocalPoint.h" 00018 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00019 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00020 #include <TMatrixD.h> 00021 00022 00023 00024 class PointForAlignment { 00025 00026 public: 00027 00028 00029 PointForAlignment(); 00030 00031 ~PointForAlignment(); 00032 00033 void setPointForAlignment(long , int, int, GlobalPoint , GlobalVector, LocalPoint, LocalError, LocalVector, LocalError, GlobalPoint , GlobalVector, LocalPoint , LocalVector, TMatrixD, TMatrixD); 00034 00035 long rawId(); 00036 00037 GlobalPoint globalPosition(); 00038 00039 GlobalVector globalDirection(); 00040 00041 LocalPoint localPosition(); 00042 00043 LocalVector localDirection(); 00044 00045 GlobalPoint predictedGlobalPosition(); 00046 00047 GlobalVector predictedGlobalDirection(); 00048 00049 LocalPoint predictedLocalPosition(); 00050 00051 LocalVector predictedLocalDirection(); 00052 00053 TMatrixD residual(); 00054 00055 TMatrixD errors(); 00056 00057 TMatrixD alignmentMatrix(); 00058 00059 void calculateResiduals(); 00060 00061 void calculateErrors(); 00062 00063 void calculateAlignmentCoeff(); 00064 00065 TMatrixD derivatives(); 00066 00067 bool pointIsValid(); 00068 00069 private: 00070 00071 double residualRPhi(); 00072 00073 double residualZ(); 00074 00075 double residualPhi(); 00076 00077 double residualTheta(); 00078 00079 long theRawId; 00080 int subDet; 00081 int station; 00082 00083 GlobalPoint theGlobalPosition; 00084 GlobalVector theGlobalDirection; 00085 LocalPoint theLocalPosition; 00086 LocalError theLocalPositionError; 00087 LocalVector theLocalDirection; 00088 LocalError theLocalDirectionError; 00089 GlobalPoint thePredictedGlobalPosition; 00090 GlobalVector thePredictedGlobalDirection; 00091 LocalPoint thePredictedLocalPosition; 00092 LocalVector thePredictedLocalDirection; 00093 00094 TMatrixD theDerivatives; 00095 TMatrixD theErrors; 00096 TMatrixD theResiduals; 00097 TMatrixD theResidualsError; 00098 TMatrixD theAlignmentMatrix; 00099 TMatrixD CovMatrix; 00100 TMatrixD CovMatrixInit; 00101 00102 double theResidualRPhi; 00103 double theResidualZ; 00104 double theResidualPhi; 00105 double theResidualTheta; 00106 00107 const static int NDOFTrack = 5; 00108 const static int NDOFAlign = 6; 00109 const static int NDOFChamber = 4; 00110 const static int NDOFCoor = 4; 00111 00112 bool validPoint; 00113 00114 }; 00115 00116 #endif