CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_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   bool HasBadRBXTS4TS5(void) const;
00128 
00129   // reference to problematic jets
00130   edm::RefVector<reco::CaloJetCollection> problematicJets(void) const;
00131 
00132   // reference to calotowers which fail loose, tight, and high-level noise criteria
00133   edm::RefVector<CaloTowerCollection> looseNoiseTowers(void) const;
00134   edm::RefVector<CaloTowerCollection> tightNoiseTowers(void) const;
00135   edm::RefVector<CaloTowerCollection> highLevelNoiseTowers(void) const;
00136 
00137  private:
00138 
00139   // data members corresponding to the values above
00140   int filterstatus_, noisetype_;
00141   float emenergy_, hadenergy_, trackenergy_;
00142   float min10_, max10_, rms10_;
00143   float min25_, max25_, rms25_;
00144   int cnthit10_, cnthit25_;
00145   float mine2ts_, mine10ts_;
00146   float maxe2ts_, maxe10ts_;
00147   int maxzeros_;
00148   int maxhpdhits_, maxhpdhitsnoother_, maxrbxhits_;
00149   float minhpdemf_, minrbxemf_;
00150   int nproblemRBXs_;
00151   int nisolnoise_;
00152   float isolnoisee_, isolnoiseet_;
00153   int nflatnoise_;
00154   float flatnoisee_, flatnoiseet_;
00155   int nspikenoise_;
00156   float spikenoisee_, spikenoiseet_;
00157   int ntrianglenoise_;
00158   float trianglenoisee_, trianglenoiseet_;
00159   int nts4ts5noise_;
00160   float ts4ts5noisee_, ts4ts5noiseet_;
00161 
00162   bool hasBadRBXTS4TS5_;
00163 
00164   edm::RefVector<reco::CaloJetCollection> problemjets_;
00165 
00166   edm::RefVector<CaloTowerCollection> loosenoisetwrs_;
00167   edm::RefVector<CaloTowerCollection> tightnoisetwrs_;
00168   edm::RefVector<CaloTowerCollection> hlnoisetwrs_;
00169 
00170 };
00171 
00172 #endif