CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/Validation/RecoTrack/interface/SiPixelTrackingRecHitsValid.h

Go to the documentation of this file.
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