CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/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   // reference to problematic jets
00112   edm::RefVector<reco::CaloJetCollection> problematicJets(void) const;
00113 
00114   // reference to calotowers which fail loose, tight, and high-level noise criteria
00115   edm::RefVector<CaloTowerCollection> looseNoiseTowers(void) const;
00116   edm::RefVector<CaloTowerCollection> tightNoiseTowers(void) const;
00117   edm::RefVector<CaloTowerCollection> highLevelNoiseTowers(void) const;
00118 
00119  private:
00120 
00121   // data members corresponding to the values above
00122   int filterstatus_, noisetype_;
00123   float emenergy_, hadenergy_, trackenergy_;
00124   float min10_, max10_, rms10_;
00125   float min25_, max25_, rms25_;
00126   int cnthit10_, cnthit25_;
00127   float mine2ts_, mine10ts_;
00128   float maxe2ts_, maxe10ts_;
00129   int maxzeros_;
00130   int maxhpdhits_, maxhpdhitsnoother_, maxrbxhits_;
00131   float minhpdemf_, minrbxemf_;
00132   int nproblemRBXs_;
00133   int nisolnoise_;
00134   float isolnoisee_, isolnoiseet_;
00135 
00136   edm::RefVector<reco::CaloJetCollection> problemjets_;
00137 
00138   edm::RefVector<CaloTowerCollection> loosenoisetwrs_;
00139   edm::RefVector<CaloTowerCollection> tightnoisetwrs_;
00140   edm::RefVector<CaloTowerCollection> hlnoisetwrs_;
00141 
00142 };
00143 
00144 #endif