Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:00:00

0001 // -*- C++ -*-
0002 //
0003 // Package:    SiStripQuality
0004 // Class:      SiStripHotStripAlgorithmFromClusterOccupancy
0005 //
0006 /**\class SiStripHotStripAlgorithmFromClusterOccupancy SiStripHotStripAlgorithmFromClusterOccupancy.h CalibTracker/SiStripQuality/src/SiStripHotStripAlgorithmFromClusterOccupancy.cc
0007 
0008  Description: <one line class summary>
0009 
0010  Implementation:
0011      <Notes on implementation>
0012 */
0013 //
0014 // Original Author:  Domenico GIORDANO
0015 //         Created:  Wed Oct  3 12:11:10 CEST 2007
0016 //
0017 //
0018 
0019 #ifndef CalibTracker_SiStripQuality_SiStripHotStripAlgorithmFromClusterOccupancy_H
0020 #define CalibTracker_SiStripQuality_SiStripHotStripAlgorithmFromClusterOccupancy_H
0021 
0022 // system include files
0023 #include <memory>
0024 #include <vector>
0025 #include <sstream>
0026 #include <iostream>
0027 
0028 #include "TMath.h"
0029 #include "TTree.h"
0030 #include "TFile.h"
0031 
0032 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0033 #include "DataFormats/DetId/interface/DetId.h"
0034 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h"
0035 #include "Geometry/CommonTopologies/interface/StripTopology.h"
0036 #include "CalibFormats/SiStripObjects/interface/SiStripQuality.h"
0037 
0038 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0039 #include "CalibTracker/SiStripQuality/interface/SiStripQualityHistos.h"
0040 #include "FWCore/ParameterSet/interface/FileInPath.h"
0041 #include "FWCore/Framework/interface/EventSetup.h"
0042 #include "CalibTracker/Records/interface/SiStripQualityRcd.h"
0043 #include "FWCore/ServiceRegistry/interface/Service.h"
0044 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0045 #include "CommonTools/TrackerMap/interface/TrackerMap.h"
0046 
0047 class SiStripQuality;
0048 class TrackerTopology;
0049 
0050 class SiStripHotStripAlgorithmFromClusterOccupancy {
0051 public:
0052   typedef SiStrip::QualityHistosMap HistoMap;
0053 
0054   SiStripHotStripAlgorithmFromClusterOccupancy(const edm::ParameterSet&, const TrackerTopology*);
0055 
0056   virtual ~SiStripHotStripAlgorithmFromClusterOccupancy();
0057 
0058   void setProbabilityThreshold(long double prob) { prob_ = prob; }
0059   void setMinNumEntries(unsigned short m) { MinNumEntries_ = m; }
0060   void setMinNumEntriesPerStrip(unsigned short m) { MinNumEntriesPerStrip_ = m; }
0061   void setOccupancyThreshold(long double occupancy) {
0062     occupancy_ = occupancy;
0063     minNevents_ = occupancy_ * Nevents_;
0064   }
0065   void setNumberOfEvents(double Nevents);
0066   void setOutputFileName(std::string OutputFileName, bool WriteOutputFile) {
0067     OutFileName_ = OutputFileName;
0068     WriteOutputFile_ = WriteOutputFile;
0069   }
0070   void setTrackerGeometry(const TrackerGeometry* tkgeom) { TkGeom = tkgeom; }
0071   void extractBadStrips(SiStripQuality*, HistoMap&, const SiStripQuality*);
0072 
0073 private:
0074   struct pHisto {
0075     pHisto() : _NEntries(0), _NEmptyBins(0), _SubdetId(0){};
0076     TH1F* _th1f;
0077     int _NEntries;
0078     int _NEmptyBins;
0079     int _SubdetId;
0080   };
0081 
0082   void iterativeSearch(pHisto&, std::vector<unsigned int>&, int);
0083   void evaluatePoissonian(std::vector<long double>&, long double& meanVal);
0084 
0085   long double prob_;
0086   long double ratio_;
0087   unsigned short MinNumEntries_;
0088   unsigned short MinNumEntriesPerStrip_;
0089   double Nevents_;
0090   double minNevents_;
0091   long double occupancy_;
0092   std::string OutFileName_;
0093   bool WriteOutputFile_;
0094   const TrackerGeometry* TkGeom;
0095   const TrackerTopology* tTopo;
0096 
0097   SiStripQuality* pQuality;
0098 
0099   TFile* f;
0100   TTree* striptree;
0101   bool UseInputDB_;
0102   int detrawid;
0103   int subdetid;
0104   int layer_ring;
0105   int disc;
0106   int isback;
0107   int isexternalstring;
0108   int iszminusside;
0109   int rodstringpetal;
0110   int isstereo;
0111   int module_position;
0112   int number_strips;
0113   int strip_number;
0114   int apv_channel;
0115 
0116   float global_position_x;
0117   float global_position_y;
0118   float global_position_z;
0119 
0120   int isHot;
0121   int hotStripsPerAPV;
0122   int hotStripsPerModule;
0123   double stripOccupancy;
0124   int stripHits;
0125   double medianAPVHits;
0126   double avgAPVHits;
0127   double poissonProb;
0128 
0129   int ishot[768];
0130   int hotstripsperapv[6];
0131   int hotstripspermodule;
0132   double stripoccupancy[768];
0133   int striphits[768];
0134   double poissonprob[768];
0135   double medianapvhits[6];
0136   double avgapvhits[6];
0137 
0138   std::stringstream ss;
0139 };
0140 #endif