File indexing completed on 2023-10-25 10:03:31
0001 #ifndef SimCalorimetry_EcalEBTrigPrimAlgos_EcalEBFenixLinearizer_h
0002 #define SimCalorimetry_EcalEBTrigPrimAlgos_EcalEBFenixLinearizer_h
0003
0004 #include <DataFormats/EcalDigi/interface/EcalMGPASample.h>
0005 #include <CondFormats/EcalObjects/interface/EcalTPGPedestals.h>
0006 #include <CondFormats/EcalObjects/interface/EcalTPGLinearizationConst.h>
0007 #include <CondFormats/EcalObjects/interface/EcalTPGCrystalStatus.h>
0008
0009 #include <vector>
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 class EcalEBFenixLinearizer {
0020 private:
0021 bool famos_;
0022 int uncorrectedSample_;
0023 int gainID_;
0024 int base_;
0025 int mult_;
0026 int shift_;
0027 int strip_;
0028 bool init_;
0029
0030 const EcalTPGLinearizationConstant *linConsts_;
0031 const EcalTPGPedestal *peds_;
0032 const EcalTPGCrystalStatusCode *badXStatus_;
0033
0034 std::vector<const EcalTPGCrystalStatusCode *> vectorbadXStatus_;
0035
0036 int setInput(const EcalMGPASample &RawSam);
0037 int process();
0038
0039 public:
0040 EcalEBFenixLinearizer(bool famos);
0041 virtual ~EcalEBFenixLinearizer();
0042
0043 template <class T>
0044 void process(const T &, std::vector<int> &);
0045 void setParameters(uint32_t raw,
0046 const EcalTPGPedestals *ecaltpPed,
0047 const EcalTPGLinearizationConst *ecaltpLin,
0048 const EcalTPGCrystalStatus *ecaltpBadX);
0049 };
0050
0051 template <class T>
0052 void EcalEBFenixLinearizer::process(const T &df, std::vector<int> &output_percry) {
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062 for (int i = 0; i < df.size(); i++) {
0063 setInput(df[i]);
0064 output_percry[i] = process();
0065 }
0066
0067 return;
0068 }
0069
0070 #endif