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