CMS 3D CMS Logo

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