00001 #ifndef SiStripRecHitsValid_h 00002 #define SiStripRecHitsValid_h 00003 00004 /* \class SiStripRecHitsValid 00005 * 00006 * Analyzer to validate RecHits in the Strip tracker 00007 * 00008 * \author Patrizia Azzi, INFN PD 00009 * 00010 * \version 1st version May 2006 00011 * 00012 ************************************************************/ 00013 00014 #include "FWCore/Framework/interface/Frameworkfwd.h" 00015 #include "FWCore/Framework/interface/EDAnalyzer.h" 00016 #include "FWCore/Framework/interface/Event.h" 00017 #include "FWCore/Framework/interface/EventSetup.h" 00018 #include "FWCore/Framework/interface/ESHandle.h" 00019 //only mine 00020 #include "DataFormats/Common/interface/Handle.h" 00021 #include "FWCore/Framework/interface/MakerMacros.h" 00022 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00023 #include "DataFormats/Common/interface/EDProduct.h" 00024 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00025 00026 //DQM services for histogram 00027 #include "DQMServices/Core/interface/DQMStore.h" 00028 00029 #include "FWCore/ServiceRegistry/interface/Service.h" 00030 00031 //--- for SimHit association 00032 #include "SimDataFormats/TrackingHit/interface/PSimHit.h" 00033 #include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h" 00034 00035 #include "Geometry/CommonTopologies/interface/PixelTopology.h" 00036 #include "Geometry/CommonTopologies/interface/StripTopology.h" 00037 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h" 00038 #include "Geometry/CommonDetUnit/interface/GeomDetType.h" 00039 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" 00040 #include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h" 00041 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00042 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" 00043 #include "Geometry/TrackerNumberingBuilder/interface/GeometricDet.h" 00044 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetType.h" 00045 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetType.h" 00046 #include "FWCore/ParameterSet/interface/InputTag.h" 00047 00048 #include <string> 00049 #include "DQMServices/Core/interface/MonitorElement.h" 00050 00051 class SiStripRecHitsValid : public edm::EDAnalyzer { 00052 00053 public: 00054 00055 SiStripRecHitsValid(const edm::ParameterSet& conf); 00056 00057 ~SiStripRecHitsValid(); 00058 00059 protected: 00060 00061 virtual void analyze(const edm::Event& e, const edm::EventSetup& c); 00062 void beginJob(const edm::EventSetup& c); 00063 void endJob(); 00064 00065 private: 00066 //Back-End Interface 00067 DQMStore* dbe_; 00068 std::string outputFile_; 00069 MonitorElement* meNumTotRphi; 00070 MonitorElement* meNumTotSas; 00071 MonitorElement* meNumTotMatched; 00072 MonitorElement* meNumRphiTIB; 00073 MonitorElement* meNumSasTIB; 00074 MonitorElement* meNumMatchedTIB; 00075 MonitorElement* meNumRphiTOB; 00076 MonitorElement* meNumSasTOB; 00077 MonitorElement* meNumMatchedTOB; 00078 MonitorElement* meNumRphiTID; 00079 MonitorElement* meNumSasTID; 00080 MonitorElement* meNumMatchedTID; 00081 MonitorElement* meNumRphiTEC; 00082 MonitorElement* meNumSasTEC; 00083 MonitorElement* meNumMatchedTEC; 00084 00085 //TIB 00086 MonitorElement* meNstpRphiTIB[4]; 00087 MonitorElement* meAdcRphiTIB[4]; 00088 MonitorElement* mePosxRphiTIB[4]; 00089 MonitorElement* meErrxRphiTIB[4]; 00090 MonitorElement* meResRphiTIB[4]; 00091 MonitorElement* mePullLFRphiTIB[4]; 00092 MonitorElement* mePullMFRphiTIB[4]; 00093 MonitorElement* meChi2RphiTIB[4]; 00094 MonitorElement* meNstpSasTIB[4]; 00095 MonitorElement* meAdcSasTIB[4]; 00096 MonitorElement* mePosxSasTIB[4]; 00097 MonitorElement* meErrxSasTIB[4]; 00098 MonitorElement* meResSasTIB[4]; 00099 MonitorElement* mePullLFSasTIB[4]; 00100 MonitorElement* mePullMFSasTIB[4]; 00101 MonitorElement* meChi2SasTIB[4]; 00102 MonitorElement* mePosxMatchedTIB[2]; 00103 MonitorElement* mePosyMatchedTIB[2]; 00104 MonitorElement* meErrxMatchedTIB[2]; 00105 MonitorElement* meErryMatchedTIB[2]; 00106 MonitorElement* meResxMatchedTIB[2]; 00107 MonitorElement* meResyMatchedTIB[2]; 00108 MonitorElement* meChi2MatchedTIB[2]; 00109 //TOB 00110 MonitorElement* meNstpRphiTOB[6]; 00111 MonitorElement* meAdcRphiTOB[6]; 00112 MonitorElement* mePosxRphiTOB[6]; 00113 MonitorElement* meErrxRphiTOB[6]; 00114 MonitorElement* meResRphiTOB[6]; 00115 MonitorElement* mePullLFRphiTOB[6]; 00116 MonitorElement* mePullMFRphiTOB[6]; 00117 MonitorElement* meChi2RphiTOB[6]; 00118 MonitorElement* meNstpSasTOB[2]; 00119 MonitorElement* meAdcSasTOB[2]; 00120 MonitorElement* mePosxSasTOB[2]; 00121 MonitorElement* meErrxSasTOB[2]; 00122 MonitorElement* meResSasTOB[2]; 00123 MonitorElement* mePullLFSasTOB[2]; 00124 MonitorElement* mePullMFSasTOB[2]; 00125 MonitorElement* meChi2SasTOB[2]; 00126 MonitorElement* mePosxMatchedTOB[2]; 00127 MonitorElement* mePosyMatchedTOB[2]; 00128 MonitorElement* meErrxMatchedTOB[2]; 00129 MonitorElement* meErryMatchedTOB[2]; 00130 MonitorElement* meResxMatchedTOB[2]; 00131 MonitorElement* meResyMatchedTOB[2]; 00132 MonitorElement* meChi2MatchedTOB[2]; 00133 //TID 00134 MonitorElement* meNstpRphiTID[3]; 00135 MonitorElement* meAdcRphiTID[3]; 00136 MonitorElement* mePosxRphiTID[3]; 00137 MonitorElement* meErrxRphiTID[3]; 00138 MonitorElement* meResRphiTID[3]; 00139 MonitorElement* mePullLFRphiTID[3]; 00140 MonitorElement* mePullMFRphiTID[3]; 00141 MonitorElement* meChi2RphiTID[3]; 00142 MonitorElement* meNstpSasTID[2]; 00143 MonitorElement* meAdcSasTID[2]; 00144 MonitorElement* mePosxSasTID[2]; 00145 MonitorElement* meErrxSasTID[2]; 00146 MonitorElement* meResSasTID[2]; 00147 MonitorElement* mePullLFSasTID[2]; 00148 MonitorElement* mePullMFSasTID[2]; 00149 MonitorElement* meChi2SasTID[2]; 00150 00151 MonitorElement* mePosxMatchedTID[2]; 00152 MonitorElement* mePosyMatchedTID[2]; 00153 MonitorElement* meErrxMatchedTID[2]; 00154 MonitorElement* meErryMatchedTID[2]; 00155 MonitorElement* meResxMatchedTID[2]; 00156 MonitorElement* meResyMatchedTID[2]; 00157 MonitorElement* meChi2MatchedTID[2]; 00158 //TEC 00159 MonitorElement* meNstpRphiTEC[7]; 00160 MonitorElement* meAdcRphiTEC[7]; 00161 MonitorElement* mePosxRphiTEC[7]; 00162 MonitorElement* meErrxRphiTEC[7]; 00163 MonitorElement* meResRphiTEC[7]; 00164 MonitorElement* mePullLFRphiTEC[7]; 00165 MonitorElement* mePullMFRphiTEC[7]; 00166 MonitorElement* meChi2RphiTEC[7]; 00167 MonitorElement* meNstpSasTEC[5]; 00168 MonitorElement* meAdcSasTEC[5]; 00169 MonitorElement* mePosxSasTEC[5]; 00170 MonitorElement* meErrxSasTEC[5]; 00171 MonitorElement* meResSasTEC[5]; 00172 MonitorElement* mePullLFSasTEC[5]; 00173 MonitorElement* mePullMFSasTEC[5]; 00174 MonitorElement* meChi2SasTEC[5]; 00175 MonitorElement* mePosxMatchedTEC[5]; 00176 MonitorElement* mePosyMatchedTEC[5]; 00177 MonitorElement* meErrxMatchedTEC[5]; 00178 MonitorElement* meErryMatchedTEC[5]; 00179 MonitorElement* meResxMatchedTEC[5]; 00180 MonitorElement* meResyMatchedTEC[5]; 00181 MonitorElement* meChi2MatchedTEC[5]; 00182 00183 std::vector<PSimHit> matched; 00184 std::pair<LocalPoint,LocalVector> projectHit( const PSimHit& hit, const StripGeomDetUnit* stripDet, 00185 const BoundPlane& plane); 00186 edm::ParameterSet conf_; 00187 //const StripTopology* topol; 00188 00189 static const int MAXHIT = 1000; 00190 float rechitrphix[MAXHIT]; 00191 float rechitrphierrx[MAXHIT]; 00192 float rechitrphiy[MAXHIT]; 00193 float rechitrphiz[MAXHIT]; 00194 float rechitrphiphi[MAXHIT]; 00195 float rechitrphires[MAXHIT]; 00196 float rechitrphipullMF[MAXHIT]; 00197 int clusizrphi[MAXHIT]; 00198 float cluchgrphi[MAXHIT]; 00199 float rechitsasx[MAXHIT]; 00200 float rechitsaserrx[MAXHIT]; 00201 float rechitsasy[MAXHIT]; 00202 float rechitsasz[MAXHIT]; 00203 float rechitsasphi[MAXHIT]; 00204 float rechitsasres[MAXHIT]; 00205 float rechitsaspullMF[MAXHIT]; 00206 int clusizsas[MAXHIT]; 00207 float cluchgsas[MAXHIT]; 00208 float chi2rphi[MAXHIT]; 00209 float chi2sas[MAXHIT]; 00210 float chi2matched[MAXHIT]; 00211 float rechitmatchedx[MAXHIT]; 00212 float rechitmatchedy[MAXHIT]; 00213 float rechitmatchedz[MAXHIT]; 00214 float rechitmatchederrxx[MAXHIT]; 00215 float rechitmatchederrxy[MAXHIT]; 00216 float rechitmatchederryy[MAXHIT]; 00217 float rechitmatchedphi[MAXHIT]; 00218 float rechitmatchedresx[MAXHIT]; 00219 float rechitmatchedresy[MAXHIT]; 00220 float rechitmatchedchi2[MAXHIT]; 00221 00222 00223 edm::InputTag matchedRecHits_, rphiRecHits_, stereoRecHits_; 00224 }; 00225 00226 #endif