Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 // Package:    SiOuterTracker
0002 // Class:      SiOuterTracker
0003 //
0004 // Original Author:  Isis Marina Van Parijs
0005 // Modified by: Emily MacDonald (emily.kaelyn.macdonald@cern.ch)
0006 
0007 // system include files
0008 #include <memory>
0009 #include <numeric>
0010 #include <string>
0011 #include <vector>
0012 #include <bitset>
0013 
0014 // user include files
0015 #include "FWCore/Framework/interface/ESHandle.h"
0016 #include "FWCore/Framework/interface/Event.h"
0017 #include "FWCore/Framework/interface/Frameworkfwd.h"
0018 #include "FWCore/Framework/interface/MakerMacros.h"
0019 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0021 #include "FWCore/Utilities/interface/EDGetToken.h"
0022 #include "FWCore/ServiceRegistry/interface/Service.h"
0023 
0024 #include "CommonTools/Statistics/interface/ChiSquaredProbability.h"
0025 #include "DataFormats/Common/interface/DetSetVector.h"
0026 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0027 #include "DataFormats/Common/interface/Ptr.h"
0028 #include "DataFormats/Common/interface/Ref.h"
0029 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0030 #include "DataFormats/L1TrackTrigger/interface/TTTypes.h"
0031 #include "DataFormats/L1TrackTrigger/interface/TTCluster.h"
0032 #include "DataFormats/L1TrackTrigger/interface/TTStub.h"
0033 #include "DataFormats/L1TrackTrigger/interface/TTTrack.h"
0034 #include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
0035 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0036 
0037 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0038 #include "DQMServices/Core/interface/DQMStore.h"
0039 
0040 class Phase2OTMonitorTTTrack : public DQMEDAnalyzer {
0041 public:
0042   explicit Phase2OTMonitorTTTrack(const edm::ParameterSet &);
0043   ~Phase2OTMonitorTTTrack() override;
0044   void analyze(const edm::Event &, const edm::EventSetup &) override;
0045   void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
0046   static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
0047   /// Low-quality TTTracks (All tracks)
0048   MonitorElement *Track_All_N = nullptr;                 // Number of tracks per event
0049   MonitorElement *Track_All_NStubs = nullptr;            // Number of stubs per track
0050   MonitorElement *Track_All_NLayersMissed = nullptr;     // Number of layers missed per track
0051   MonitorElement *Track_All_Eta_NStubs = nullptr;        // Number of stubs per track vs eta
0052   MonitorElement *Track_All_Pt = nullptr;                // pT distrubtion for tracks
0053   MonitorElement *Track_All_Eta = nullptr;               // eta distrubtion for tracks
0054   MonitorElement *Track_All_Phi = nullptr;               // phi distrubtion for tracks
0055   MonitorElement *Track_All_D0 = nullptr;                // d0 distrubtion for tracks
0056   MonitorElement *Track_All_VtxZ = nullptr;              // z0 distrubtion for tracks
0057   MonitorElement *Track_All_BendChi2 = nullptr;          // Bendchi2 distrubtion for tracks
0058   MonitorElement *Track_All_Chi2 = nullptr;              // chi2 distrubtion for tracks
0059   MonitorElement *Track_All_Chi2Red = nullptr;           // chi2/dof distrubtion for tracks
0060   MonitorElement *Track_All_Chi2RZ = nullptr;            // chi2 r-phi distrubtion for tracks
0061   MonitorElement *Track_All_Chi2RPhi = nullptr;          // chi2 r-z distrubtion for tracks
0062   MonitorElement *Track_All_Chi2Red_NStubs = nullptr;    // chi2/dof vs number of stubs
0063   MonitorElement *Track_All_Chi2Red_Eta = nullptr;       // chi2/dof vs eta of track
0064   MonitorElement *Track_All_Eta_BarrelStubs = nullptr;   // eta vs number of stubs in barrel
0065   MonitorElement *Track_All_Eta_ECStubs = nullptr;       // eta vs number of stubs in end caps
0066   MonitorElement *Track_All_Chi2_Probability = nullptr;  // chi2 probability
0067   MonitorElement *Track_All_MVA1 = nullptr;              // MVA1 (prompt quality) distribution
0068 
0069   /// High-quality TTTracks; different depending on prompt vs displaced tracks
0070   // Quality cuts: chi2/dof<10, bendchi2<2.2 (Prompt), default in config
0071   // Quality cuts: chi2/dof<40, bendchi2<2.4 (Extended/Displaced tracks)
0072   MonitorElement *Track_HQ_N = nullptr;                 // Number of tracks per event
0073   MonitorElement *Track_HQ_NStubs = nullptr;            // Number of stubs per track
0074   MonitorElement *Track_HQ_NLayersMissed = nullptr;     // Number of layers missed per track
0075   MonitorElement *Track_HQ_Eta_NStubs = nullptr;        // Number of stubs per track vs eta
0076   MonitorElement *Track_HQ_Pt = nullptr;                // pT distrubtion for tracks
0077   MonitorElement *Track_HQ_Eta = nullptr;               // eta distrubtion for tracks
0078   MonitorElement *Track_HQ_Phi = nullptr;               // phi distrubtion for tracks
0079   MonitorElement *Track_HQ_D0 = nullptr;                // d0 distrubtion for tracks
0080   MonitorElement *Track_HQ_VtxZ = nullptr;              // z0 distrubtion for tracks
0081   MonitorElement *Track_HQ_BendChi2 = nullptr;          // Bendchi2 distrubtion for tracks
0082   MonitorElement *Track_HQ_Chi2 = nullptr;              // chi2 distrubtion for tracks
0083   MonitorElement *Track_HQ_Chi2Red = nullptr;           // chi2/dof distrubtion for tracks
0084   MonitorElement *Track_HQ_Chi2RZ = nullptr;            // chi2 r-z distrubtion for tracks
0085   MonitorElement *Track_HQ_Chi2RPhi = nullptr;          // chi2 r-phi distrubtion for tracks
0086   MonitorElement *Track_HQ_Chi2Red_NStubs = nullptr;    // chi2/dof vs number of stubs
0087   MonitorElement *Track_HQ_Chi2Red_Eta = nullptr;       // chi2/dof vs eta of track
0088   MonitorElement *Track_HQ_Eta_BarrelStubs = nullptr;   // eta vs number of stubs in barrel
0089   MonitorElement *Track_HQ_Eta_ECStubs = nullptr;       // eta vs number of stubs in end caps
0090   MonitorElement *Track_HQ_Chi2_Probability = nullptr;  // chi2 probability
0091   MonitorElement *Track_HQ_MVA1 = nullptr;              // MVA1 (prompt quality) distribution
0092 
0093 private:
0094   edm::ParameterSet conf_;
0095   edm::EDGetTokenT<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>> ttTrackToken_;
0096 
0097   unsigned int HQNStubs_;
0098   double HQChi2dof_;
0099   double HQBendChi2_;
0100   std::string topFolderName_;
0101 };
0102 
0103 // constructors and destructor
0104 Phase2OTMonitorTTTrack::Phase2OTMonitorTTTrack(const edm::ParameterSet &iConfig) : conf_(iConfig) {
0105   topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
0106   ttTrackToken_ =
0107       consumes<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>>(conf_.getParameter<edm::InputTag>("TTTracksTag"));
0108   HQNStubs_ = conf_.getParameter<int>("HQNStubs");
0109   HQChi2dof_ = conf_.getParameter<double>("HQChi2dof");
0110   HQBendChi2_ = conf_.getParameter<double>("HQBendChi2");
0111 }
0112 
0113 Phase2OTMonitorTTTrack::~Phase2OTMonitorTTTrack() {
0114   // do anything here that needs to be done at desctruction time
0115   // (e.g. close files, deallocate resources etc.)
0116 }
0117 
0118 // ------------ method called for each event  ------------
0119 void Phase2OTMonitorTTTrack::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) {
0120   // L1 Primaries
0121   edm::Handle<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>> TTTrackHandle;
0122   iEvent.getByToken(ttTrackToken_, TTTrackHandle);
0123 
0124   /// Track Trigger Tracks
0125   unsigned int numAllTracks = 0;
0126   unsigned int numHQTracks = 0;
0127 
0128   // Adding protection
0129   if (!TTTrackHandle.isValid())
0130     return;
0131 
0132   /// Loop over TTTracks
0133   unsigned int tkCnt = 0;
0134   for (const auto &iterTTTrack : *TTTrackHandle) {
0135     edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_>> tempTrackPtr(TTTrackHandle, tkCnt++);  /// Make the pointer
0136 
0137     unsigned int nStubs = tempTrackPtr->getStubRefs().size();
0138     int nBarrelStubs = 0;
0139     int nECStubs = 0;
0140 
0141     float track_eta = tempTrackPtr->momentum().eta();
0142     float track_d0 = tempTrackPtr->d0();
0143     float track_bendchi2 = tempTrackPtr->stubPtConsistency();
0144     float track_chi2 = tempTrackPtr->chi2();
0145     float track_chi2dof = tempTrackPtr->chi2Red();
0146     float track_chi2rz = tempTrackPtr->chi2Z();
0147     float track_chi2rphi = tempTrackPtr->chi2XY();
0148     float track_MVA1 = tempTrackPtr->trkMVA1();
0149     int nLayersMissed = 0;
0150     unsigned int hitPattern_ = (unsigned int)tempTrackPtr->hitPattern();
0151 
0152     int nbits = floor(log2(hitPattern_)) + 1;
0153     int lay_i = 0;
0154     bool seq = false;
0155     for (int i = 0; i < nbits; i++) {
0156       lay_i = ((1 << i) & hitPattern_) >> i;  //0 or 1 in ith bit (right to left)
0157       if (lay_i && !seq)
0158         seq = true;  //sequence starts when first 1 found
0159       if (!lay_i && seq)
0160         nLayersMissed++;
0161     }
0162 
0163     std::vector<edm::Ref<edmNew::DetSetVector<TTStub<Ref_Phase2TrackerDigi_>>, TTStub<Ref_Phase2TrackerDigi_>>>
0164         theStubs = iterTTTrack.getStubRefs();
0165     for (const auto &istub : theStubs) {
0166       bool inBarrel = false;
0167       bool inEC = false;
0168 
0169       if (istub->getDetId().subdetId() == StripSubdetector::TOB)
0170         inBarrel = true;
0171       else if (istub->getDetId().subdetId() == StripSubdetector::TID)
0172         inEC = true;
0173       if (inBarrel)
0174         nBarrelStubs++;
0175       else if (inEC)
0176         nECStubs++;
0177     }  // end loop over stubs
0178 
0179     // HQ tracks: bendchi2<2.2 and chi2/dof<10
0180     if (nStubs >= HQNStubs_ && track_chi2dof <= HQChi2dof_ && track_bendchi2 <= HQBendChi2_) {
0181       numHQTracks++;
0182 
0183       Track_HQ_NStubs->Fill(nStubs);
0184       Track_HQ_NLayersMissed->Fill(nLayersMissed);
0185       Track_HQ_Eta_NStubs->Fill(track_eta, nStubs);
0186       Track_HQ_Pt->Fill(tempTrackPtr->momentum().perp());
0187       Track_HQ_Eta->Fill(track_eta);
0188       Track_HQ_Phi->Fill(tempTrackPtr->momentum().phi());
0189       Track_HQ_D0->Fill(track_d0);
0190       Track_HQ_VtxZ->Fill(tempTrackPtr->z0());
0191       Track_HQ_BendChi2->Fill(track_bendchi2);
0192       Track_HQ_Chi2->Fill(track_chi2);
0193       Track_HQ_Chi2RZ->Fill(track_chi2rz);
0194       Track_HQ_Chi2RPhi->Fill(track_chi2rphi);
0195       Track_HQ_Chi2Red->Fill(track_chi2dof);
0196       Track_HQ_Chi2Red_NStubs->Fill(nStubs, track_chi2dof);
0197       Track_HQ_Chi2Red_Eta->Fill(track_eta, track_chi2dof);
0198       Track_HQ_Eta_BarrelStubs->Fill(track_eta, nBarrelStubs);
0199       Track_HQ_Eta_ECStubs->Fill(track_eta, nECStubs);
0200       Track_HQ_Chi2_Probability->Fill(ChiSquaredProbability(track_chi2, nStubs));
0201       Track_HQ_MVA1->Fill(track_MVA1);
0202     }
0203 
0204     // All tracks (including HQ tracks)
0205     numAllTracks++;
0206     Track_All_NStubs->Fill(nStubs);
0207     Track_All_NLayersMissed->Fill(nLayersMissed);
0208     Track_All_Eta_NStubs->Fill(track_eta, nStubs);
0209     Track_All_Pt->Fill(tempTrackPtr->momentum().perp());
0210     Track_All_Eta->Fill(track_eta);
0211     Track_All_Phi->Fill(tempTrackPtr->momentum().phi());
0212     Track_All_D0->Fill(track_d0);
0213     Track_All_VtxZ->Fill(tempTrackPtr->z0());
0214     Track_All_BendChi2->Fill(track_bendchi2);
0215     Track_All_Chi2->Fill(track_chi2);
0216     Track_All_Chi2RZ->Fill(track_chi2rz);
0217     Track_All_Chi2RPhi->Fill(track_chi2rphi);
0218     Track_All_Chi2Red->Fill(track_chi2dof);
0219     Track_All_Chi2Red_NStubs->Fill(nStubs, track_chi2dof);
0220     Track_All_Chi2Red_Eta->Fill(track_eta, track_chi2dof);
0221     Track_All_Eta_BarrelStubs->Fill(track_eta, nBarrelStubs);
0222     Track_All_Eta_ECStubs->Fill(track_eta, nECStubs);
0223     Track_All_Chi2_Probability->Fill(ChiSquaredProbability(track_chi2, nStubs));
0224     Track_All_MVA1->Fill(track_MVA1);
0225   }  // End of loop over TTTracks
0226 
0227   Track_HQ_N->Fill(numHQTracks);
0228   Track_All_N->Fill(numAllTracks);
0229 }  // end of method
0230 
0231 // ------------ method called once each job just before starting event loop
0232 // ------------
0233 // Creating all histograms for DQM file output
0234 void Phase2OTMonitorTTTrack::bookHistograms(DQMStore::IBooker &iBooker,
0235                                             edm::Run const &run,
0236                                             edm::EventSetup const &es) {
0237   std::string HistoName;
0238 
0239   /// Low-quality tracks (All tracks, including HQ tracks)
0240   iBooker.setCurrentFolder(topFolderName_ + "/Tracks/All");
0241   // Nb of L1Tracks
0242   HistoName = "Track_All_N";
0243   edm::ParameterSet psTrack_N = conf_.getParameter<edm::ParameterSet>("TH1_NTracks");
0244   Track_All_N = iBooker.book1D(HistoName,
0245                                HistoName,
0246                                psTrack_N.getParameter<int32_t>("Nbinsx"),
0247                                psTrack_N.getParameter<double>("xmin"),
0248                                psTrack_N.getParameter<double>("xmax"));
0249   Track_All_N->setAxisTitle("# L1 Tracks", 1);
0250   Track_All_N->setAxisTitle("# Events", 2);
0251 
0252   // Number of stubs
0253   edm::ParameterSet psTrack_NStubs = conf_.getParameter<edm::ParameterSet>("TH1_NStubs");
0254   HistoName = "Track_All_NStubs";
0255   Track_All_NStubs = iBooker.book1D(HistoName,
0256                                     HistoName,
0257                                     psTrack_NStubs.getParameter<int32_t>("Nbinsx"),
0258                                     psTrack_NStubs.getParameter<double>("xmin"),
0259                                     psTrack_NStubs.getParameter<double>("xmax"));
0260   Track_All_NStubs->setAxisTitle("# L1 Stubs per L1 Track", 1);
0261   Track_All_NStubs->setAxisTitle("# L1 Tracks", 2);
0262 
0263   // Number of layers missed
0264   HistoName = "Track_All_NLayersMissed";
0265   Track_All_NLayersMissed = iBooker.book1D(HistoName,
0266                                            HistoName,
0267                                            psTrack_NStubs.getParameter<int32_t>("Nbinsx"),
0268                                            psTrack_NStubs.getParameter<double>("xmin"),
0269                                            psTrack_NStubs.getParameter<double>("xmax"));
0270   Track_All_NLayersMissed->setAxisTitle("# Layers missed", 1);
0271   Track_All_NLayersMissed->setAxisTitle("# L1 Tracks", 2);
0272 
0273   edm::ParameterSet psTrack_Eta_NStubs = conf_.getParameter<edm::ParameterSet>("TH2_Track_Eta_NStubs");
0274   HistoName = "Track_All_Eta_NStubs";
0275   Track_All_Eta_NStubs = iBooker.book2D(HistoName,
0276                                         HistoName,
0277                                         psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsx"),
0278                                         psTrack_Eta_NStubs.getParameter<double>("xmin"),
0279                                         psTrack_Eta_NStubs.getParameter<double>("xmax"),
0280                                         psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsy"),
0281                                         psTrack_Eta_NStubs.getParameter<double>("ymin"),
0282                                         psTrack_Eta_NStubs.getParameter<double>("ymax"));
0283   Track_All_Eta_NStubs->setAxisTitle("#eta", 1);
0284   Track_All_Eta_NStubs->setAxisTitle("# L1 Stubs", 2);
0285 
0286   // Pt of the tracks
0287   edm::ParameterSet psTrack_Pt = conf_.getParameter<edm::ParameterSet>("TH1_Track_Pt");
0288   HistoName = "Track_All_Pt";
0289   Track_All_Pt = iBooker.book1D(HistoName,
0290                                 HistoName,
0291                                 psTrack_Pt.getParameter<int32_t>("Nbinsx"),
0292                                 psTrack_Pt.getParameter<double>("xmin"),
0293                                 psTrack_Pt.getParameter<double>("xmax"));
0294   Track_All_Pt->setAxisTitle("p_{T} [GeV]", 1);
0295   Track_All_Pt->setAxisTitle("# L1 Tracks", 2);
0296 
0297   // Phi
0298   edm::ParameterSet psTrack_Phi = conf_.getParameter<edm::ParameterSet>("TH1_Track_Phi");
0299   HistoName = "Track_All_Phi";
0300   Track_All_Phi = iBooker.book1D(HistoName,
0301                                  HistoName,
0302                                  psTrack_Phi.getParameter<int32_t>("Nbinsx"),
0303                                  psTrack_Phi.getParameter<double>("xmin"),
0304                                  psTrack_Phi.getParameter<double>("xmax"));
0305   Track_All_Phi->setAxisTitle("#phi", 1);
0306   Track_All_Phi->setAxisTitle("# L1 Tracks", 2);
0307 
0308   // D0
0309   edm::ParameterSet psTrack_D0 = conf_.getParameter<edm::ParameterSet>("TH1_Track_D0");
0310   HistoName = "Track_All_D0";
0311   Track_All_D0 = iBooker.book1D(HistoName,
0312                                 HistoName,
0313                                 psTrack_D0.getParameter<int32_t>("Nbinsx"),
0314                                 psTrack_D0.getParameter<double>("xmin"),
0315                                 psTrack_D0.getParameter<double>("xmax"));
0316   Track_All_D0->setAxisTitle("Track D0", 1);
0317   Track_All_D0->setAxisTitle("# L1 Tracks", 2);
0318 
0319   // Eta
0320   edm::ParameterSet psTrack_Eta = conf_.getParameter<edm::ParameterSet>("TH1_Track_Eta");
0321   HistoName = "Track_All_Eta";
0322   Track_All_Eta = iBooker.book1D(HistoName,
0323                                  HistoName,
0324                                  psTrack_Eta.getParameter<int32_t>("Nbinsx"),
0325                                  psTrack_Eta.getParameter<double>("xmin"),
0326                                  psTrack_Eta.getParameter<double>("xmax"));
0327   Track_All_Eta->setAxisTitle("#eta", 1);
0328   Track_All_Eta->setAxisTitle("# L1 Tracks", 2);
0329 
0330   // VtxZ
0331   edm::ParameterSet psTrack_VtxZ = conf_.getParameter<edm::ParameterSet>("TH1_Track_VtxZ");
0332   HistoName = "Track_All_VtxZ";
0333   Track_All_VtxZ = iBooker.book1D(HistoName,
0334                                   HistoName,
0335                                   psTrack_VtxZ.getParameter<int32_t>("Nbinsx"),
0336                                   psTrack_VtxZ.getParameter<double>("xmin"),
0337                                   psTrack_VtxZ.getParameter<double>("xmax"));
0338   Track_All_VtxZ->setAxisTitle("L1 Track vertex position z [cm]", 1);
0339   Track_All_VtxZ->setAxisTitle("# L1 Tracks", 2);
0340 
0341   // chi2
0342   edm::ParameterSet psTrack_Chi2 = conf_.getParameter<edm::ParameterSet>("TH1_Track_Chi2");
0343   HistoName = "Track_All_Chi2";
0344   Track_All_Chi2 = iBooker.book1D(HistoName,
0345                                   HistoName,
0346                                   psTrack_Chi2.getParameter<int32_t>("Nbinsx"),
0347                                   psTrack_Chi2.getParameter<double>("xmin"),
0348                                   psTrack_Chi2.getParameter<double>("xmax"));
0349   Track_All_Chi2->setAxisTitle("L1 Track #chi^{2}", 1);
0350   Track_All_Chi2->setAxisTitle("# L1 Tracks", 2);
0351 
0352   // chi2 r-z
0353   HistoName = "Track_All_Chi2RZ";
0354   Track_All_Chi2RZ = iBooker.book1D(HistoName,
0355                                     HistoName,
0356                                     psTrack_Chi2.getParameter<int32_t>("Nbinsx"),
0357                                     psTrack_Chi2.getParameter<double>("xmin"),
0358                                     psTrack_Chi2.getParameter<double>("xmax"));
0359   Track_All_Chi2RZ->setAxisTitle("L1 Track #chi^{2} r-z", 1);
0360   Track_All_Chi2RZ->setAxisTitle("# L1 Tracks", 2);
0361 
0362   // chi2 r-phi
0363   HistoName = "Track_All_Chi2RPhi";
0364   Track_All_Chi2RPhi = iBooker.book1D(HistoName,
0365                                       HistoName,
0366                                       psTrack_Chi2.getParameter<int32_t>("Nbinsx"),
0367                                       psTrack_Chi2.getParameter<double>("xmin"),
0368                                       psTrack_Chi2.getParameter<double>("xmax"));
0369   Track_All_Chi2RPhi->setAxisTitle("L1 Track #chi^{2}", 1);
0370   Track_All_Chi2RPhi->setAxisTitle("# L1 Tracks", 2);
0371 
0372   // Bendchi2
0373   edm::ParameterSet psTrack_Chi2R = conf_.getParameter<edm::ParameterSet>("TH1_Track_Chi2R");
0374   HistoName = "Track_All_BendChi2";
0375   Track_All_BendChi2 = iBooker.book1D(HistoName,
0376                                       HistoName,
0377                                       psTrack_Chi2R.getParameter<int32_t>("Nbinsx"),
0378                                       psTrack_Chi2R.getParameter<double>("xmin"),
0379                                       psTrack_Chi2R.getParameter<double>("xmax"));
0380   Track_All_BendChi2->setAxisTitle("L1 Track Bend #chi^{2}", 1);
0381   Track_All_BendChi2->setAxisTitle("# L1 Tracks", 2);
0382 
0383   // chi2Red
0384   edm::ParameterSet psTrack_Chi2Red = conf_.getParameter<edm::ParameterSet>("TH1_Track_Chi2R");
0385   HistoName = "Track_All_Chi2Red";
0386   Track_All_Chi2Red = iBooker.book1D(HistoName,
0387                                      HistoName,
0388                                      psTrack_Chi2R.getParameter<int32_t>("Nbinsx"),
0389                                      psTrack_Chi2R.getParameter<double>("xmin"),
0390                                      psTrack_Chi2R.getParameter<double>("xmax"));
0391   Track_All_Chi2Red->setAxisTitle("L1 Track #chi^{2}/ndf", 1);
0392   Track_All_Chi2Red->setAxisTitle("# L1 Tracks", 2);
0393 
0394   // Chi2 prob
0395   edm::ParameterSet psTrack_Chi2_Probability = conf_.getParameter<edm::ParameterSet>("TH1_Track_Chi2_Probability");
0396   HistoName = "Track_All_Chi2_Probability";
0397   Track_All_Chi2_Probability = iBooker.book1D(HistoName,
0398                                               HistoName,
0399                                               psTrack_Chi2_Probability.getParameter<int32_t>("Nbinsx"),
0400                                               psTrack_Chi2_Probability.getParameter<double>("xmin"),
0401                                               psTrack_Chi2_Probability.getParameter<double>("xmax"));
0402   Track_All_Chi2_Probability->setAxisTitle("#chi^{2} probability", 1);
0403   Track_All_Chi2_Probability->setAxisTitle("# L1 Tracks", 2);
0404 
0405   // MVA1 (prompt quality)
0406   edm::ParameterSet psTrack_MVA1 = conf_.getParameter<edm::ParameterSet>("TH1_Track_MVA1");
0407   HistoName = "Track_All_MVA1";
0408   Track_All_MVA1 = iBooker.book1D(HistoName,
0409                                   HistoName,
0410                                   psTrack_MVA1.getParameter<int32_t>("Nbinsx"),
0411                                   psTrack_MVA1.getParameter<double>("xmin"),
0412                                   psTrack_MVA1.getParameter<double>("xmax"));
0413   Track_All_MVA1->setAxisTitle("MVA1", 1);
0414   Track_All_MVA1->setAxisTitle("# L1 Tracks", 2);
0415 
0416   // Reduced chi2 vs #stubs
0417   edm::ParameterSet psTrack_Chi2R_NStubs = conf_.getParameter<edm::ParameterSet>("TH2_Track_Chi2R_NStubs");
0418   HistoName = "Track_All_Chi2Red_NStubs";
0419   Track_All_Chi2Red_NStubs = iBooker.book2D(HistoName,
0420                                             HistoName,
0421                                             psTrack_Chi2R_NStubs.getParameter<int32_t>("Nbinsx"),
0422                                             psTrack_Chi2R_NStubs.getParameter<double>("xmin"),
0423                                             psTrack_Chi2R_NStubs.getParameter<double>("xmax"),
0424                                             psTrack_Chi2R_NStubs.getParameter<int32_t>("Nbinsy"),
0425                                             psTrack_Chi2R_NStubs.getParameter<double>("ymin"),
0426                                             psTrack_Chi2R_NStubs.getParameter<double>("ymax"));
0427   Track_All_Chi2Red_NStubs->setAxisTitle("# L1 Stubs", 1);
0428   Track_All_Chi2Red_NStubs->setAxisTitle("L1 Track #chi^{2}/ndf", 2);
0429 
0430   // chi2/dof vs eta
0431   edm::ParameterSet psTrack_Chi2R_Eta = conf_.getParameter<edm::ParameterSet>("TH2_Track_Chi2R_Eta");
0432   HistoName = "Track_All_Chi2Red_Eta";
0433   Track_All_Chi2Red_Eta = iBooker.book2D(HistoName,
0434                                          HistoName,
0435                                          psTrack_Chi2R_Eta.getParameter<int32_t>("Nbinsx"),
0436                                          psTrack_Chi2R_Eta.getParameter<double>("xmin"),
0437                                          psTrack_Chi2R_Eta.getParameter<double>("xmax"),
0438                                          psTrack_Chi2R_Eta.getParameter<int32_t>("Nbinsy"),
0439                                          psTrack_Chi2R_Eta.getParameter<double>("ymin"),
0440                                          psTrack_Chi2R_Eta.getParameter<double>("ymax"));
0441   Track_All_Chi2Red_Eta->setAxisTitle("#eta", 1);
0442   Track_All_Chi2Red_Eta->setAxisTitle("L1 Track #chi^{2}/ndf", 2);
0443 
0444   // Eta vs #stubs in barrel
0445   HistoName = "Track_All_Eta_BarrelStubs";
0446   Track_All_Eta_BarrelStubs = iBooker.book2D(HistoName,
0447                                              HistoName,
0448                                              psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsx"),
0449                                              psTrack_Eta_NStubs.getParameter<double>("xmin"),
0450                                              psTrack_Eta_NStubs.getParameter<double>("xmax"),
0451                                              psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsy"),
0452                                              psTrack_Eta_NStubs.getParameter<double>("ymin"),
0453                                              psTrack_Eta_NStubs.getParameter<double>("ymax"));
0454   Track_All_Eta_BarrelStubs->setAxisTitle("#eta", 1);
0455   Track_All_Eta_BarrelStubs->setAxisTitle("# L1 Barrel Stubs", 2);
0456 
0457   // Eta vs #stubs in EC
0458   HistoName = "Track_LQ_Eta_ECStubs";
0459   Track_All_Eta_ECStubs = iBooker.book2D(HistoName,
0460                                          HistoName,
0461                                          psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsx"),
0462                                          psTrack_Eta_NStubs.getParameter<double>("xmin"),
0463                                          psTrack_Eta_NStubs.getParameter<double>("xmax"),
0464                                          psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsy"),
0465                                          psTrack_Eta_NStubs.getParameter<double>("ymin"),
0466                                          psTrack_Eta_NStubs.getParameter<double>("ymax"));
0467   Track_All_Eta_ECStubs->setAxisTitle("#eta", 1);
0468   Track_All_Eta_ECStubs->setAxisTitle("# L1 EC Stubs", 2);
0469 
0470   /// High-quality tracks (Bendchi2 < 2.2 and chi2/dof < 10)
0471   iBooker.setCurrentFolder(topFolderName_ + "/Tracks/HQ");
0472   // Nb of L1Tracks
0473   HistoName = "Track_HQ_N";
0474   Track_HQ_N = iBooker.book1D(HistoName,
0475                               HistoName,
0476                               psTrack_N.getParameter<int32_t>("Nbinsx"),
0477                               psTrack_N.getParameter<double>("xmin"),
0478                               psTrack_N.getParameter<double>("xmax"));
0479   Track_HQ_N->setAxisTitle("# L1 Tracks", 1);
0480   Track_HQ_N->setAxisTitle("# Events", 2);
0481 
0482   // Number of stubs
0483   HistoName = "Track_HQ_NStubs";
0484   Track_HQ_NStubs = iBooker.book1D(HistoName,
0485                                    HistoName,
0486                                    psTrack_NStubs.getParameter<int32_t>("Nbinsx"),
0487                                    psTrack_NStubs.getParameter<double>("xmin"),
0488                                    psTrack_NStubs.getParameter<double>("xmax"));
0489   Track_HQ_NStubs->setAxisTitle("# L1 Stubs per L1 Track", 1);
0490   Track_HQ_NStubs->setAxisTitle("# L1 Tracks", 2);
0491 
0492   // Number of layers missed
0493   HistoName = "Track_HQ_NLayersMissed";
0494   Track_HQ_NLayersMissed = iBooker.book1D(HistoName,
0495                                           HistoName,
0496                                           psTrack_NStubs.getParameter<int32_t>("Nbinsx"),
0497                                           psTrack_NStubs.getParameter<double>("xmin"),
0498                                           psTrack_NStubs.getParameter<double>("xmax"));
0499   Track_HQ_NLayersMissed->setAxisTitle("# Layers missed", 1);
0500   Track_HQ_NLayersMissed->setAxisTitle("# L1 Tracks", 2);
0501 
0502   // Track eta vs #stubs
0503   HistoName = "Track_HQ_Eta_NStubs";
0504   Track_HQ_Eta_NStubs = iBooker.book2D(HistoName,
0505                                        HistoName,
0506                                        psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsx"),
0507                                        psTrack_Eta_NStubs.getParameter<double>("xmin"),
0508                                        psTrack_Eta_NStubs.getParameter<double>("xmax"),
0509                                        psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsy"),
0510                                        psTrack_Eta_NStubs.getParameter<double>("ymin"),
0511                                        psTrack_Eta_NStubs.getParameter<double>("ymax"));
0512   Track_HQ_Eta_NStubs->setAxisTitle("#eta", 1);
0513   Track_HQ_Eta_NStubs->setAxisTitle("# L1 Stubs", 2);
0514 
0515   // Pt of the tracks
0516   HistoName = "Track_HQ_Pt";
0517   Track_HQ_Pt = iBooker.book1D(HistoName,
0518                                HistoName,
0519                                psTrack_Pt.getParameter<int32_t>("Nbinsx"),
0520                                psTrack_Pt.getParameter<double>("xmin"),
0521                                psTrack_Pt.getParameter<double>("xmax"));
0522   Track_HQ_Pt->setAxisTitle("p_{T} [GeV]", 1);
0523   Track_HQ_Pt->setAxisTitle("# L1 Tracks", 2);
0524 
0525   // Phi
0526   HistoName = "Track_HQ_Phi";
0527   Track_HQ_Phi = iBooker.book1D(HistoName,
0528                                 HistoName,
0529                                 psTrack_Phi.getParameter<int32_t>("Nbinsx"),
0530                                 psTrack_Phi.getParameter<double>("xmin"),
0531                                 psTrack_Phi.getParameter<double>("xmax"));
0532   Track_HQ_Phi->setAxisTitle("#phi", 1);
0533   Track_HQ_Phi->setAxisTitle("# L1 Tracks", 2);
0534 
0535   // D0
0536   HistoName = "Track_HQ_D0";
0537   Track_HQ_D0 = iBooker.book1D(HistoName,
0538                                HistoName,
0539                                psTrack_D0.getParameter<int32_t>("Nbinsx"),
0540                                psTrack_D0.getParameter<double>("xmin"),
0541                                psTrack_D0.getParameter<double>("xmax"));
0542   Track_HQ_D0->setAxisTitle("Track D0", 1);
0543   Track_HQ_D0->setAxisTitle("# L1 Tracks", 2);
0544 
0545   // Eta
0546   HistoName = "Track_HQ_Eta";
0547   Track_HQ_Eta = iBooker.book1D(HistoName,
0548                                 HistoName,
0549                                 psTrack_Eta.getParameter<int32_t>("Nbinsx"),
0550                                 psTrack_Eta.getParameter<double>("xmin"),
0551                                 psTrack_Eta.getParameter<double>("xmax"));
0552   Track_HQ_Eta->setAxisTitle("#eta", 1);
0553   Track_HQ_Eta->setAxisTitle("# L1 Tracks", 2);
0554 
0555   // VtxZ
0556   HistoName = "Track_HQ_VtxZ";
0557   Track_HQ_VtxZ = iBooker.book1D(HistoName,
0558                                  HistoName,
0559                                  psTrack_VtxZ.getParameter<int32_t>("Nbinsx"),
0560                                  psTrack_VtxZ.getParameter<double>("xmin"),
0561                                  psTrack_VtxZ.getParameter<double>("xmax"));
0562   Track_HQ_VtxZ->setAxisTitle("L1 Track vertex position z [cm]", 1);
0563   Track_HQ_VtxZ->setAxisTitle("# L1 Tracks", 2);
0564 
0565   // chi2
0566   HistoName = "Track_HQ_Chi2";
0567   Track_HQ_Chi2 = iBooker.book1D(HistoName,
0568                                  HistoName,
0569                                  psTrack_Chi2.getParameter<int32_t>("Nbinsx"),
0570                                  psTrack_Chi2.getParameter<double>("xmin"),
0571                                  psTrack_Chi2.getParameter<double>("xmax"));
0572   Track_HQ_Chi2->setAxisTitle("L1 Track #chi^{2}", 1);
0573   Track_HQ_Chi2->setAxisTitle("# L1 Tracks", 2);
0574 
0575   // Bendchi2
0576   HistoName = "Track_HQ_BendChi2";
0577   Track_HQ_BendChi2 = iBooker.book1D(HistoName,
0578                                      HistoName,
0579                                      psTrack_Chi2R.getParameter<int32_t>("Nbinsx"),
0580                                      psTrack_Chi2R.getParameter<double>("xmin"),
0581                                      psTrack_Chi2R.getParameter<double>("xmax"));
0582   Track_HQ_BendChi2->setAxisTitle("L1 Track Bend #chi^{2}", 1);
0583   Track_HQ_BendChi2->setAxisTitle("# L1 Tracks", 2);
0584 
0585   // chi2 r-z
0586   HistoName = "Track_HQ_Chi2RZ";
0587   Track_HQ_Chi2RZ = iBooker.book1D(HistoName,
0588                                    HistoName,
0589                                    psTrack_Chi2.getParameter<int32_t>("Nbinsx"),
0590                                    psTrack_Chi2.getParameter<double>("xmin"),
0591                                    psTrack_Chi2.getParameter<double>("xmax"));
0592   Track_HQ_Chi2RZ->setAxisTitle("L1 Track #chi^{2} r-z", 1);
0593   Track_HQ_Chi2RZ->setAxisTitle("# L1 Tracks", 2);
0594 
0595   HistoName = "Track_HQ_Chi2RPhi";
0596   Track_HQ_Chi2RPhi = iBooker.book1D(HistoName,
0597                                      HistoName,
0598                                      psTrack_Chi2.getParameter<int32_t>("Nbinsx"),
0599                                      psTrack_Chi2.getParameter<double>("xmin"),
0600                                      psTrack_Chi2.getParameter<double>("xmax"));
0601   Track_HQ_Chi2RPhi->setAxisTitle("L1 Track #chi^{2} r-phi", 1);
0602   Track_HQ_Chi2RPhi->setAxisTitle("# L1 Tracks", 2);
0603 
0604   // chi2Red
0605   HistoName = "Track_HQ_Chi2Red";
0606   Track_HQ_Chi2Red = iBooker.book1D(HistoName,
0607                                     HistoName,
0608                                     psTrack_Chi2R.getParameter<int32_t>("Nbinsx"),
0609                                     psTrack_Chi2R.getParameter<double>("xmin"),
0610                                     psTrack_Chi2R.getParameter<double>("xmax"));
0611   Track_HQ_Chi2Red->setAxisTitle("L1 Track #chi^{2}/ndf", 1);
0612   Track_HQ_Chi2Red->setAxisTitle("# L1 Tracks", 2);
0613 
0614   // Chi2 prob
0615   HistoName = "Track_HQ_Chi2_Probability";
0616   Track_HQ_Chi2_Probability = iBooker.book1D(HistoName,
0617                                              HistoName,
0618                                              psTrack_Chi2_Probability.getParameter<int32_t>("Nbinsx"),
0619                                              psTrack_Chi2_Probability.getParameter<double>("xmin"),
0620                                              psTrack_Chi2_Probability.getParameter<double>("xmax"));
0621   Track_HQ_Chi2_Probability->setAxisTitle("#chi^{2} probability", 1);
0622   Track_HQ_Chi2_Probability->setAxisTitle("# L1 Tracks", 2);
0623 
0624   // MVA1 (prompt quality)
0625   HistoName = "Track_HQ_MVA1";
0626   Track_HQ_MVA1 = iBooker.book1D(HistoName,
0627                                  HistoName,
0628                                  psTrack_MVA1.getParameter<int32_t>("Nbinsx"),
0629                                  psTrack_MVA1.getParameter<double>("xmin"),
0630                                  psTrack_MVA1.getParameter<double>("xmax"));
0631   Track_HQ_MVA1->setAxisTitle("MVA1", 1);
0632   Track_HQ_MVA1->setAxisTitle("# L1 Tracks", 2);
0633 
0634   // Reduced chi2 vs #stubs
0635   HistoName = "Track_HQ_Chi2Red_NStubs";
0636   Track_HQ_Chi2Red_NStubs = iBooker.book2D(HistoName,
0637                                            HistoName,
0638                                            psTrack_Chi2R_NStubs.getParameter<int32_t>("Nbinsx"),
0639                                            psTrack_Chi2R_NStubs.getParameter<double>("xmin"),
0640                                            psTrack_Chi2R_NStubs.getParameter<double>("xmax"),
0641                                            psTrack_Chi2R_NStubs.getParameter<int32_t>("Nbinsy"),
0642                                            psTrack_Chi2R_NStubs.getParameter<double>("ymin"),
0643                                            psTrack_Chi2R_NStubs.getParameter<double>("ymax"));
0644   Track_HQ_Chi2Red_NStubs->setAxisTitle("# L1 Stubs", 1);
0645   Track_HQ_Chi2Red_NStubs->setAxisTitle("L1 Track #chi^{2}/ndf", 2);
0646 
0647   // chi2/dof vs eta
0648   HistoName = "Track_HQ_Chi2Red_Eta";
0649   Track_HQ_Chi2Red_Eta = iBooker.book2D(HistoName,
0650                                         HistoName,
0651                                         psTrack_Chi2R_Eta.getParameter<int32_t>("Nbinsx"),
0652                                         psTrack_Chi2R_Eta.getParameter<double>("xmin"),
0653                                         psTrack_Chi2R_Eta.getParameter<double>("xmax"),
0654                                         psTrack_Chi2R_Eta.getParameter<int32_t>("Nbinsy"),
0655                                         psTrack_Chi2R_Eta.getParameter<double>("ymin"),
0656                                         psTrack_Chi2R_Eta.getParameter<double>("ymax"));
0657   Track_HQ_Chi2Red_Eta->setAxisTitle("#eta", 1);
0658   Track_HQ_Chi2Red_Eta->setAxisTitle("L1 Track #chi^{2}/ndf", 2);
0659 
0660   // eta vs #stubs in barrel
0661   HistoName = "Track_HQ_Eta_BarrelStubs";
0662   Track_HQ_Eta_BarrelStubs = iBooker.book2D(HistoName,
0663                                             HistoName,
0664                                             psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsx"),
0665                                             psTrack_Eta_NStubs.getParameter<double>("xmin"),
0666                                             psTrack_Eta_NStubs.getParameter<double>("xmax"),
0667                                             psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsy"),
0668                                             psTrack_Eta_NStubs.getParameter<double>("ymin"),
0669                                             psTrack_Eta_NStubs.getParameter<double>("ymax"));
0670   Track_HQ_Eta_BarrelStubs->setAxisTitle("#eta", 1);
0671   Track_HQ_Eta_BarrelStubs->setAxisTitle("# L1 Barrel Stubs", 2);
0672 
0673   // eta vs #stubs in EC
0674   HistoName = "Track_HQ_Eta_ECStubs";
0675   Track_HQ_Eta_ECStubs = iBooker.book2D(HistoName,
0676                                         HistoName,
0677                                         psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsx"),
0678                                         psTrack_Eta_NStubs.getParameter<double>("xmin"),
0679                                         psTrack_Eta_NStubs.getParameter<double>("xmax"),
0680                                         psTrack_Eta_NStubs.getParameter<int32_t>("Nbinsy"),
0681                                         psTrack_Eta_NStubs.getParameter<double>("ymin"),
0682                                         psTrack_Eta_NStubs.getParameter<double>("ymax"));
0683   Track_HQ_Eta_ECStubs->setAxisTitle("#eta", 1);
0684   Track_HQ_Eta_ECStubs->setAxisTitle("# L1 EC Stubs", 2);
0685 
0686 }  // end of method
0687 
0688 void Phase2OTMonitorTTTrack::fillDescriptions(edm::ConfigurationDescriptions &descriptions) {
0689   // Phase2OTMonitorTTTrack
0690   edm::ParameterSetDescription desc;
0691   {
0692     edm::ParameterSetDescription psd0;
0693     psd0.add<int>("Nbinsx", 8);
0694     psd0.add<double>("xmax", 8);
0695     psd0.add<double>("xmin", 0);
0696     desc.add<edm::ParameterSetDescription>("TH1_NStubs", psd0);
0697   }
0698   {
0699     edm::ParameterSetDescription psd0;
0700     psd0.add<int>("Nbinsx", 100);
0701     psd0.add<double>("xmax", 399);
0702     psd0.add<double>("xmin", 0);
0703     desc.add<edm::ParameterSetDescription>("TH1_NTracks", psd0);
0704   }
0705   {
0706     edm::ParameterSetDescription psd0;
0707     psd0.add<int>("Nbinsx", 50);
0708     psd0.add<double>("xmax", 100);
0709     psd0.add<double>("xmin", 0);
0710     desc.add<edm::ParameterSetDescription>("TH1_Track_Pt", psd0);
0711   }
0712   {
0713     edm::ParameterSetDescription psd0;
0714     psd0.add<int>("Nbinsx", 60);
0715     psd0.add<double>("xmax", 3.5);
0716     psd0.add<double>("xmin", -3.5);
0717     desc.add<edm::ParameterSetDescription>("TH1_Track_Phi", psd0);
0718   }
0719   {
0720     edm::ParameterSetDescription psd0;
0721     psd0.add<int>("Nbinsx", 50);
0722     psd0.add<double>("xmax", 5.0);
0723     psd0.add<double>("xmin", -5.0);
0724     desc.add<edm::ParameterSetDescription>("TH1_Track_D0", psd0);
0725   }
0726   {
0727     edm::ParameterSetDescription psd0;
0728     psd0.add<int>("Nbinsx", 45);
0729     psd0.add<double>("xmax", 3.0);
0730     psd0.add<double>("xmin", -3.0);
0731     desc.add<edm::ParameterSetDescription>("TH1_Track_Eta", psd0);
0732   }
0733   {
0734     edm::ParameterSetDescription psd0;
0735     psd0.add<int>("Nbinsx", 41);
0736     psd0.add<double>("xmax", 20);
0737     psd0.add<double>("xmin", -20);
0738     desc.add<edm::ParameterSetDescription>("TH1_Track_VtxZ", psd0);
0739   }
0740   {
0741     edm::ParameterSetDescription psd0;
0742     psd0.add<int>("Nbinsx", 100);
0743     psd0.add<double>("xmax", 50);
0744     psd0.add<double>("xmin", 0);
0745     desc.add<edm::ParameterSetDescription>("TH1_Track_Chi2", psd0);
0746   }
0747   {
0748     edm::ParameterSetDescription psd0;
0749     psd0.add<int>("Nbinsx", 100);
0750     psd0.add<double>("xmax", 10);
0751     psd0.add<double>("xmin", 0);
0752     desc.add<edm::ParameterSetDescription>("TH1_Track_Chi2R", psd0);
0753   }
0754   {
0755     edm::ParameterSetDescription psd0;
0756     psd0.add<int>("Nbinsx", 100);
0757     psd0.add<double>("xmax", 1);
0758     psd0.add<double>("xmin", 0);
0759     desc.add<edm::ParameterSetDescription>("TH1_Track_Chi2_Probability", psd0);
0760   }
0761   {
0762     edm::ParameterSetDescription psd0;
0763     psd0.add<int>("Nbinsx", 100);
0764     psd0.add<double>("xmax", 1);
0765     psd0.add<double>("xmin", 0);
0766     desc.add<edm::ParameterSetDescription>("TH1_Track_MVA1", psd0);
0767   }
0768   {
0769     edm::ParameterSetDescription psd0;
0770     psd0.add<int>("Nbinsx", 5);
0771     psd0.add<double>("xmax", 8);
0772     psd0.add<double>("xmin", 3);
0773     psd0.add<int>("Nbinsy", 15);
0774     psd0.add<double>("ymax", 10);
0775     psd0.add<double>("ymin", 0);
0776     desc.add<edm::ParameterSetDescription>("TH2_Track_Chi2R_NStubs", psd0);
0777   }
0778   {
0779     edm::ParameterSetDescription psd0;
0780     psd0.add<int>("Nbinsx", 15);
0781     psd0.add<double>("xmax", 3.0);
0782     psd0.add<double>("xmin", -3.0);
0783     psd0.add<int>("Nbinsy", 15);
0784     psd0.add<double>("ymax", 10);
0785     psd0.add<double>("ymin", 0);
0786     desc.add<edm::ParameterSetDescription>("TH2_Track_Chi2R_Eta", psd0);
0787   }
0788   {
0789     edm::ParameterSetDescription psd0;
0790     psd0.add<int>("Nbinsx", 15);
0791     psd0.add<double>("xmax", 3.0);
0792     psd0.add<double>("xmin", -3.0);
0793     psd0.add<int>("Nbinsy", 5);
0794     psd0.add<double>("ymax", 8);
0795     psd0.add<double>("ymin", 3);
0796     desc.add<edm::ParameterSetDescription>("TH2_Track_Eta_NStubs", psd0);
0797   }
0798   desc.add<std::string>("TopFolderName", "TrackerPhase2OTL1Track");
0799   desc.add<edm::InputTag>("TTTracksTag", edm::InputTag("l1tTTTracksFromTrackletEmulation", "Level1TTTracks"));
0800   desc.add<int>("HQNStubs", 4);
0801   desc.add<double>("HQChi2dof", 10.0);
0802   desc.add<double>("HQBendChi2", 2.2);
0803   descriptions.add("Phase2OTMonitorTTTrack", desc);
0804   // or use the following to generate the label from the module's C++ type
0805   //descriptions.addWithDefaultLabel(desc);
0806 }
0807 DEFINE_FWK_MODULE(Phase2OTMonitorTTTrack);