CMS 3D CMS Logo

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 "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

Generated on Tue Jun 9 17:49:37 2009 for CMSSW by  doxygen 1.5.4