CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/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   double GetCalibChargeHF(void) const;
00137   int    GetCalibCountHF(void)  const;
00138 
00139   // Get charge only in TS45
00140   int GetCalibCountTS45(void) const;  // get number of HBHE calibration channels
00141   int GetCalibgt15CountTS45(void) const; // get number of HBHE calib channels > 15 fC
00142   double GetCalibChargeTS45(void) const; // get Calib charge
00143   double GetCalibgt15ChargeTS45(void) const; // get charge from all channels gt 15 fC
00144 
00145   int GetHitsInNonLaserRegion(void) const; // get number of channels in HBHE regions with no laser
00146   int GetHitsInLaserRegion(void) const; // get number of channels in HBHE region where laser pulses are seen
00147   double GetEnergyInNonLaserRegion(void) const; // get energy in region with no laser
00148   double GetEnergyInLaserRegion(void) const; // get energy in non-laser region
00149   
00150   // reference to problematic jets
00151   edm::RefVector<reco::CaloJetCollection> problematicJets(void) const;
00152 
00153   // reference to calotowers which fail loose, tight, and high-level noise criteria
00154   edm::RefVector<CaloTowerCollection> looseNoiseTowers(void) const;
00155   edm::RefVector<CaloTowerCollection> tightNoiseTowers(void) const;
00156   edm::RefVector<CaloTowerCollection> highLevelNoiseTowers(void) const;
00157 
00158  private:
00159 
00160   // data members corresponding to the values above
00161   int filterstatus_, noisetype_;
00162   float emenergy_, hadenergy_, trackenergy_;
00163   float min10_, max10_, rms10_;
00164   float min25_, max25_, rms25_;
00165   int cnthit10_, cnthit25_;
00166   float mine2ts_, mine10ts_;
00167   float maxe2ts_, maxe10ts_;
00168   int maxzeros_;
00169   int maxhpdhits_, maxhpdhitsnoother_, maxrbxhits_;
00170   float minhpdemf_, minrbxemf_;
00171   int nproblemRBXs_;
00172   int nisolnoise_;
00173   float isolnoisee_, isolnoiseet_;
00174   int nflatnoise_;
00175   float flatnoisee_, flatnoiseet_;
00176   int nspikenoise_;
00177   float spikenoisee_, spikenoiseet_;
00178   int ntrianglenoise_;
00179   float trianglenoisee_, trianglenoiseet_;
00180   int nts4ts5noise_;
00181   float ts4ts5noisee_, ts4ts5noiseet_;
00182 
00183   int rechitCount_;
00184   int rechitCount15_;
00185   double rechitEnergy_;
00186   double rechitEnergy15_;
00187   double calibCharge_;
00188 
00189   bool hasBadRBXTS4TS5_;
00190 
00191   int calibCountTS45_;
00192   int calibCountgt15TS45_;
00193   double calibChargeTS45_;
00194   double calibChargegt15TS45_;
00195 
00196   int calibCountHF_; // calibration channels only in HF; no threshold used for determining HF noise
00197   double calibChargeHF_;
00198 
00199   int hitsInLaserRegion_;
00200   int hitsInNonLaserRegion_;
00201   double energyInLaserRegion_;
00202   double energyInNonLaserRegion_;
00203 
00204   edm::RefVector<reco::CaloJetCollection> problemjets_;
00205 
00206   edm::RefVector<CaloTowerCollection> loosenoisetwrs_;
00207   edm::RefVector<CaloTowerCollection> tightnoisetwrs_;
00208   edm::RefVector<CaloTowerCollection> hlnoisetwrs_;
00209 
00210 };
00211 
00212 #endif