Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:08:24

0001 #ifndef SiPixelTrackResidualSource_H
0002 #define SiPixelTrackResidualSource_H
0003 
0004 // Package: SiPixelMonitorTrack
0005 // Class:   SiPixelTrackResidualSource
0006 //
0007 // class SiPixelTrackResidualSource SiPixelTrackResidualSource.h
0008 //       DQM/SiPixelMonitorTrack/interface/SiPixelTrackResidualSource.h
0009 //
0010 // Description:    <one line class summary>
0011 // Implementation: <Notes on implementation>
0012 //
0013 // Original Author: Shan-Huei Chuang
0014 //         Created: Fri Mar 23 18:41:42 CET 2007
0015 //
0016 // Updated by: Lukas Wehrli
0017 // for pixel offline DQM
0018 
0019 #include "DQM/SiPixelMonitorTrack/interface/SiPixelTrackResidualModule.h"
0020 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0021 #include "DQMServices/Core/interface/DQMStore.h"
0022 
0023 // Files added for monitoring track quantities
0024 #include "Alignment/OfflineValidation/interface/TrackerValidationVariables.h"
0025 #include "Alignment/TrackerAlignment/interface/TrackerAlignableId.h"
0026 #include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h"
0027 #include "DataFormats/TrackerCommon/interface/PixelBarrelName.h"
0028 #include "DataFormats/SiPixelDetId/interface/PixelBarrelNameUpgrade.h"
0029 #include "DataFormats/TrackerCommon/interface/PixelEndcapName.h"
0030 #include "DataFormats/SiPixelDetId/interface/PixelEndcapNameUpgrade.h"
0031 #include "DataFormats/TrackReco/interface/Track.h"
0032 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0033 
0034 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0035 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0036 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0037 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0038 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
0039 #include "TrackingTools/Records/interface/TransientTrackRecord.h"
0040 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
0041 #include "TrackingTools/Records/interface/TransientRecHitRecord.h"
0042 
0043 #include "DataFormats/SiPixelDigi/interface/PixelDigi.h"
0044 #include <cstdint>
0045 
0046 class SiPixelTrackResidualSource : public DQMEDAnalyzer {
0047 public:
0048   explicit SiPixelTrackResidualSource(const edm::ParameterSet &);
0049   ~SiPixelTrackResidualSource() override;
0050 
0051   void dqmBeginRun(const edm::Run &r, edm::EventSetup const &iSetup) override;
0052   void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
0053   void analyze(const edm::Event &, const edm::EventSetup &) override;
0054   void getrococcupancy(DetId detId,
0055                        const edm::DetSetVector<PixelDigi> &diginp,
0056                        const TrackerTopology *const tTopo,
0057                        std::vector<MonitorElement *> meinput);
0058   void triplets(double x1,
0059                 double y1,
0060                 double z1,
0061                 double x2,
0062                 double y2,
0063                 double z2,
0064                 double x3,
0065                 double y3,
0066                 double z3,
0067                 double ptsig,
0068                 double &dc,
0069                 double &dz,
0070                 double kap);
0071 
0072   std::string topFolderName_;
0073 
0074 private:
0075   edm::ParameterSet pSet_;
0076   edm::InputTag src_;
0077   edm::InputTag clustersrc_;
0078   edm::InputTag tracksrc_;
0079   std::string ttrhbuilder_;
0080   edm::EDGetTokenT<reco::BeamSpot> beamSpotToken_;
0081   edm::EDGetTokenT<reco::VertexCollection> offlinePrimaryVerticesToken_;
0082   edm::EDGetTokenT<reco::TrackCollection> generalTracksToken_;
0083   edm::EDGetTokenT<std::vector<Trajectory>> tracksrcToken_;
0084   edm::EDGetTokenT<std::vector<reco::Track>> trackToken_;
0085   edm::EDGetTokenT<TrajTrackAssociationCollection> trackAssociationToken_;
0086   edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster>> clustersrcToken_;
0087   std::string vtxsrc_;
0088   edm::InputTag digisrc_;
0089   edm::EDGetTokenT<edm::DetSetVector<PixelDigi>> digisrcToken_;
0090 
0091   edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> trackerTopoToken_;
0092   edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> trackerGeomToken_;
0093   edm::ESGetToken<TransientTrackBuilder, TransientTrackRecord> transientTrackBuilderToken_;
0094   edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> transientTrackingRecHitBuilderToken_;
0095   edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> trackerTopoTokenBeginRun_;
0096   edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> trackerGeomTokenBeginRun_;
0097 
0098   bool debug_;
0099   bool modOn;
0100   bool reducedSet;
0101   // barrel:
0102   bool ladOn, layOn, phiOn;
0103   // forward:
0104   bool ringOn, bladeOn, diskOn;
0105   bool isUpgrade;
0106   double ptminres_;
0107   bool firstRun;
0108   int NTotal;
0109   int NLowProb;
0110 
0111   std::map<uint32_t, SiPixelTrackResidualModule *> theSiPixelStructure;
0112 
0113   MonitorElement *meSubdetResidualX[3];
0114   MonitorElement *meSubdetResidualY[3];
0115 
0116   std::vector<MonitorElement *> meResidualXSummedLay;
0117   std::vector<MonitorElement *> meResidualYSummedLay;
0118 
0119   MonitorElement *meNofTracks_;
0120   MonitorElement *meNofTracksInPixVol_;
0121   MonitorElement *meNofClustersOnTrack_;
0122   std::vector<MonitorElement *> meNofClustersvsPhiOnTrack_layers;
0123   std::vector<MonitorElement *> meNofClustersvsPhiOnTrack_diskps;
0124   std::vector<MonitorElement *> meNofClustersvsPhiOnTrack_diskms;
0125   MonitorElement *meNofClustersNotOnTrack_;
0126   MonitorElement *meClChargeOnTrack_all;
0127   MonitorElement *meClChargeOnTrack_bpix;
0128   MonitorElement *meClChargeOnTrack_fpix;
0129   std::vector<MonitorElement *> meClChargeOnTrack_layers;
0130   std::vector<MonitorElement *> meClChargeOnTrack_diskps;
0131   std::vector<MonitorElement *> meClChargeOnTrack_diskms;
0132   MonitorElement *meClChargeNotOnTrack_all;
0133   MonitorElement *meClChargeNotOnTrack_bpix;
0134   MonitorElement *meClChargeNotOnTrack_fpix;
0135   std::vector<MonitorElement *> meClChargeNotOnTrack_layers;
0136   std::vector<MonitorElement *> meClChargeNotOnTrack_diskps;
0137   std::vector<MonitorElement *> meClChargeNotOnTrack_diskms;
0138   MonitorElement *meClSizeOnTrack_all;
0139   MonitorElement *meClSizeOnTrack_bpix;
0140   MonitorElement *meClSizeOnTrack_fpix;
0141   std::vector<MonitorElement *> meClSizeOnTrack_layers;
0142   std::vector<MonitorElement *> meClSizeOnTrack_diskps;
0143   std::vector<MonitorElement *> meClSizeOnTrack_diskms;
0144   MonitorElement *meClSizeNotOnTrack_all;
0145   MonitorElement *meClSizeNotOnTrack_bpix;
0146   MonitorElement *meClSizeNotOnTrack_fpix;
0147   std::vector<MonitorElement *> meClSizeNotOnTrack_layers;
0148   std::vector<MonitorElement *> meClSizeNotOnTrack_diskps;
0149   std::vector<MonitorElement *> meClSizeNotOnTrack_diskms;
0150   MonitorElement *meClSizeXOnTrack_all;
0151   MonitorElement *meClSizeXOnTrack_bpix;
0152   MonitorElement *meClSizeXOnTrack_fpix;
0153   std::vector<MonitorElement *> meClSizeXOnTrack_layers;
0154   std::vector<MonitorElement *> meClSizeXOnTrack_diskps;
0155   std::vector<MonitorElement *> meClSizeXOnTrack_diskms;
0156   MonitorElement *meClSizeXNotOnTrack_all;
0157   MonitorElement *meClSizeXNotOnTrack_bpix;
0158   MonitorElement *meClSizeXNotOnTrack_fpix;
0159   std::vector<MonitorElement *> meClSizeXNotOnTrack_layers;
0160   std::vector<MonitorElement *> meClSizeXNotOnTrack_diskps;
0161   std::vector<MonitorElement *> meClSizeXNotOnTrack_diskms;
0162   MonitorElement *meClSizeYOnTrack_all;
0163   MonitorElement *meClSizeYOnTrack_bpix;
0164   MonitorElement *meClSizeYOnTrack_fpix;
0165   std::vector<MonitorElement *> meClSizeYOnTrack_layers;
0166   std::vector<MonitorElement *> meClSizeYOnTrack_diskps;
0167   std::vector<MonitorElement *> meClSizeYOnTrack_diskms;
0168   MonitorElement *meClSizeYNotOnTrack_all;
0169   MonitorElement *meClSizeYNotOnTrack_bpix;
0170   MonitorElement *meClSizeYNotOnTrack_fpix;
0171   std::vector<MonitorElement *> meClSizeYNotOnTrack_layers;
0172   std::vector<MonitorElement *> meClSizeYNotOnTrack_diskps;
0173   std::vector<MonitorElement *> meClSizeYNotOnTrack_diskms;
0174 
0175   // new
0176   MonitorElement *meNClustersOnTrack_all;
0177   MonitorElement *meNClustersOnTrack_bpix;
0178   MonitorElement *meNClustersOnTrack_fpix;
0179   std::vector<MonitorElement *> meNClustersOnTrack_layers;
0180   std::vector<MonitorElement *> meNClustersOnTrack_diskps;
0181   std::vector<MonitorElement *> meNClustersOnTrack_diskms;
0182   MonitorElement *meNClustersNotOnTrack_all;
0183   MonitorElement *meNClustersNotOnTrack_bpix;
0184   MonitorElement *meNClustersNotOnTrack_fpix;
0185   std::vector<MonitorElement *> meNClustersNotOnTrack_layers;
0186   std::vector<MonitorElement *> meNClustersNotOnTrack_diskps;
0187   std::vector<MonitorElement *> meNClustersNotOnTrack_diskms;
0188   //
0189 
0190   std::vector<MonitorElement *> meClPosLayersOnTrack;
0191   std::vector<MonitorElement *> meClPosLayersLadVsModOnTrack;
0192   std::vector<MonitorElement *> meClPosLayersNotOnTrack;
0193   std::vector<MonitorElement *> meClPosDiskspzOnTrack;
0194   std::vector<MonitorElement *> meClPosDisksmzOnTrack;
0195   std::vector<MonitorElement *> meClPosDiskspzNotOnTrack;
0196   std::vector<MonitorElement *> meClPosDisksmzNotOnTrack;
0197 
0198   std::vector<MonitorElement *> meZeroRocLadvsModOnTrackBarrel;
0199   std::vector<MonitorElement *> meZeroRocLadvsModOffTrackBarrel;
0200 
0201   MonitorElement *meHitProbability;
0202   MonitorElement *meRocBladevsDiskEndcapOnTrk;
0203   MonitorElement *meRocBladevsDiskEndcapOffTrk;
0204 
0205   void getepixrococcupancyontrk(const TrackerTopology *const tTopo,
0206                                 TransientTrackingRecHit::ConstRecHitPointer hit,
0207                                 float xclust,
0208                                 float yclust,
0209                                 float z,
0210                                 MonitorElement *meinput);
0211   void getepixrococcupancyofftrk(
0212       DetId detId, const TrackerTopology *const tTopo, float xclust, float yclust, float z, MonitorElement *meinput);
0213 
0214   int noOfLayers;
0215   int noOfDisks;
0216 };
0217 
0218 #endif