![]() |
|
|||
File indexing completed on 2024-04-06 12:25:47
0001 #ifndef RecoLocalCalo_HcalRecAlgos_HFSimpleTimeCheck_h_ 0002 #define RecoLocalCalo_HcalRecAlgos_HFSimpleTimeCheck_h_ 0003 0004 #include <utility> 0005 0006 #include "RecoLocalCalo/HcalRecAlgos/interface/AbsHFPhase1Algo.h" 0007 #include "RecoLocalCalo/HcalRecAlgos/interface/HFAnodeStatus.h" 0008 0009 class HFSimpleTimeCheck : public AbsHFPhase1Algo { 0010 public: 0011 // "tlimits" are the rise time limits for the anode pair. 0012 // The first element of the pair is the min rise time and the 0013 // second element is the max rise time. tlimits[0] is for the 0014 // first anode and tlimits[1] is for the second one. 0015 // 0016 // "energyWeights" is the lookup table for the energy weights 0017 // based on the multi-state decision about anode quality. 0018 // The first index of this array corresponds to the decision 0019 // about the status of the anodes, and the second index corresponds 0020 // to the anode number. Possible status values are given in the 0021 // HFAnodeStatus enum. Mapping of the first index to the possible 0022 // status values is as follows: 0023 // 0024 // Indices 0 to HFAnodeStatus::N_POSSIBLE_STATES-1 correspond to 0025 // the situations in which the first anode has the status "OK" 0026 // and the second anode has the status given by the index. 0027 // 0028 // HFAnodeStatus::N_POSSIBLE_STATES to HFAnodeStatus::N_POSSIBLE_STATES-2 0029 // correspond to the situations in which the second anode has 0030 // the status "OK" and the first anode has the status given 0031 // by index - HFAnodeStatus::N_POSSIBLE_STATES + 1. This excludes 0032 // the state {OK, OK} already covered. 0033 // 0034 // "soiPhase" argument specifies the desired position of the 0035 // sample of interest ADC in the ADC bytes written out into the 0036 // aux words of the HFRecHit. For more detail, see comments 0037 // inside the HFRecHitAuxSetter.h header. 0038 // 0039 // "timeShift" value (in ns) will be added to all valid times 0040 // returned by QIE10 TDCs. This shift is used both for applying 0041 // the timing cuts and for rechit construction. 0042 // 0043 // "triseIfNoTDC" and "tfallIfNoTDC": the rechit rise and 0044 // fall times will be set to these values in case meaningful 0045 // TDC information is not available for any of the PMT anodes 0046 // (time shift is not added to these numbers). 0047 // 0048 // For monitoring purposes, "rejectAllFailures" can be set to 0049 // "false". In this case, for the energy reconstruction purposes, 0050 // all status values indicating that the anode is not passing 0051 // algorithm cuts will be mapped to "OK". However, HFRecHit 0052 // will still be made using proper status flags. 0053 // 0054 // If "alwaysCalculateChargeAsymmetry" is true, charge asymmetry 0055 // status bit will be set whenever the data is available for both 0056 // anodes. If "alwaysCalculateChargeAsymmetry" is false, the bit 0057 // will be set only if the status of both anodes is "OK" (or mapped 0058 // into "OK"). 0059 // 0060 HFSimpleTimeCheck(const std::pair<float, float> tlimits[2], 0061 const float energyWeights[2 * HFAnodeStatus::N_POSSIBLE_STATES - 1][2], 0062 unsigned soiPhase, 0063 float timeShift, 0064 float triseIfNoTDC, 0065 float tfallIfNoTDC, 0066 float minChargeForUndershoot, 0067 float minChargeForOvershoot, 0068 bool rejectAllFailures = true, 0069 bool alwaysCalculateChargeAsymmetry = true); 0070 0071 inline ~HFSimpleTimeCheck() override {} 0072 0073 inline bool isConfigurable() const override { return false; } 0074 0075 HFRecHit reconstruct(const HFPreRecHit& prehit, 0076 const HcalCalibrations& calibs, 0077 const bool flaggedBadInDB[2], 0078 bool expectSingleAnodePMT) override; 0079 0080 inline unsigned soiPhase() const { return soiPhase_; } 0081 inline float timeShift() const { return timeShift_; } 0082 inline float triseIfNoTDC() const { return triseIfNoTDC_; } 0083 inline float tfallIfNoTDC() const { return tfallIfNoTDC_; } 0084 inline float minChargeForUndershoot() const { return minChargeForUndershoot_; } 0085 inline float minChargeForOvershoot() const { return minChargeForOvershoot_; } 0086 inline bool rejectingAllFailures() const { return rejectAllFailures_; } 0087 inline bool alwaysCalculatingQAsym() const { return alwaysQAsym_; } 0088 0089 protected: 0090 virtual unsigned determineAnodeStatus(unsigned anodeNumber, const HFQIE10Info& anode, bool* isTimingReliable) const; 0091 0092 private: 0093 // Map possible status values into the first index of "energyWeights_" 0094 unsigned mapStatusIntoIndex(const unsigned states[2]) const; 0095 0096 std::pair<float, float> tlimits_[2]; 0097 float energyWeights_[2 * HFAnodeStatus::N_POSSIBLE_STATES - 1][2]; 0098 unsigned soiPhase_; 0099 float timeShift_; 0100 float triseIfNoTDC_; 0101 float tfallIfNoTDC_; 0102 float minChargeForUndershoot_; 0103 float minChargeForOvershoot_; 0104 bool rejectAllFailures_; 0105 bool alwaysQAsym_; 0106 }; 0107 0108 #endif // RecoLocalCalo_HcalRecAlgos_HFSimpleTimeCheck_h_
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |
![]() ![]() |