File indexing completed on 2023-03-17 11:23:44
0001 #ifndef SIMCALORIMETRY_ECALTRIGPRIMALGOS_ECALFENIXSTRIP_H
0002 #define SIMCALORIMETRY_ECALTRIGPRIMALGOS_ECALFENIXSTRIP_H
0003
0004 #include <SimCalorimetry/EcalTrigPrimAlgos/interface/EcalFenixAmplitudeFilter.h>
0005 #include <SimCalorimetry/EcalTrigPrimAlgos/interface/EcalFenixOddAmplitudeFilter.h>
0006 #include <SimCalorimetry/EcalTrigPrimAlgos/interface/EcalFenixEtStrip.h>
0007 #include <SimCalorimetry/EcalTrigPrimAlgos/interface/EcalFenixLinearizer.h>
0008 #include <SimCalorimetry/EcalTrigPrimAlgos/interface/EcalFenixPeakFinder.h>
0009 #include <SimCalorimetry/EcalTrigPrimAlgos/interface/EcalFenixStripFgvbEE.h>
0010
0011 #include "DataFormats/EcalDetId/interface/EcalTriggerElectronicsId.h"
0012 #include "Geometry/EcalMapping/interface/EcalElectronicsMapping.h"
0013 #include <DataFormats/EcalDigi/interface/EBDataFrame.h>
0014 #include <DataFormats/EcalDigi/interface/EEDataFrame.h>
0015 #include <string>
0016
0017 class EBDataFrame;
0018 class EcalTriggerPrimitiveSample;
0019 class EcalTPGSlidingWindow;
0020 class EcalTPGFineGrainStripEE;
0021 class EcalFenixStripFgvbEE;
0022 class EcalFenixStripFormatEB;
0023 class EcalFenixStripFormatEE;
0024 class EcalTPGStripStatus;
0025 class EcalTPGTPMode;
0026
0027
0028
0029
0030
0031 class EcalFenixStrip {
0032 public:
0033
0034 EcalFenixStrip(const EcalElectronicsMapping *theMapping,
0035 bool debug,
0036 bool famos,
0037 int maxNrSamples,
0038 int nbMaxXtals,
0039 bool TPinfoPrintout);
0040 virtual ~EcalFenixStrip();
0041
0042 private:
0043 const EcalElectronicsMapping *theMapping_;
0044
0045 bool debug_;
0046 bool famos_;
0047 int nbMaxXtals_;
0048 bool tpInfoPrintout_;
0049
0050 std::vector<EcalFenixLinearizer *> linearizer_;
0051
0052 EcalFenixAmplitudeFilter *amplitude_filter_;
0053 EcalFenixOddAmplitudeFilter *oddAmplitude_filter_;
0054
0055 EcalFenixPeakFinder *peak_finder_;
0056
0057 EcalFenixStripFormatEB *fenixFormatterEB_;
0058
0059 EcalFenixStripFormatEE *fenixFormatterEE_;
0060
0061 EcalFenixEtStrip *adder_;
0062
0063 EcalFenixStripFgvbEE *fgvbEE_;
0064
0065
0066 std::vector<std::vector<int>> lin_out_;
0067 std::vector<int> add_out_;
0068
0069
0070 std::vector<int> even_filt_out_;
0071 std::vector<int> even_peak_out_;
0072
0073
0074 std::vector<int> odd_filt_out_;
0075 std::vector<int> odd_peak_out_;
0076
0077 std::vector<int> format_out_;
0078 std::vector<int> fgvb_out_;
0079 std::vector<int> fgvb_out_temp_;
0080
0081 const EcalTPGPedestals *ecaltpPed_;
0082 const EcalTPGLinearizationConst *ecaltpLin_;
0083 const EcalTPGWeightIdMap *ecaltpgWeightMap_;
0084 const EcalTPGWeightGroup *ecaltpgWeightGroup_;
0085 const EcalTPGOddWeightIdMap *ecaltpgOddWeightMap_;
0086 const EcalTPGOddWeightGroup *ecaltpgOddWeightGroup_;
0087 const EcalTPGSlidingWindow *ecaltpgSlidW_;
0088 const EcalTPGFineGrainStripEE *ecaltpgFgStripEE_;
0089 const EcalTPGCrystalStatus *ecaltpgBadX_;
0090 const EcalTPGStripStatus *ecaltpgStripStatus_;
0091 const EcalTPGTPMode *ecaltpgTPMode_;
0092
0093 bool identif_;
0094
0095 public:
0096 void setPointers(const EcalTPGPedestals *ecaltpPed,
0097 const EcalTPGLinearizationConst *ecaltpLin,
0098 const EcalTPGWeightIdMap *ecaltpgWeightMap,
0099 const EcalTPGWeightGroup *ecaltpgWeightGroup,
0100 const EcalTPGOddWeightIdMap *ecaltpgOddWeightMap,
0101 const EcalTPGOddWeightGroup *ecaltpgOddWeightGroup,
0102 const EcalTPGSlidingWindow *ecaltpgSlidW,
0103 const EcalTPGFineGrainStripEE *ecaltpgFgStripEE,
0104 const EcalTPGCrystalStatus *ecaltpgBadX,
0105 const EcalTPGStripStatus *ecaltpgStripStatus,
0106 const EcalTPGTPMode *ecaltpgTPMode) {
0107 ecaltpPed_ = ecaltpPed;
0108 ecaltpLin_ = ecaltpLin;
0109 ecaltpgWeightMap_ = ecaltpgWeightMap;
0110 ecaltpgWeightGroup_ = ecaltpgWeightGroup;
0111 ecaltpgOddWeightMap_ = ecaltpgOddWeightMap;
0112 ecaltpgOddWeightGroup_ = ecaltpgOddWeightGroup;
0113 ecaltpgSlidW_ = ecaltpgSlidW;
0114 ecaltpgFgStripEE_ = ecaltpgFgStripEE;
0115 ecaltpgBadX_ = ecaltpgBadX;
0116 ecaltpgStripStatus_ = ecaltpgStripStatus;
0117 ecaltpgTPMode_ = ecaltpgTPMode;
0118 }
0119
0120
0121 void process(std::vector<EBDataFrame> &samples, int nrXtals, std::vector<int> &out);
0122 void process(std::vector<EEDataFrame> &samples, int nrXtals, std::vector<int> &out);
0123
0124 template <class T>
0125 void process_part1(int identif,
0126 std::vector<T> &df,
0127 int nrXtals,
0128 uint32_t stripid,
0129 const EcalTPGPedestals *ecaltpPed,
0130 const EcalTPGLinearizationConst *ecaltpLin,
0131 const EcalTPGWeightIdMap *ecaltpgWeightMap,
0132 const EcalTPGWeightGroup *ecaltpgWeightGroup,
0133 const EcalTPGOddWeightIdMap *ecaltpgOddWeightMap,
0134 const EcalTPGOddWeightGroup *ecaltpgOddWeightGroup,
0135 const EcalTPGCrystalStatus *ecaltpBadX);
0136
0137
0138
0139 void process_part2_barrel(uint32_t stripid,
0140 const EcalTPGSlidingWindow *ecaltpgSlidW,
0141 const EcalTPGFineGrainStripEE *ecaltpgFgStripEE);
0142
0143 void process_part2_endcap(uint32_t stripid,
0144 const EcalTPGSlidingWindow *ecaltpgSlidW,
0145 const EcalTPGFineGrainStripEE *ecaltpgFgStripEE,
0146 const EcalTPGStripStatus *ecaltpgStripStatus);
0147
0148
0149
0150 EcalFenixLinearizer *getLinearizer(int i) const { return linearizer_[i]; }
0151 EcalFenixEtStrip *getAdder() const { return adder_; }
0152 EcalFenixAmplitudeFilter *getEvenFilter() const { return amplitude_filter_; }
0153 EcalFenixOddAmplitudeFilter *getOddFilter() const { return oddAmplitude_filter_; }
0154 EcalFenixPeakFinder *getPeakFinder() const { return peak_finder_; }
0155
0156 EcalFenixStripFormatEB *getFormatterEB() const { return fenixFormatterEB_; }
0157 EcalFenixStripFormatEE *getFormatterEE() const { return fenixFormatterEE_; }
0158
0159 EcalFenixStripFgvbEE *getFGVB() const { return fgvbEE_; }
0160
0161 void setbadStripMissing(bool flag) { identif_ = flag; }
0162 bool getbadStripMissing() const { return identif_; }
0163 };
0164 #endif