Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 13:11:09

0001 // -*- C++ -*-
0002 //
0003 // Package:    SiOuterTracker
0004 // Class:      SiOuterTracker
0005 //
0006 /**\class SiOuterTracker OuterTrackerMonitorTTCluster.cc
0007  DQM/SiOuterTracker/plugins/OuterTrackerMonitorTTCluster.cc
0008 
0009  Description: [one line class summary]
0010 
0011  Implementation:
0012  [Notes on implementation]
0013  */
0014 //
0015 // Original Author:  Isabelle Helena J De Bruyn
0016 //         Created:  Mon, 10 Feb 2014 13:57:08 GMT
0017 //
0018 
0019 // system include files
0020 #include <memory>
0021 #include <numeric>
0022 #include <vector>
0023 
0024 // user include files
0025 #include "FWCore/Framework/interface/ESHandle.h"
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/Framework/interface/Frameworkfwd.h"
0028 #include "FWCore/Framework/interface/MakerMacros.h"
0029 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0030 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0031 #include "FWCore/ServiceRegistry/interface/Service.h"
0032 #include "FWCore/Utilities/interface/EDGetToken.h"
0033 
0034 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0035 #include "DataFormats/L1TrackTrigger/interface/TTCluster.h"
0036 #include "DataFormats/L1TrackTrigger/interface/TTTypes.h"
0037 #include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
0038 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0039 
0040 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
0041 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0042 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0043 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h"
0044 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0045 
0046 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0047 #include "DQMServices/Core/interface/DQMStore.h"
0048 
0049 class OuterTrackerMonitorTTCluster : public DQMEDAnalyzer {
0050 public:
0051   explicit OuterTrackerMonitorTTCluster(const edm::ParameterSet &);
0052   ~OuterTrackerMonitorTTCluster() override;
0053   void analyze(const edm::Event &, const edm::EventSetup &) override;
0054   void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
0055   void dqmBeginRun(const edm::Run &iRun, const edm::EventSetup &iSetup) override;
0056   // TTCluster stacks
0057   MonitorElement *Cluster_IMem_Barrel = nullptr;
0058   MonitorElement *Cluster_IMem_Endcap_Disc = nullptr;
0059   MonitorElement *Cluster_IMem_Endcap_Ring = nullptr;
0060   MonitorElement *Cluster_IMem_Endcap_Ring_Fw[5] = {nullptr, nullptr, nullptr, nullptr, nullptr};
0061   MonitorElement *Cluster_IMem_Endcap_Ring_Bw[5] = {nullptr, nullptr, nullptr, nullptr, nullptr};
0062   MonitorElement *Cluster_OMem_Barrel = nullptr;
0063   MonitorElement *Cluster_OMem_Endcap_Disc = nullptr;
0064   MonitorElement *Cluster_OMem_Endcap_Ring = nullptr;
0065   MonitorElement *Cluster_OMem_Endcap_Ring_Fw[5] = {nullptr, nullptr, nullptr, nullptr, nullptr};
0066   MonitorElement *Cluster_OMem_Endcap_Ring_Bw[5] = {nullptr, nullptr, nullptr, nullptr, nullptr};
0067   MonitorElement *Cluster_W = nullptr;
0068   MonitorElement *Cluster_Phi = nullptr;
0069   MonitorElement *Cluster_R = nullptr;
0070   MonitorElement *Cluster_Eta = nullptr;
0071 
0072   MonitorElement *Cluster_Barrel_XY = nullptr;
0073   MonitorElement *Cluster_Endcap_Fw_XY = nullptr;
0074   MonitorElement *Cluster_Endcap_Bw_XY = nullptr;
0075   MonitorElement *Cluster_RZ = nullptr;
0076 
0077 private:
0078   edm::ParameterSet conf_;
0079   edm::EDGetTokenT<edmNew::DetSetVector<TTCluster<Ref_Phase2TrackerDigi_>>> tagTTClustersToken_;
0080   std::string topFolderName_;
0081   const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> geomToken_;
0082   const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> topoToken_;
0083   const TrackerGeometry *tkGeom_ = nullptr;
0084   const TrackerTopology *tTopo_ = nullptr;
0085 };
0086 
0087 //
0088 // constructors and destructor
0089 //
0090 OuterTrackerMonitorTTCluster::OuterTrackerMonitorTTCluster(const edm::ParameterSet &iConfig)
0091     : conf_(iConfig),
0092       geomToken_(esConsumes<TrackerGeometry, TrackerDigiGeometryRecord, edm::Transition::BeginRun>()),
0093       topoToken_(esConsumes<TrackerTopology, TrackerTopologyRcd, edm::Transition::BeginRun>()) {
0094   topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
0095   tagTTClustersToken_ = consumes<edmNew::DetSetVector<TTCluster<Ref_Phase2TrackerDigi_>>>(
0096       conf_.getParameter<edm::InputTag>("TTClusters"));
0097 }
0098 
0099 OuterTrackerMonitorTTCluster::~OuterTrackerMonitorTTCluster() {
0100   // do anything here that needs to be done at desctruction time
0101   // (e.g. close files, deallocate resources etc.)
0102 }
0103 
0104 //
0105 // member functions
0106 //
0107 void OuterTrackerMonitorTTCluster::dqmBeginRun(const edm::Run &iRun, const edm::EventSetup &iSetup) {
0108   tkGeom_ = &(iSetup.getData(geomToken_));
0109   tTopo_ = &(iSetup.getData(topoToken_));
0110 }
0111 
0112 // ------------ method called for each event  ------------
0113 void OuterTrackerMonitorTTCluster::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) {
0114   /// Track Trigger Clusters
0115   edm::Handle<edmNew::DetSetVector<TTCluster<Ref_Phase2TrackerDigi_>>> Phase2TrackerDigiTTClusterHandle;
0116   iEvent.getByToken(tagTTClustersToken_, Phase2TrackerDigiTTClusterHandle);
0117 
0118   /// Loop over the input Clusters
0119   typename edmNew::DetSetVector<TTCluster<Ref_Phase2TrackerDigi_>>::const_iterator inputIter;
0120   typename edmNew::DetSet<TTCluster<Ref_Phase2TrackerDigi_>>::const_iterator contentIter;
0121 
0122   // Adding protection
0123   if (!Phase2TrackerDigiTTClusterHandle.isValid())
0124     return;
0125 
0126   for (inputIter = Phase2TrackerDigiTTClusterHandle->begin(); inputIter != Phase2TrackerDigiTTClusterHandle->end();
0127        ++inputIter) {
0128     for (contentIter = inputIter->begin(); contentIter != inputIter->end(); ++contentIter) {
0129       // Make reference cluster
0130       edm::Ref<edmNew::DetSetVector<TTCluster<Ref_Phase2TrackerDigi_>>, TTCluster<Ref_Phase2TrackerDigi_>> tempCluRef =
0131           edmNew::makeRefTo(Phase2TrackerDigiTTClusterHandle, contentIter);
0132 
0133       DetId detIdClu = tkGeom_->idToDet(tempCluRef->getDetId())->geographicalId();
0134       unsigned int memberClu = tempCluRef->getStackMember();
0135       unsigned int widClu = tempCluRef->findWidth();
0136 
0137       MeasurementPoint mp = tempCluRef->findAverageLocalCoordinates();
0138       const GeomDet *theGeomDet = tkGeom_->idToDet(detIdClu);
0139       Global3DPoint posClu = theGeomDet->surface().toGlobal(theGeomDet->topology().localPosition(mp));
0140 
0141       double r = posClu.perp();
0142       double z = posClu.z();
0143 
0144       Cluster_W->Fill(widClu, memberClu);
0145       Cluster_Eta->Fill(posClu.eta());
0146       Cluster_Phi->Fill(posClu.phi());
0147       Cluster_R->Fill(r);
0148       Cluster_RZ->Fill(z, r);
0149 
0150       if (detIdClu.subdetId() == static_cast<int>(StripSubdetector::TOB))  // Phase 2 Outer Tracker Barrel
0151       {
0152         if (memberClu == 0)
0153           Cluster_IMem_Barrel->Fill(tTopo_->layer(detIdClu));
0154         else
0155           Cluster_OMem_Barrel->Fill(tTopo_->layer(detIdClu));
0156 
0157         Cluster_Barrel_XY->Fill(posClu.x(), posClu.y());
0158 
0159       }                                                                         // end if isBarrel
0160       else if (detIdClu.subdetId() == static_cast<int>(StripSubdetector::TID))  // Phase 2 Outer Tracker Endcap
0161       {
0162         if (memberClu == 0) {
0163           Cluster_IMem_Endcap_Disc->Fill(tTopo_->layer(detIdClu));  // returns wheel
0164           Cluster_IMem_Endcap_Ring->Fill(tTopo_->tidRing(detIdClu));
0165         } else {
0166           Cluster_OMem_Endcap_Disc->Fill(tTopo_->layer(detIdClu));  // returns wheel
0167           Cluster_OMem_Endcap_Ring->Fill(tTopo_->tidRing(detIdClu));
0168         }
0169 
0170         if (posClu.z() > 0) {
0171           Cluster_Endcap_Fw_XY->Fill(posClu.x(), posClu.y());
0172           if (memberClu == 0)
0173             Cluster_IMem_Endcap_Ring_Fw[tTopo_->layer(detIdClu) - 1]->Fill(tTopo_->tidRing(detIdClu));
0174           else
0175             Cluster_OMem_Endcap_Ring_Fw[tTopo_->layer(detIdClu) - 1]->Fill(tTopo_->tidRing(detIdClu));
0176         } else {
0177           Cluster_Endcap_Bw_XY->Fill(posClu.x(), posClu.y());
0178           if (memberClu == 0)
0179             Cluster_IMem_Endcap_Ring_Bw[tTopo_->layer(detIdClu) - 1]->Fill(tTopo_->tidRing(detIdClu));
0180           else
0181             Cluster_OMem_Endcap_Ring_Bw[tTopo_->layer(detIdClu) - 1]->Fill(tTopo_->tidRing(detIdClu));
0182         }
0183 
0184       }  // end if isEndcap
0185     }    // end loop contentIter
0186   }      // end loop inputIter
0187 }  // end of method
0188 
0189 // ------------ method called once each job just before starting event loop
0190 // ------------
0191 void OuterTrackerMonitorTTCluster::bookHistograms(DQMStore::IBooker &iBooker,
0192                                                   edm::Run const &run,
0193                                                   edm::EventSetup const &es) {
0194   std::string HistoName;
0195   const int numDiscs = 5;
0196 
0197   iBooker.setCurrentFolder(topFolderName_ + "/Clusters/NClusters");
0198 
0199   // NClusters
0200   edm::ParameterSet psTTCluster_Barrel = conf_.getParameter<edm::ParameterSet>("TH1TTCluster_Barrel");
0201   HistoName = "NClusters_IMem_Barrel";
0202   Cluster_IMem_Barrel = iBooker.book1D(HistoName,
0203                                        HistoName,
0204                                        psTTCluster_Barrel.getParameter<int32_t>("Nbinsx"),
0205                                        psTTCluster_Barrel.getParameter<double>("xmin"),
0206                                        psTTCluster_Barrel.getParameter<double>("xmax"));
0207   Cluster_IMem_Barrel->setAxisTitle("Barrel Layer", 1);
0208   Cluster_IMem_Barrel->setAxisTitle("# L1 Clusters", 2);
0209 
0210   HistoName = "NClusters_OMem_Barrel";
0211   Cluster_OMem_Barrel = iBooker.book1D(HistoName,
0212                                        HistoName,
0213                                        psTTCluster_Barrel.getParameter<int32_t>("Nbinsx"),
0214                                        psTTCluster_Barrel.getParameter<double>("xmin"),
0215                                        psTTCluster_Barrel.getParameter<double>("xmax"));
0216   Cluster_OMem_Barrel->setAxisTitle("Barrel Layer", 1);
0217   Cluster_OMem_Barrel->setAxisTitle("# L1 Clusters", 2);
0218 
0219   edm::ParameterSet psTTCluster_ECDisc = conf_.getParameter<edm::ParameterSet>("TH1TTCluster_ECDiscs");
0220   HistoName = "NClusters_IMem_Endcap_Disc";
0221   Cluster_IMem_Endcap_Disc = iBooker.book1D(HistoName,
0222                                             HistoName,
0223                                             psTTCluster_ECDisc.getParameter<int32_t>("Nbinsx"),
0224                                             psTTCluster_ECDisc.getParameter<double>("xmin"),
0225                                             psTTCluster_ECDisc.getParameter<double>("xmax"));
0226   Cluster_IMem_Endcap_Disc->setAxisTitle("Endcap Disc", 1);
0227   Cluster_IMem_Endcap_Disc->setAxisTitle("# L1 Clusters", 2);
0228 
0229   HistoName = "NClusters_OMem_Endcap_Disc";
0230   Cluster_OMem_Endcap_Disc = iBooker.book1D(HistoName,
0231                                             HistoName,
0232                                             psTTCluster_ECDisc.getParameter<int32_t>("Nbinsx"),
0233                                             psTTCluster_ECDisc.getParameter<double>("xmin"),
0234                                             psTTCluster_ECDisc.getParameter<double>("xmax"));
0235   Cluster_OMem_Endcap_Disc->setAxisTitle("Endcap Disc", 1);
0236   Cluster_OMem_Endcap_Disc->setAxisTitle("# L1 Clusters", 2);
0237 
0238   edm::ParameterSet psTTCluster_ECRing = conf_.getParameter<edm::ParameterSet>("TH1TTCluster_ECRings");
0239   HistoName = "NClusters_IMem_Endcap_Ring";
0240   Cluster_IMem_Endcap_Ring = iBooker.book1D(HistoName,
0241                                             HistoName,
0242                                             psTTCluster_ECRing.getParameter<int32_t>("Nbinsx"),
0243                                             psTTCluster_ECRing.getParameter<double>("xmin"),
0244                                             psTTCluster_ECRing.getParameter<double>("xmax"));
0245   Cluster_IMem_Endcap_Ring->setAxisTitle("Endcap Ring", 1);
0246   Cluster_IMem_Endcap_Ring->setAxisTitle("# L1 Clusters", 2);
0247 
0248   HistoName = "NClusters_OMem_Endcap_Ring";
0249   Cluster_OMem_Endcap_Ring = iBooker.book1D(HistoName,
0250                                             HistoName,
0251                                             psTTCluster_ECRing.getParameter<int32_t>("Nbinsx"),
0252                                             psTTCluster_ECRing.getParameter<double>("xmin"),
0253                                             psTTCluster_ECRing.getParameter<double>("xmax"));
0254   Cluster_OMem_Endcap_Ring->setAxisTitle("Endcap Ring", 1);
0255   Cluster_OMem_Endcap_Ring->setAxisTitle("# L1 Clusters", 2);
0256 
0257   for (int i = 0; i < numDiscs; i++) {
0258     HistoName = "NClusters_IMem_Disc+" + std::to_string(i + 1);
0259     Cluster_IMem_Endcap_Ring_Fw[i] = iBooker.book1D(HistoName,
0260                                                     HistoName,
0261                                                     psTTCluster_ECRing.getParameter<int32_t>("Nbinsx"),
0262                                                     psTTCluster_ECRing.getParameter<double>("xmin"),
0263                                                     psTTCluster_ECRing.getParameter<double>("xmax"));
0264     Cluster_IMem_Endcap_Ring_Fw[i]->setAxisTitle("Endcap Ring", 1);
0265     Cluster_IMem_Endcap_Ring_Fw[i]->setAxisTitle("# L1 Clusters ", 2);
0266   }
0267 
0268   for (int i = 0; i < numDiscs; i++) {
0269     HistoName = "NClusters_IMem_Disc-" + std::to_string(i + 1);
0270     Cluster_IMem_Endcap_Ring_Bw[i] = iBooker.book1D(HistoName,
0271                                                     HistoName,
0272                                                     psTTCluster_ECRing.getParameter<int32_t>("Nbinsx"),
0273                                                     psTTCluster_ECRing.getParameter<double>("xmin"),
0274                                                     psTTCluster_ECRing.getParameter<double>("xmax"));
0275     Cluster_IMem_Endcap_Ring_Bw[i]->setAxisTitle("Endcap Ring", 1);
0276     Cluster_IMem_Endcap_Ring_Bw[i]->setAxisTitle("# L1 Clusters ", 2);
0277   }
0278 
0279   for (int i = 0; i < numDiscs; i++) {
0280     HistoName = "NClusters_OMem_Disc+" + std::to_string(i + 1);
0281     Cluster_OMem_Endcap_Ring_Fw[i] = iBooker.book1D(HistoName,
0282                                                     HistoName,
0283                                                     psTTCluster_ECRing.getParameter<int32_t>("Nbinsx"),
0284                                                     psTTCluster_ECRing.getParameter<double>("xmin"),
0285                                                     psTTCluster_ECRing.getParameter<double>("xmax"));
0286     Cluster_OMem_Endcap_Ring_Fw[i]->setAxisTitle("Endcap Ring", 1);
0287     Cluster_OMem_Endcap_Ring_Fw[i]->setAxisTitle("# L1 Clusters ", 2);
0288   }
0289 
0290   for (int i = 0; i < numDiscs; i++) {
0291     HistoName = "NClusters_OMem_Disc-" + std::to_string(i + 1);
0292     Cluster_OMem_Endcap_Ring_Bw[i] = iBooker.book1D(HistoName,
0293                                                     HistoName,
0294                                                     psTTCluster_ECRing.getParameter<int32_t>("Nbinsx"),
0295                                                     psTTCluster_ECRing.getParameter<double>("xmin"),
0296                                                     psTTCluster_ECRing.getParameter<double>("xmax"));
0297     Cluster_OMem_Endcap_Ring_Bw[i]->setAxisTitle("Endcap Ring", 1);
0298     Cluster_OMem_Endcap_Ring_Bw[i]->setAxisTitle("# L1 Clusters ", 2);
0299   }
0300 
0301   iBooker.setCurrentFolder(topFolderName_ + "/Clusters");
0302 
0303   // Cluster Width
0304   edm::ParameterSet psTTClusterWidth = conf_.getParameter<edm::ParameterSet>("TH2TTCluster_Width");
0305   HistoName = "Cluster_W";
0306   Cluster_W = iBooker.book2D(HistoName,
0307                              HistoName,
0308                              psTTClusterWidth.getParameter<int32_t>("Nbinsx"),
0309                              psTTClusterWidth.getParameter<double>("xmin"),
0310                              psTTClusterWidth.getParameter<double>("xmax"),
0311                              psTTClusterWidth.getParameter<int32_t>("Nbinsy"),
0312                              psTTClusterWidth.getParameter<double>("ymin"),
0313                              psTTClusterWidth.getParameter<double>("ymax"));
0314   Cluster_W->setAxisTitle("L1 Cluster Width", 1);
0315   Cluster_W->setAxisTitle("Stack Member", 2);
0316 
0317   // Cluster eta distribution
0318   edm::ParameterSet psTTClusterEta = conf_.getParameter<edm::ParameterSet>("TH1TTCluster_Eta");
0319   HistoName = "Cluster_Eta";
0320   Cluster_Eta = iBooker.book1D(HistoName,
0321                                HistoName,
0322                                psTTClusterEta.getParameter<int32_t>("Nbinsx"),
0323                                psTTClusterEta.getParameter<double>("xmin"),
0324                                psTTClusterEta.getParameter<double>("xmax"));
0325   Cluster_Eta->setAxisTitle("#eta", 1);
0326   Cluster_Eta->setAxisTitle("# L1 Clusters ", 2);
0327 
0328   // Cluster phi distribution
0329   edm::ParameterSet psTTClusterPhi = conf_.getParameter<edm::ParameterSet>("TH1TTCluster_Phi");
0330   HistoName = "Cluster_Phi";
0331   Cluster_Phi = iBooker.book1D(HistoName,
0332                                HistoName,
0333                                psTTClusterPhi.getParameter<int32_t>("Nbinsx"),
0334                                psTTClusterPhi.getParameter<double>("xmin"),
0335                                psTTClusterPhi.getParameter<double>("xmax"));
0336   Cluster_Phi->setAxisTitle("#phi", 1);
0337   Cluster_Phi->setAxisTitle("# L1 Clusters", 2);
0338 
0339   // Cluster R distribution
0340   edm::ParameterSet psTTClusterR = conf_.getParameter<edm::ParameterSet>("TH1TTCluster_R");
0341   HistoName = "Cluster_R";
0342   Cluster_R = iBooker.book1D(HistoName,
0343                              HistoName,
0344                              psTTClusterR.getParameter<int32_t>("Nbinsx"),
0345                              psTTClusterR.getParameter<double>("xmin"),
0346                              psTTClusterR.getParameter<double>("xmax"));
0347   Cluster_R->setAxisTitle("R [cm]", 1);
0348   Cluster_R->setAxisTitle("# L1 Clusters", 2);
0349 
0350   iBooker.setCurrentFolder(topFolderName_ + "/Clusters/Position");
0351 
0352   // Position plots
0353   edm::ParameterSet psTTCluster_Barrel_XY = conf_.getParameter<edm::ParameterSet>("TH2TTCluster_Position");
0354   HistoName = "Cluster_Barrel_XY";
0355   Cluster_Barrel_XY = iBooker.book2D(HistoName,
0356                                      HistoName,
0357                                      psTTCluster_Barrel_XY.getParameter<int32_t>("Nbinsx"),
0358                                      psTTCluster_Barrel_XY.getParameter<double>("xmin"),
0359                                      psTTCluster_Barrel_XY.getParameter<double>("xmax"),
0360                                      psTTCluster_Barrel_XY.getParameter<int32_t>("Nbinsy"),
0361                                      psTTCluster_Barrel_XY.getParameter<double>("ymin"),
0362                                      psTTCluster_Barrel_XY.getParameter<double>("ymax"));
0363   Cluster_Barrel_XY->setAxisTitle("L1 Cluster Barrel position x [cm]", 1);
0364   Cluster_Barrel_XY->setAxisTitle("L1 Cluster Barrel position y [cm]", 2);
0365 
0366   edm::ParameterSet psTTCluster_Endcap_Fw_XY = conf_.getParameter<edm::ParameterSet>("TH2TTCluster_Position");
0367   HistoName = "Cluster_Endcap_Fw_XY";
0368   Cluster_Endcap_Fw_XY = iBooker.book2D(HistoName,
0369                                         HistoName,
0370                                         psTTCluster_Endcap_Fw_XY.getParameter<int32_t>("Nbinsx"),
0371                                         psTTCluster_Endcap_Fw_XY.getParameter<double>("xmin"),
0372                                         psTTCluster_Endcap_Fw_XY.getParameter<double>("xmax"),
0373                                         psTTCluster_Endcap_Fw_XY.getParameter<int32_t>("Nbinsy"),
0374                                         psTTCluster_Endcap_Fw_XY.getParameter<double>("ymin"),
0375                                         psTTCluster_Endcap_Fw_XY.getParameter<double>("ymax"));
0376   Cluster_Endcap_Fw_XY->setAxisTitle("L1 Cluster Forward Endcap position x [cm]", 1);
0377   Cluster_Endcap_Fw_XY->setAxisTitle("L1 Cluster Forward Endcap position y [cm]", 2);
0378 
0379   edm::ParameterSet psTTCluster_Endcap_Bw_XY = conf_.getParameter<edm::ParameterSet>("TH2TTCluster_Position");
0380   HistoName = "Cluster_Endcap_Bw_XY";
0381   Cluster_Endcap_Bw_XY = iBooker.book2D(HistoName,
0382                                         HistoName,
0383                                         psTTCluster_Endcap_Bw_XY.getParameter<int32_t>("Nbinsx"),
0384                                         psTTCluster_Endcap_Bw_XY.getParameter<double>("xmin"),
0385                                         psTTCluster_Endcap_Bw_XY.getParameter<double>("xmax"),
0386                                         psTTCluster_Endcap_Bw_XY.getParameter<int32_t>("Nbinsy"),
0387                                         psTTCluster_Endcap_Bw_XY.getParameter<double>("ymin"),
0388                                         psTTCluster_Endcap_Bw_XY.getParameter<double>("ymax"));
0389   Cluster_Endcap_Bw_XY->setAxisTitle("L1 Cluster Backward Endcap position x [cm]", 1);
0390   Cluster_Endcap_Bw_XY->setAxisTitle("L1 Cluster Backward Endcap position y [cm]", 2);
0391 
0392   // TTCluster #rho vs. z
0393   edm::ParameterSet psTTCluster_RZ = conf_.getParameter<edm::ParameterSet>("TH2TTCluster_RZ");
0394   HistoName = "Cluster_RZ";
0395   Cluster_RZ = iBooker.book2D(HistoName,
0396                               HistoName,
0397                               psTTCluster_RZ.getParameter<int32_t>("Nbinsx"),
0398                               psTTCluster_RZ.getParameter<double>("xmin"),
0399                               psTTCluster_RZ.getParameter<double>("xmax"),
0400                               psTTCluster_RZ.getParameter<int32_t>("Nbinsy"),
0401                               psTTCluster_RZ.getParameter<double>("ymin"),
0402                               psTTCluster_RZ.getParameter<double>("ymax"));
0403   Cluster_RZ->setAxisTitle("L1 Cluster position z [cm]", 1);
0404   Cluster_RZ->setAxisTitle("L1 Cluster position #rho [cm]", 2);
0405 
0406 }  // end of method
0407 
0408 DEFINE_FWK_MODULE(OuterTrackerMonitorTTCluster);