00001 00010 #ifndef __EcalCleaningAlgo_h_ 00011 #define __EcalCleaningAlgo_h_ 00012 00013 00014 #include "FWCore/Framework/interface/Frameworkfwd.h" 00015 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" 00016 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h" 00017 #include <vector> 00018 00019 class DetId; 00020 00021 00022 class EcalCleaningAlgo{ 00023 00024 00025 public: 00026 00027 EcalCleaningAlgo(const edm::ParameterSet& p); 00028 00033 EcalRecHit::Flags checkTopology(const DetId& id, 00034 const EcalRecHitCollection& rhs); 00035 00036 void setFlags(EcalRecHitCollection& rhs); 00037 00038 private: 00039 00041 float e4e1(const DetId& id, const EcalRecHitCollection& rhs); 00042 00051 float e6e2 (const DetId& id, const EcalRecHitCollection& rhs); 00052 00053 float recHitE( const DetId id, 00054 const EcalRecHitCollection &recHits, 00055 bool useTimingInfo); 00056 00058 bool isNearCrack(const DetId& detid); 00059 00061 const std::vector<DetId> neighbours(const DetId& id); 00062 00064 float ignoreOutOfTimeThresh_; 00065 00066 // Parameters for tolopogical cut 00067 // mark anomalous if e> cThreshold && e4e1> a*log10(e1e1)+b 00068 float cThreshold_barrel_; 00069 float cThreshold_endcap_; 00070 float e4e1_a_barrel_; 00071 float e4e1_b_barrel_; 00072 float e4e1_a_endcap_; 00073 float e4e1_b_endcap_; 00074 // when calculating e4/e1, ignore hits below this threshold 00075 float e4e1Treshold_barrel_; 00076 float e4e1Treshold_endcap_; 00077 float tightenCrack_e1_single_; 00078 float tightenCrack_e4e1_single_; 00079 float cThreshold_double_; 00080 float tightenCrack_e1_double_; 00081 float tightenCrack_e6e2_double_; 00082 float e6e2thresh_; 00083 00084 }; 00085 00086 #endif // __EcalCleaningAlgo_h_ 00087 00088 // Configure (x)emacs for this file ... 00089 // Local Variables: 00090 // mode:c++ 00091 // compile-command: "make -C .. -k" 00092 // End: