CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/DataFormats/METReco/interface/HcalNoiseSummary.h

Go to the documentation of this file.
00001 #ifndef _DATAFORMATS_METRECO_HCALNOISESUMMARY_H__
00002 #define _DATAFORMATS_METRECO_HCALNOISESUMMARY_H__
00003 
00004 //
00005 // HcalNoiseSummary.h
00006 //
00007 //    description: Container class for HCAL noise summary information
00008 //
00009 //    author: J.P. Chou, Brown
00010 //
00011 
00012 #include "DataFormats/METReco/interface/HcalNoiseHPD.h"
00013 #include "DataFormats/Common/interface/RefVector.h"
00014 #include "DataFormats/Common/interface/Ref.h"
00015 #include "DataFormats/Common/interface/RefProd.h"
00016 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00017 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00018 
00019 //
00020 // forward declaration
00021 //
00022 
00023 namespace reco {
00024   class HcalNoiseInfoProducer;
00025 }
00026 
00027 //
00028 // class definition
00029 //
00030 
00031 class HcalNoiseSummary
00032 {
00033   friend class reco::HcalNoiseInfoProducer; // allows this class to fill the info
00034 
00035  public:
00036   // constructor
00037   HcalNoiseSummary();
00038 
00039   // destructor
00040   virtual ~HcalNoiseSummary();
00041 
00042   // whether or not the event passed the event filter
00043   // note that these methods are deprecated
00044   // please see the instructions here: https://twiki.cern.ch/twiki/bin/view/CMS/HcalNoiseInfoLibrary
00045   bool passLooseNoiseFilter(void) const;
00046   bool passTightNoiseFilter(void) const;
00047   bool passHighLevelNoiseFilter(void) const;
00048 
00049   // the status with which the filter failed: this is a bitset
00050   // 0 is no failure
00051   int noiseFilterStatus(void) const;
00052 
00053   // noise type: 1=HPD Ionfeedback, 2=HPD Discharge, 3=RBX Noise
00054   // won't work with non-noise event
00055   int noiseType(void) const;
00056 
00057   // quantities to calculate EM fraction and charge fraction
00058   // of the event (|eta|<2.0)
00059   float eventEMEnergy(void) const;
00060   float eventHadEnergy(void) const;
00061   float eventTrackEnergy(void) const;
00062   float eventEMFraction(void) const;
00063   float eventChargeFraction(void) const;
00064 
00065   // minimum/maximum/RMS rechit time
00066   // rechit energy>10 GeV or 25 GeV
00067   float min10GeVHitTime(void) const;
00068   float max10GeVHitTime(void) const;
00069   float rms10GeVHitTime(void) const;
00070   float min25GeVHitTime(void) const;
00071   float max25GeVHitTime(void) const;
00072   float rms25GeVHitTime(void) const;
00073 
00074   // # of hits with E>10 GeV or 25 GeV
00075   int num10GeVHits(void) const;
00076   int num25GeVHits(void) const;
00077   
00078   // E(2TS), E(10TS), and E(2TS)/E(10TS) for the minimum and maximum E(2TS)/E(10TS) found in an RBX in the event
00079   // the total energy in the RBX must be > 50 GeV
00080   float minE2TS(void) const;
00081   float minE10TS(void) const;
00082   float minE2Over10TS(void) const;
00083   float maxE2TS(void) const;
00084   float maxE10TS(void) const;
00085   float maxE2Over10TS(void) const;
00086 
00087   // largest number of zeros found in a single RBX in the event
00088   // total energy in the RBX must be > 10 GeV
00089   int maxZeros(void) const;
00090 
00091   // largest number of hits in a single HPD/RBX in the event
00092   // each hit is >= 1.5 GeV
00093   int maxHPDHits(void) const;
00094   int maxRBXHits(void) const;
00095 
00096   // largest number of hits in a single HPD when no other hits are present in the RBX
00097   int maxHPDNoOtherHits(void) const;
00098 
00099   // smallest EMF found in an HPD/RBX in the event
00100   // the total energy in the HPD/RBX must be >50 GeV
00101   float minHPDEMF(void) const;
00102   float minRBXEMF(void) const;
00103 
00104   // number of "problematic" RBXs
00105   int numProblematicRBXs(void) const;
00106 
00107   int numIsolatedNoiseChannels(void) const;
00108   float isolatedNoiseSumE(void) const;
00109   float isolatedNoiseSumEt(void) const;
00110 
00111   int numFlatNoiseChannels(void) const;
00112   float flatNoiseSumE(void) const;
00113   float flatNoiseSumEt(void) const;
00114 
00115   int numSpikeNoiseChannels(void) const;
00116   float spikeNoiseSumE(void) const;
00117   float spikeNoiseSumEt(void) const;
00118 
00119   int numTriangleNoiseChannels(void) const;
00120   float triangleNoiseSumE(void) const;
00121   float triangleNoiseSumEt(void) const;
00122 
00123   int numTS4TS5NoiseChannels(void) const;
00124   float TS4TS5NoiseSumE(void) const;
00125   float TS4TS5NoiseSumEt(void) const;
00126 
00127   int GetRecHitCount(void) const;
00128   int GetRecHitCount15(void) const;
00129   double GetRecHitEnergy(void) const;
00130   double GetRecHitEnergy15(void) const;
00131 
00132   double GetTotalCalibCharge(void) const;
00133 
00134   bool HasBadRBXTS4TS5(void) const;
00135 
00136   // reference to problematic jets
00137   edm::RefVector<reco::CaloJetCollection> problematicJets(void) const;
00138 
00139   // reference to calotowers which fail loose, tight, and high-level noise criteria
00140   edm::RefVector<CaloTowerCollection> looseNoiseTowers(void) const;
00141   edm::RefVector<CaloTowerCollection> tightNoiseTowers(void) const;
00142   edm::RefVector<CaloTowerCollection> highLevelNoiseTowers(void) const;
00143 
00144  private:
00145 
00146   // data members corresponding to the values above
00147   int filterstatus_, noisetype_;
00148   float emenergy_, hadenergy_, trackenergy_;
00149   float min10_, max10_, rms10_;
00150   float min25_, max25_, rms25_;
00151   int cnthit10_, cnthit25_;
00152   float mine2ts_, mine10ts_;
00153   float maxe2ts_, maxe10ts_;
00154   int maxzeros_;
00155   int maxhpdhits_, maxhpdhitsnoother_, maxrbxhits_;
00156   float minhpdemf_, minrbxemf_;
00157   int nproblemRBXs_;
00158   int nisolnoise_;
00159   float isolnoisee_, isolnoiseet_;
00160   int nflatnoise_;
00161   float flatnoisee_, flatnoiseet_;
00162   int nspikenoise_;
00163   float spikenoisee_, spikenoiseet_;
00164   int ntrianglenoise_;
00165   float trianglenoisee_, trianglenoiseet_;
00166   int nts4ts5noise_;
00167   float ts4ts5noisee_, ts4ts5noiseet_;
00168 
00169   int rechitCount_;
00170   int rechitCount15_;
00171   double rechitEnergy_;
00172   double rechitEnergy15_;
00173   double calibCharge_;
00174 
00175   bool hasBadRBXTS4TS5_;
00176 
00177   edm::RefVector<reco::CaloJetCollection> problemjets_;
00178 
00179   edm::RefVector<CaloTowerCollection> loosenoisetwrs_;
00180   edm::RefVector<CaloTowerCollection> tightnoisetwrs_;
00181   edm::RefVector<CaloTowerCollection> hlnoisetwrs_;
00182 
00183 };
00184 
00185 #endif