File indexing completed on 2024-04-06 12:26:39
0001 #ifndef RECOMET_METALGORITHMS_GLOBALHALOALGO_H
0002 #define RECOMET_METALGORITHMS_GLOBALHALOALGO_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "DataFormats/METReco/interface/EcalHaloData.h"
0012 #include "DataFormats/METReco/interface/HcalHaloData.h"
0013 #include "DataFormats/METReco/interface/CSCHaloData.h"
0014 #include "DataFormats/METReco/interface/GlobalHaloData.h"
0015 #include "DataFormats/Math/interface/LorentzVector.h"
0016 #include "DataFormats/METReco/interface/CaloMET.h"
0017 #include "DataFormats/METReco/interface/CaloMETFwd.h"
0018 #include "DataFormats/METReco/interface/MET.h"
0019 #include "DataFormats/METReco/interface/METFwd.h"
0020 #include "DataFormats/CSCRecHit/interface/CSCRecHit2D.h"
0021 #include "DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h"
0022 #include "DataFormats/CSCRecHit/interface/CSCSegment.h"
0023 #include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h"
0024 #include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
0025 #include "DataFormats/EcalDetId/interface/EBDetId.h"
0026 #include "DataFormats/EcalDetId/interface/EEDetId.h"
0027 #include "DataFormats/EcalDetId/interface/ESDetId.h"
0028 #include "DataFormats/EcalDigi/interface/ESDataFrame.h"
0029 #include "DataFormats/EcalDigi/interface/EEDataFrame.h"
0030 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
0031 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
0032 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0033 #include "DataFormats/HcalDetId/interface/HcalSubdetector.h"
0034 #include "DataFormats/HcalRecHit/interface/HBHERecHit.h"
0035 #include "DataFormats/HcalRecHit/interface/HFRecHit.h"
0036 #include "DataFormats/HcalRecHit/interface/HORecHit.h"
0037 #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
0038 #include "DataFormats/EgammaCandidates/interface/Photon.h"
0039 #include "DataFormats/EgammaCandidates/interface/PhotonFwd.h"
0040 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
0041 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0042 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
0043 #include "Geometry/Records/interface/CaloGeometryRecord.h"
0044 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
0045 #include "Geometry/CSCGeometry/interface/CSCChamber.h"
0046 #include "Geometry/CSCGeometry/interface/CSCLayer.h"
0047 #include "Geometry/CSCGeometry/interface/CSCLayerGeometry.h"
0048 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
0049 #include "DataFormats/CaloTowers/interface/CaloTowerDefs.h"
0050 #include "DataFormats/CaloTowers/interface/CaloTower.h"
0051
0052 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0053 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0054 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
0055 #include "DataFormats/GeometryVector/interface/LocalVector.h"
0056
0057 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0058 #include "DataFormats/MuonReco/interface/Muon.h"
0059
0060 class GlobalHaloAlgo {
0061 public:
0062
0063 GlobalHaloAlgo();
0064
0065 ~GlobalHaloAlgo() {}
0066
0067
0068 reco::GlobalHaloData Calculate(const CaloGeometry& TheCaloGeometry,
0069 const CSCGeometry& TheCSCGeometry,
0070 const reco::CaloMET& TheCaloMET,
0071 edm::Handle<edm::View<reco::Candidate> >& TheCaloTowers,
0072 edm::Handle<CSCSegmentCollection>& TheCSCSegments,
0073 edm::Handle<CSCRecHit2DCollection>& TheCSCRecHits,
0074 edm::Handle<reco::MuonCollection>& TheMuons,
0075 const reco::CSCHaloData& TheCSCHaloData,
0076 const reco::EcalHaloData& TheEcalHaloData,
0077 const reco::HcalHaloData& TheHcalHaloData,
0078 bool ishlt = false);
0079
0080
0081 void SetEcalMatchingRadius(float min, float max) {
0082 Ecal_R_Min = min;
0083 Ecal_R_Max = max;
0084 }
0085
0086 void SetHcalMatchingRadius(float min, float max) {
0087 Hcal_R_Min = min;
0088 Hcal_R_Max = max;
0089 }
0090
0091 void SetCaloTowerEtThreshold(float EtMin) { TowerEtThreshold = EtMin; }
0092
0093
0094
0095 void SetMaxSegmentTheta(float x) { max_segment_theta = x; }
0096
0097 void setEtThresholdforCSCCaloMatchingEB(float x) { et_thresh_rh_eb = x; }
0098 void setRcaloMinRsegmLowThresholdforCSCCaloMatchingEB(float x) { dr_lowthresh_segvsrh_eb = x; }
0099 void setRcaloMinRsegmHighThresholdforCSCCaloMatchingEB(float x) { dr_highthresh_segvsrh_eb = x; }
0100 void setDtcalosegmThresholdforCSCCaloMatchingEB(float x) { dt_segvsrh_eb = x; }
0101 void setDPhicalosegmThresholdforCSCCaloMatchingEB(float x) { dphi_thresh_segvsrh_eb = x; }
0102
0103 void setEtThresholdforCSCCaloMatchingEE(float x) { et_thresh_rh_ee = x; }
0104 void setRcaloMinRsegmLowThresholdforCSCCaloMatchingEE(float x) { dr_lowthresh_segvsrh_ee = x; }
0105 void setRcaloMinRsegmHighThresholdforCSCCaloMatchingEE(float x) { dr_highthresh_segvsrh_ee = x; }
0106 void setDtcalosegmThresholdforCSCCaloMatchingEE(float x) { dt_segvsrh_ee = x; }
0107 void setDPhicalosegmThresholdforCSCCaloMatchingEE(float x) { dphi_thresh_segvsrh_ee = x; }
0108
0109 void setEtThresholdforCSCCaloMatchingHB(float x) { et_thresh_rh_hb = x; }
0110 void setRcaloMinRsegmLowThresholdforCSCCaloMatchingHB(float x) { dr_lowthresh_segvsrh_hb = x; }
0111 void setRcaloMinRsegmHighThresholdforCSCCaloMatchingHB(float x) { dr_highthresh_segvsrh_hb = x; }
0112 void setDtcalosegmThresholdforCSCCaloMatchingHB(float x) { dt_segvsrh_hb = x; }
0113 void setDPhicalosegmThresholdforCSCCaloMatchingHB(float x) { dphi_thresh_segvsrh_hb = x; }
0114
0115 void setEtThresholdforCSCCaloMatchingHE(float x) { et_thresh_rh_he = x; }
0116 void setRcaloMinRsegmLowThresholdforCSCCaloMatchingHE(float x) { dr_lowthresh_segvsrh_he = x; }
0117 void setRcaloMinRsegmHighThresholdforCSCCaloMatchingHE(float x) { dr_highthresh_segvsrh_he = x; }
0118 void setDtcalosegmThresholdforCSCCaloMatchingHE(float x) { dt_segvsrh_he = x; }
0119 void setDPhicalosegmThresholdforCSCCaloMatchingHE(float x) { dphi_thresh_segvsrh_he = x; }
0120
0121 private:
0122 float Ecal_R_Min;
0123 float Ecal_R_Max;
0124 float Hcal_R_Min;
0125 float Hcal_R_Max;
0126 float TowerEtThreshold;
0127
0128
0129 float max_segment_theta;
0130
0131 float et_thresh_rh_eb;
0132 float dphi_thresh_segvsrh_eb;
0133 float dr_lowthresh_segvsrh_eb;
0134 float dr_highthresh_segvsrh_eb;
0135 float dt_segvsrh_eb;
0136
0137 float et_thresh_rh_ee;
0138 float dphi_thresh_segvsrh_ee;
0139 float dr_lowthresh_segvsrh_ee;
0140 float dr_highthresh_segvsrh_ee;
0141 float dt_segvsrh_ee;
0142
0143 float et_thresh_rh_hb;
0144 float dphi_thresh_segvsrh_hb;
0145 float dr_lowthresh_segvsrh_hb;
0146 float dr_highthresh_segvsrh_hb;
0147 float dt_segvsrh_hb;
0148
0149 float et_thresh_rh_he;
0150 float dphi_thresh_segvsrh_he;
0151 float dr_lowthresh_segvsrh_he;
0152 float dr_highthresh_segvsrh_he;
0153 float dt_segvsrh_he;
0154
0155 void AddtoBeamHaloEBEERechits(edm::RefVector<EcalRecHitCollection>& bhtaggedrechits,
0156 reco::GlobalHaloData& thehalodata,
0157 bool isbarrel);
0158 void AddtoBeamHaloHBHERechits(edm::RefVector<HBHERecHitCollection>& bhtaggedrechits,
0159 reco::GlobalHaloData& thehalodata);
0160 bool SegmentMatchingEB(reco::GlobalHaloData& thehalodata,
0161 const std::vector<reco::HaloClusterCandidateECAL>& haloclustercands,
0162 float iZ,
0163 float iR,
0164 float iT,
0165 float iPhi,
0166 bool ishlt);
0167 bool SegmentMatchingEE(reco::GlobalHaloData& thehalodata,
0168 const std::vector<reco::HaloClusterCandidateECAL>& haloclustercands,
0169 float iZ,
0170 float iR,
0171 float iT,
0172 float iPhi,
0173 bool ishlt);
0174 bool SegmentMatchingHB(reco::GlobalHaloData& thehalodata,
0175 const std::vector<reco::HaloClusterCandidateHCAL>& haloclustercands,
0176 float iZ,
0177 float iR,
0178 float iT,
0179 float iPhi,
0180 bool ishlt);
0181 bool SegmentMatchingHE(reco::GlobalHaloData& thehalodata,
0182 const std::vector<reco::HaloClusterCandidateHCAL>& haloclustercands,
0183 float iZ,
0184 float iR,
0185 float iT,
0186 float iPhi,
0187 bool ishlt);
0188 bool ApplyMatchingCuts(int subdet,
0189 bool ishlt,
0190 double rhet,
0191 double segZ,
0192 double rhZ,
0193 double segR,
0194 double rhR,
0195 double segT,
0196 double rhT,
0197 double segPhi,
0198 double rhPhi);
0199 };
0200
0201 #endif