00001 00002 // File: SiPixelTrackingRecHitsValid.hh 00003 // // Authors: Xingtao Huang (Puerto Rico Univ.) 00004 // Gavril Giurgiu (JHU) 00005 // Creation Date: Oct. 2006. 00006 // 00007 //-------------------------------------------- 00008 00009 #ifndef Validation_RecoTrack_SiPixelTrackingRecHitsValid_h 00010 #define Validation_RecoTrack_SiPixelTrackingRecHitsValid_h 00011 00012 //DQM services for histogram 00013 #include "DQMServices/Core/interface/DQMStore.h" 00014 #include "DQMServices/Core/interface/MonitorElement.h" 00015 #include "FWCore/ServiceRegistry/interface/Service.h" 00016 00017 #include "FWCore/Framework/interface/EDAnalyzer.h" 00018 #include "FWCore/Framework/interface/Event.h" 00019 #include "DataFormats/Common/interface/Handle.h" 00020 #include "FWCore/Framework/interface/EventSetup.h" 00021 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00022 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00023 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" 00024 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" 00025 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00026 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00027 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" 00028 #include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h" 00029 #include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" 00030 #include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h" 00031 #include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h" 00032 #include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h" 00033 #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" 00034 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" 00035 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00036 //#include "Validation/RecoTrack/interface/TrackLocalAngle.h" 00037 #include <TROOT.h> 00038 #include <TTree.h> 00039 #include <TFile.h> 00040 #include <TH1F.h> 00041 #include <TProfile.h> 00042 00043 #include "FWCore/Framework/interface/Frameworkfwd.h" 00044 #include "FWCore/Framework/interface/EventSetup.h" 00045 #include "FWCore/Framework/interface/ESHandle.h" 00046 #include "FWCore/Framework/interface/MakerMacros.h" 00047 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00048 00049 //--- for SimHit association 00050 #include "SimDataFormats/TrackingHit/interface/PSimHit.h" 00051 #include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h" 00052 #include "Geometry/CommonTopologies/interface/PixelTopology.h" 00053 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" 00054 #include "Geometry/CommonDetUnit/interface/GeomDetType.h" 00055 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" 00056 #include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h" 00057 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00058 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" 00059 #include "Geometry/TrackerNumberingBuilder/interface/GeometricDet.h" 00060 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetType.h" 00061 00062 #include <string> 00063 00064 class TTree; 00065 class TFile; 00066 00067 class SiPixelTrackingRecHitsValid : public edm::EDAnalyzer 00068 { 00069 public: 00070 00071 explicit SiPixelTrackingRecHitsValid(const edm::ParameterSet& conf); 00072 00073 virtual ~SiPixelTrackingRecHitsValid(); 00074 00075 virtual void analyze(const edm::Event& e, const edm::EventSetup& c); 00076 virtual void beginJob(); 00077 virtual void endJob(); 00078 00079 //xt std::pair<LocalPoint,LocalVector> projectHit( const PSimHit& hit, const StripGeomDetUnit* stripDet,const BoundPlane& plane); 00080 std::pair<LocalPoint,LocalVector> projectHit( const PSimHit& hit, const PixelGeomDetUnit* pixelDet,const BoundPlane& plane); 00081 00082 private: 00083 00084 edm::ParameterSet conf_; 00085 //TrackLocalAngle *anglefinder_; 00086 DQMStore* dbe_; 00087 std::string outputFile_; 00088 std::string debugNtuple_; 00089 std::string src_; 00090 std::string builderName_; 00091 bool MTCCtrack_; 00092 00093 bool checkType_; // do we check that the simHit associated with recHit is of the expected particle type ? 00094 int genType_; // the type of particle that the simHit associated with recHits should be 00095 00096 // Pixel barrel detector has 3 layers and 8 modules; book histograms for each module = (layer, ring) pair 00097 00098 MonitorElement* mePosxBarrelLayerModule[3][8]; 00099 MonitorElement* mePosyBarrelLayerModule[3][8]; 00100 MonitorElement* meErrxBarrelLayerModule[3][8]; 00101 MonitorElement* meErryBarrelLayerModule[3][8]; 00102 MonitorElement* meResxBarrelLayerModule[3][8]; 00103 MonitorElement* meResyBarrelLayerModule[3][8]; 00104 MonitorElement* mePullxBarrelLayerModule[3][8]; 00105 MonitorElement* mePullyBarrelLayerModule[3][8]; 00106 MonitorElement* meNpixBarrelLayerModule[3][8]; 00107 MonitorElement* meNxpixBarrelLayerModule[3][8]; 00108 MonitorElement* meNypixBarrelLayerModule[3][8]; 00109 MonitorElement* meChargeBarrelLayerModule[3][8]; 00110 MonitorElement* meResXvsAlphaBarrelLayerModule[3][8]; 00111 MonitorElement* meResYvsAlphaBarrelLayerModule[3][8]; 00112 MonitorElement* meResXvsBetaBarrelLayerModule[3][8]; 00113 MonitorElement* meResYvsBetaBarrelLayerModule[3][8]; 00114 MonitorElement* mePullXvsAlphaBarrelLayerModule[3][8]; 00115 MonitorElement* mePullYvsAlphaBarrelLayerModule[3][8]; 00116 MonitorElement* mePullXvsBetaBarrelLayerModule[3][8]; 00117 MonitorElement* mePullYvsBetaBarrelLayerModule[3][8]; 00118 MonitorElement* mePullXvsPhiBarrelLayerModule[3][8]; 00119 MonitorElement* mePullYvsPhiBarrelLayerModule[3][8]; 00120 MonitorElement* mePullXvsEtaBarrelLayerModule[3][8]; 00121 MonitorElement* mePullYvsEtaBarrelLayerModule[3][8]; 00122 00123 // All layers and modules together 00124 MonitorElement* mePosxBarrel; 00125 MonitorElement* mePosyBarrel; 00126 MonitorElement* meErrxBarrel; 00127 MonitorElement* meErryBarrel; 00128 MonitorElement* meResxBarrel; 00129 MonitorElement* meResyBarrel; 00130 MonitorElement* mePullxBarrel; 00131 MonitorElement* mePullyBarrel; 00132 MonitorElement* meNpixBarrel; 00133 MonitorElement* meNxpixBarrel; 00134 MonitorElement* meNypixBarrel; 00135 MonitorElement* meChargeBarrel; 00136 MonitorElement* meResXvsAlphaBarrel; 00137 MonitorElement* meResYvsAlphaBarrel; 00138 MonitorElement* meResXvsBetaBarrel; 00139 MonitorElement* meResYvsBetaBarrel; 00140 MonitorElement* mePullXvsAlphaBarrel; 00141 MonitorElement* mePullYvsAlphaBarrel; 00142 MonitorElement* mePullXvsBetaBarrel; 00143 MonitorElement* mePullYvsBetaBarrel; 00144 MonitorElement* mePullXvsPhiBarrel; 00145 MonitorElement* mePullYvsPhiBarrel; 00146 MonitorElement* mePullXvsEtaBarrel; 00147 MonitorElement* mePullYvsEtaBarrel; 00148 00149 MonitorElement* mePosxBarrelHalfModule; 00150 MonitorElement* mePosxBarrelFullModule; 00151 MonitorElement* mePosxBarrelFlippedLadders; 00152 MonitorElement* mePosxBarrelNonFlippedLadders; 00153 MonitorElement* mePosyBarrelHalfModule; 00154 MonitorElement* mePosyBarrelFullModule; 00155 MonitorElement* mePosyBarrelFlippedLadders; 00156 MonitorElement* mePosyBarrelNonFlippedLadders; 00157 00158 MonitorElement* meResXvsAlphaBarrelFlippedLadders; 00159 MonitorElement* meResYvsAlphaBarrelFlippedLadders; 00160 MonitorElement* meResXvsBetaBarrelFlippedLadders; 00161 MonitorElement* meResYvsBetaBarrelFlippedLadders; 00162 MonitorElement* mePullXvsAlphaBarrelFlippedLadders; 00163 MonitorElement* mePullYvsAlphaBarrelFlippedLadders; 00164 MonitorElement* mePullXvsBetaBarrelFlippedLadders; 00165 MonitorElement* mePullYvsBetaBarrelFlippedLadders; 00166 MonitorElement* mePullXvsPhiBarrelFlippedLadders; 00167 MonitorElement* mePullYvsPhiBarrelFlippedLadders; 00168 MonitorElement* mePullXvsEtaBarrelFlippedLadders; 00169 MonitorElement* mePullYvsEtaBarrelFlippedLadders; 00170 00171 MonitorElement* meResXvsAlphaBarrelNonFlippedLadders; 00172 MonitorElement* meResYvsAlphaBarrelNonFlippedLadders; 00173 MonitorElement* meResXvsBetaBarrelNonFlippedLadders; 00174 MonitorElement* meResYvsBetaBarrelNonFlippedLadders; 00175 MonitorElement* mePullXvsAlphaBarrelNonFlippedLadders; 00176 MonitorElement* mePullYvsAlphaBarrelNonFlippedLadders; 00177 MonitorElement* mePullXvsBetaBarrelNonFlippedLadders; 00178 MonitorElement* mePullYvsBetaBarrelNonFlippedLadders; 00179 MonitorElement* mePullXvsPhiBarrelNonFlippedLadders; 00180 MonitorElement* mePullYvsPhiBarrelNonFlippedLadders; 00181 MonitorElement* mePullXvsEtaBarrelNonFlippedLadders; 00182 MonitorElement* mePullYvsEtaBarrelNonFlippedLadders; 00183 00184 MonitorElement* meWPullXvsAlphaBarrelFlippedLadders; 00185 MonitorElement* meWPullYvsAlphaBarrelFlippedLadders; 00186 MonitorElement* meWPullXvsBetaBarrelFlippedLadders; 00187 MonitorElement* meWPullYvsBetaBarrelFlippedLadders; 00188 MonitorElement* meWPullXvsAlphaBarrelNonFlippedLadders; 00189 MonitorElement* meWPullYvsAlphaBarrelNonFlippedLadders; 00190 MonitorElement* meWPullXvsBetaBarrelNonFlippedLadders; 00191 MonitorElement* meWPullYvsBetaBarrelNonFlippedLadders; 00192 00193 // Split barrel x/y residuals and pulls in 3 layers 00194 MonitorElement* meResxBarrelLayer[3]; 00195 MonitorElement* meResyBarrelLayer[3]; 00196 MonitorElement* mePullxBarrelLayer[3]; 00197 MonitorElement* mePullyBarrelLayer[3]; 00198 00199 MonitorElement* meResXvsAlphaBarrelFlippedLaddersLayer[3]; 00200 MonitorElement* meResYvsAlphaBarrelFlippedLaddersLayer[3]; 00201 MonitorElement* meResXvsBetaBarrelFlippedLaddersLayer[3]; 00202 MonitorElement* meResYvsBetaBarrelFlippedLaddersLayer[3]; 00203 MonitorElement* meResXvsAlphaBarrelNonFlippedLaddersLayer[3]; 00204 MonitorElement* meResYvsAlphaBarrelNonFlippedLaddersLayer[3]; 00205 MonitorElement* meResXvsBetaBarrelNonFlippedLaddersLayer[3]; 00206 MonitorElement* meResYvsBetaBarrelNonFlippedLaddersLayer[3]; 00207 00208 // Pixel forward detector has 2 sides, 2 disks per side, 2 panels per disk and either 3 or 4 plaquettes per blade 00209 // Panel 1 has 4 plaquettes 00210 // Panel 2 has 3 plaquettes 00211 00212 // Negative Z side 00213 // Panel 1: 2 disks, 4 plaquets 00214 00215 MonitorElement* mePosxZmPanel1DiskPlaq[2][4]; 00216 MonitorElement* mePosyZmPanel1DiskPlaq[2][4]; 00217 MonitorElement* meErrxZmPanel1DiskPlaq[2][4]; 00218 MonitorElement* meErryZmPanel1DiskPlaq[2][4]; 00219 MonitorElement* meResxZmPanel1DiskPlaq[2][4]; 00220 MonitorElement* meResyZmPanel1DiskPlaq[2][4]; 00221 MonitorElement* mePullxZmPanel1DiskPlaq[2][4]; 00222 MonitorElement* mePullyZmPanel1DiskPlaq[2][4]; 00223 MonitorElement* meNpixZmPanel1DiskPlaq[2][4]; 00224 MonitorElement* meNxpixZmPanel1DiskPlaq[2][4]; 00225 MonitorElement* meNypixZmPanel1DiskPlaq[2][4]; 00226 MonitorElement* meChargeZmPanel1DiskPlaq[2][4]; 00227 MonitorElement* meResXvsAlphaZmPanel1DiskPlaq[2][4]; 00228 MonitorElement* meResYvsAlphaZmPanel1DiskPlaq[2][4]; 00229 MonitorElement* meResXvsBetaZmPanel1DiskPlaq[2][4]; 00230 MonitorElement* meResYvsBetaZmPanel1DiskPlaq[2][4]; 00231 MonitorElement* mePullXvsAlphaZmPanel1DiskPlaq[2][4]; 00232 MonitorElement* mePullYvsAlphaZmPanel1DiskPlaq[2][4]; 00233 MonitorElement* mePullXvsBetaZmPanel1DiskPlaq[2][4]; 00234 MonitorElement* mePullYvsBetaZmPanel1DiskPlaq[2][4]; 00235 MonitorElement* mePullXvsPhiZmPanel1DiskPlaq[2][4]; 00236 MonitorElement* mePullYvsPhiZmPanel1DiskPlaq[2][4]; 00237 MonitorElement* mePullXvsEtaZmPanel1DiskPlaq[2][4]; 00238 MonitorElement* mePullYvsEtaZmPanel1DiskPlaq[2][4]; 00239 00240 // Panel 2: 2 disks, 3 plaquets 00241 MonitorElement* mePosxZmPanel2DiskPlaq[2][3]; 00242 MonitorElement* mePosyZmPanel2DiskPlaq[2][3]; 00243 MonitorElement* meErrxZmPanel2DiskPlaq[2][3]; 00244 MonitorElement* meErryZmPanel2DiskPlaq[2][3]; 00245 MonitorElement* meResxZmPanel2DiskPlaq[2][3]; 00246 MonitorElement* meResyZmPanel2DiskPlaq[2][3]; 00247 MonitorElement* mePullxZmPanel2DiskPlaq[2][3]; 00248 MonitorElement* mePullyZmPanel2DiskPlaq[2][3]; 00249 MonitorElement* meNpixZmPanel2DiskPlaq[2][3]; 00250 MonitorElement* meNxpixZmPanel2DiskPlaq[2][3]; 00251 MonitorElement* meNypixZmPanel2DiskPlaq[2][3]; 00252 MonitorElement* meChargeZmPanel2DiskPlaq[2][3]; 00253 MonitorElement* meResXvsAlphaZmPanel2DiskPlaq[2][3]; 00254 MonitorElement* meResYvsAlphaZmPanel2DiskPlaq[2][3]; 00255 MonitorElement* meResXvsBetaZmPanel2DiskPlaq[2][3]; 00256 MonitorElement* meResYvsBetaZmPanel2DiskPlaq[2][3]; 00257 MonitorElement* mePullXvsAlphaZmPanel2DiskPlaq[2][3]; 00258 MonitorElement* mePullYvsAlphaZmPanel2DiskPlaq[2][3]; 00259 MonitorElement* mePullXvsBetaZmPanel2DiskPlaq[2][3]; 00260 MonitorElement* mePullYvsBetaZmPanel2DiskPlaq[2][3]; 00261 MonitorElement* mePullXvsPhiZmPanel2DiskPlaq[2][3]; 00262 MonitorElement* mePullYvsPhiZmPanel2DiskPlaq[2][3]; 00263 MonitorElement* mePullXvsEtaZmPanel2DiskPlaq[2][3]; 00264 MonitorElement* mePullYvsEtaZmPanel2DiskPlaq[2][3]; 00265 00266 // Positive Z side 00267 // Panel 1: 2 disks, 4 plaquets 00268 MonitorElement* mePosxZpPanel1DiskPlaq[2][4]; 00269 MonitorElement* mePosyZpPanel1DiskPlaq[2][4]; 00270 MonitorElement* meErrxZpPanel1DiskPlaq[2][4]; 00271 MonitorElement* meErryZpPanel1DiskPlaq[2][4]; 00272 MonitorElement* meResxZpPanel1DiskPlaq[2][4]; 00273 MonitorElement* meResyZpPanel1DiskPlaq[2][4]; 00274 MonitorElement* mePullxZpPanel1DiskPlaq[2][4]; 00275 MonitorElement* mePullyZpPanel1DiskPlaq[2][4]; 00276 MonitorElement* meNpixZpPanel1DiskPlaq[2][4]; 00277 MonitorElement* meNxpixZpPanel1DiskPlaq[2][4]; 00278 MonitorElement* meNypixZpPanel1DiskPlaq[2][4]; 00279 MonitorElement* meChargeZpPanel1DiskPlaq[2][4]; 00280 MonitorElement* meResXvsAlphaZpPanel1DiskPlaq[2][4]; 00281 MonitorElement* meResYvsAlphaZpPanel1DiskPlaq[2][4]; 00282 MonitorElement* meResXvsBetaZpPanel1DiskPlaq[2][4]; 00283 MonitorElement* meResYvsBetaZpPanel1DiskPlaq[2][4]; 00284 MonitorElement* mePullXvsAlphaZpPanel1DiskPlaq[2][4]; 00285 MonitorElement* mePullYvsAlphaZpPanel1DiskPlaq[2][4]; 00286 MonitorElement* mePullXvsBetaZpPanel1DiskPlaq[2][4]; 00287 MonitorElement* mePullYvsBetaZpPanel1DiskPlaq[2][4]; 00288 MonitorElement* mePullXvsPhiZpPanel1DiskPlaq[2][4]; 00289 MonitorElement* mePullYvsPhiZpPanel1DiskPlaq[2][4]; 00290 MonitorElement* mePullXvsEtaZpPanel1DiskPlaq[2][4]; 00291 MonitorElement* mePullYvsEtaZpPanel1DiskPlaq[2][4]; 00292 00293 // Panel 2: 2 disks, 3 plaquets 00294 MonitorElement* mePosxZpPanel2DiskPlaq[2][3]; 00295 MonitorElement* mePosyZpPanel2DiskPlaq[2][3]; 00296 MonitorElement* meErrxZpPanel2DiskPlaq[2][3]; 00297 MonitorElement* meErryZpPanel2DiskPlaq[2][3]; 00298 MonitorElement* meResxZpPanel2DiskPlaq[2][3]; 00299 MonitorElement* meResyZpPanel2DiskPlaq[2][3]; 00300 MonitorElement* mePullxZpPanel2DiskPlaq[2][3]; 00301 MonitorElement* mePullyZpPanel2DiskPlaq[2][3]; 00302 MonitorElement* meNpixZpPanel2DiskPlaq[2][3]; 00303 MonitorElement* meNxpixZpPanel2DiskPlaq[2][3]; 00304 MonitorElement* meNypixZpPanel2DiskPlaq[2][3]; 00305 MonitorElement* meChargeZpPanel2DiskPlaq[2][3]; 00306 MonitorElement* meResXvsAlphaZpPanel2DiskPlaq[2][3]; 00307 MonitorElement* meResYvsAlphaZpPanel2DiskPlaq[2][3]; 00308 MonitorElement* meResXvsBetaZpPanel2DiskPlaq[2][3]; 00309 MonitorElement* meResYvsBetaZpPanel2DiskPlaq[2][3]; 00310 MonitorElement* mePullXvsAlphaZpPanel2DiskPlaq[2][3]; 00311 MonitorElement* mePullYvsAlphaZpPanel2DiskPlaq[2][3]; 00312 MonitorElement* mePullXvsBetaZpPanel2DiskPlaq[2][3]; 00313 MonitorElement* mePullYvsBetaZpPanel2DiskPlaq[2][3]; 00314 MonitorElement* mePullXvsPhiZpPanel2DiskPlaq[2][3]; 00315 MonitorElement* mePullYvsPhiZpPanel2DiskPlaq[2][3]; 00316 MonitorElement* mePullXvsEtaZpPanel2DiskPlaq[2][3]; 00317 MonitorElement* mePullYvsEtaZpPanel2DiskPlaq[2][3]; 00318 00319 // All disks and plaquettes together 00320 00321 // Negative Z side, panel 1 00322 MonitorElement* mePosxZmPanel1; 00323 MonitorElement* mePosyZmPanel1; 00324 MonitorElement* meErrxZmPanel1; 00325 MonitorElement* meErryZmPanel1; 00326 MonitorElement* meResxZmPanel1; 00327 MonitorElement* meResyZmPanel1; 00328 MonitorElement* mePullxZmPanel1; 00329 MonitorElement* mePullyZmPanel1; 00330 MonitorElement* meNpixZmPanel1; 00331 MonitorElement* meNxpixZmPanel1; 00332 MonitorElement* meNypixZmPanel1; 00333 MonitorElement* meChargeZmPanel1; 00334 MonitorElement* meResXvsAlphaZmPanel1; 00335 MonitorElement* meResYvsAlphaZmPanel1; 00336 MonitorElement* meResXvsBetaZmPanel1; 00337 MonitorElement* meResYvsBetaZmPanel1; 00338 MonitorElement* mePullXvsAlphaZmPanel1; 00339 MonitorElement* mePullYvsAlphaZmPanel1; 00340 MonitorElement* mePullXvsBetaZmPanel1; 00341 MonitorElement* mePullYvsBetaZmPanel1; 00342 MonitorElement* mePullXvsPhiZmPanel1; 00343 MonitorElement* mePullYvsPhiZmPanel1; 00344 MonitorElement* mePullXvsEtaZmPanel1; 00345 MonitorElement* mePullYvsEtaZmPanel1; 00346 00347 MonitorElement* meWPullXvsAlphaZmPanel1; 00348 MonitorElement* meWPullYvsAlphaZmPanel1; 00349 MonitorElement* meWPullXvsBetaZmPanel1; 00350 MonitorElement* meWPullYvsBetaZmPanel1; 00351 00352 // Negative Z side, panel 2 00353 MonitorElement* mePosxZmPanel2; 00354 MonitorElement* mePosyZmPanel2; 00355 MonitorElement* meErrxZmPanel2; 00356 MonitorElement* meErryZmPanel2; 00357 MonitorElement* meResxZmPanel2; 00358 MonitorElement* meResyZmPanel2; 00359 MonitorElement* mePullxZmPanel2; 00360 MonitorElement* mePullyZmPanel2; 00361 MonitorElement* meNpixZmPanel2; 00362 MonitorElement* meNxpixZmPanel2; 00363 MonitorElement* meNypixZmPanel2; 00364 MonitorElement* meChargeZmPanel2; 00365 MonitorElement* meResXvsAlphaZmPanel2; 00366 MonitorElement* meResYvsAlphaZmPanel2; 00367 MonitorElement* meResXvsBetaZmPanel2; 00368 MonitorElement* meResYvsBetaZmPanel2; 00369 MonitorElement* mePullXvsAlphaZmPanel2; 00370 MonitorElement* mePullYvsAlphaZmPanel2; 00371 MonitorElement* mePullXvsBetaZmPanel2; 00372 MonitorElement* mePullYvsBetaZmPanel2; 00373 MonitorElement* mePullXvsPhiZmPanel2; 00374 MonitorElement* mePullYvsPhiZmPanel2; 00375 MonitorElement* mePullXvsEtaZmPanel2; 00376 MonitorElement* mePullYvsEtaZmPanel2; 00377 00378 MonitorElement* meWPullXvsAlphaZmPanel2; 00379 MonitorElement* meWPullYvsAlphaZmPanel2; 00380 MonitorElement* meWPullXvsBetaZmPanel2; 00381 MonitorElement* meWPullYvsBetaZmPanel2; 00382 00383 // Positive Z side, panel 1 00384 MonitorElement* mePosxZpPanel1; 00385 MonitorElement* mePosyZpPanel1; 00386 MonitorElement* meErrxZpPanel1; 00387 MonitorElement* meErryZpPanel1; 00388 MonitorElement* meResxZpPanel1; 00389 MonitorElement* meResyZpPanel1; 00390 MonitorElement* mePullxZpPanel1; 00391 MonitorElement* mePullyZpPanel1; 00392 MonitorElement* meNpixZpPanel1; 00393 MonitorElement* meNxpixZpPanel1; 00394 MonitorElement* meNypixZpPanel1; 00395 MonitorElement* meChargeZpPanel1; 00396 MonitorElement* meResXvsAlphaZpPanel1; 00397 MonitorElement* meResYvsAlphaZpPanel1; 00398 MonitorElement* meResXvsBetaZpPanel1; 00399 MonitorElement* meResYvsBetaZpPanel1; 00400 MonitorElement* mePullXvsAlphaZpPanel1; 00401 MonitorElement* mePullYvsAlphaZpPanel1; 00402 MonitorElement* mePullXvsBetaZpPanel1; 00403 MonitorElement* mePullYvsBetaZpPanel1; 00404 MonitorElement* mePullXvsPhiZpPanel1; 00405 MonitorElement* mePullYvsPhiZpPanel1; 00406 MonitorElement* mePullXvsEtaZpPanel1; 00407 MonitorElement* mePullYvsEtaZpPanel1; 00408 00409 MonitorElement* meWPullXvsAlphaZpPanel1; 00410 MonitorElement* meWPullYvsAlphaZpPanel1; 00411 MonitorElement* meWPullXvsBetaZpPanel1; 00412 MonitorElement* meWPullYvsBetaZpPanel1; 00413 00414 // Positive Z side, panel 2 00415 MonitorElement* mePosxZpPanel2; 00416 MonitorElement* mePosyZpPanel2; 00417 MonitorElement* meErrxZpPanel2; 00418 MonitorElement* meErryZpPanel2; 00419 MonitorElement* meResxZpPanel2; 00420 MonitorElement* meResyZpPanel2; 00421 MonitorElement* mePullxZpPanel2; 00422 MonitorElement* mePullyZpPanel2; 00423 MonitorElement* meNpixZpPanel2; 00424 MonitorElement* meNxpixZpPanel2; 00425 MonitorElement* meNypixZpPanel2; 00426 MonitorElement* meChargeZpPanel2; 00427 MonitorElement* meResXvsAlphaZpPanel2; 00428 MonitorElement* meResYvsAlphaZpPanel2; 00429 MonitorElement* meResXvsBetaZpPanel2; 00430 MonitorElement* meResYvsBetaZpPanel2; 00431 MonitorElement* mePullXvsAlphaZpPanel2; 00432 MonitorElement* mePullYvsAlphaZpPanel2; 00433 MonitorElement* mePullXvsBetaZpPanel2; 00434 MonitorElement* mePullYvsBetaZpPanel2; 00435 MonitorElement* mePullXvsPhiZpPanel2; 00436 MonitorElement* mePullYvsPhiZpPanel2; 00437 MonitorElement* mePullXvsEtaZpPanel2; 00438 MonitorElement* mePullYvsEtaZpPanel2; 00439 00440 MonitorElement* meWPullXvsAlphaZpPanel2; 00441 MonitorElement* meWPullYvsAlphaZpPanel2; 00442 MonitorElement* meWPullXvsBetaZpPanel2; 00443 MonitorElement* meWPullYvsBetaZpPanel2; 00444 00445 // all hits (not only from tracks) 00446 MonitorElement* mePosxBarrel_all_hits; 00447 MonitorElement* mePosyBarrel_all_hits; 00448 00449 MonitorElement* mePosxZmPanel1_all_hits; 00450 MonitorElement* mePosyZmPanel1_all_hits; 00451 MonitorElement* mePosxZmPanel2_all_hits; 00452 MonitorElement* mePosyZmPanel2_all_hits; 00453 00454 MonitorElement* mePosxZpPanel1_all_hits; 00455 MonitorElement* mePosyZpPanel1_all_hits; 00456 MonitorElement* mePosxZpPanel2_all_hits; 00457 MonitorElement* mePosyZpPanel2_all_hits; 00458 00459 // control histograms 00460 MonitorElement* meTracksPerEvent; 00461 MonitorElement* mePixRecHitsPerTrack; 00462 00463 00464 // variables that go in the output tree 00465 float rechitx; // x position of hit 00466 float rechity; // y position of hit 00467 float rechitz; // z position of hit 00468 float rechiterrx; // x position error of hit (error not squared) 00469 float rechiterry; // y position error of hit (error not squared) 00470 00471 float rechitresx; // difference between reconstructed hit x position and 'true' x position 00472 float rechitresy; // difference between reconstructed hit y position and 'true' y position 00473 float rechitpullx; // x residual divideded by error 00474 float rechitpully; // y residual divideded by error 00475 00476 int npix; // number of pixel in the cluster 00477 int nxpix; // size of cluster (number of pixels) along x direction 00478 int nypix; // size of cluster (number of pixels) along y direction 00479 float charge; // total charge in cluster 00480 00481 float alpha; // track angle in the xz plane of the module local coordinate system 00482 float beta; // track angle in the yz plane of the module local coordinate system 00483 00484 float phi; // polar track angle 00485 float eta; // pseudo-rapidity (function of theta, the azimuthal angle) 00486 00487 int subdetId; 00488 int layer; 00489 int ladder; 00490 int mod; 00491 int side; 00492 int disk; 00493 int blade; 00494 int panel; 00495 int plaq; 00496 int half; // half = 1 if the barrel module is half size and 0 if it is full size (only defined for barrel) 00497 int flipped; // flipped = 1 if the module is flipped and 0 if non-flipped (only defined for barrel) 00498 00499 int nsimhit; // number of simhits associated with a rechit 00500 int pidhit; // PID of the particle that produced the simHit associated with the recHit 00501 00502 float simhitx; // true x position of hit 00503 float simhity; // true y position of hit 00504 00505 int evt; 00506 int run; 00507 00508 TFile * tfile_; 00509 TTree * t_; 00510 }; 00511 00512 #endif