24 produces<L1GtTechnicalTriggerRecord>();
32 std::vector<L1GtTechnicalTrigger> vecTT(
ttpBits_.size());
38 if (!CastorDigiColl.failedToGet()) {
39 double cas_efC[16][14];
42 std::vector<bool> decision(
ttpBits_.size());
46 for (
unsigned int i = 0;
i <
ttpBits_.size();
i++) {
60 output->setGtTechnicalTrigger(vecTT);
76 for (
int isec = 0; isec < 16; isec++)
77 for (
int imod = 0; imod < 14; imod++)
78 energy[isec][imod] = 0;
82 for (idigi = CastorDigiColl->
begin(); idigi != CastorDigiColl->
end(); idigi++) {
113 if (decision.size() < 4)
116 std::vector<bool> tdpo[8];
120 decision.at(0) =
true;
121 decision.at(1) =
false;
122 decision.at(2) =
false;
123 decision.at(3) =
false;
129 for (
int ioct = 0; ioct < 8; ioct++) {
130 int next_oct = (ioct + 1) % 8;
131 int prev_oct = (ioct + 8 - 1) % 8;
134 if (!tdpo[ioct].at(0))
135 decision.at(0) =
false;
136 if (!tdpo[ioct].at(1))
137 decision.at(0) =
false;
140 if (tdpo[ioct].at(2))
141 decision.at(1) =
true;
149 if (tdpo[ioct].at(5)) {
152 if (tdpo[ioct].at(0)) {
153 if (tdpo[prev_oct].at(1) && tdpo[next_oct].at(0) && tdpo[next_oct].at(1))
154 decision.at(3) =
true;
155 }
else if (tdpo[ioct].at(1)) {
156 if (tdpo[prev_oct].at(0) && tdpo[prev_oct].at(1) && tdpo[next_oct].at(0))
157 decision.at(3) =
true;
163 if (tdpo[ioct].at(6))
164 decision.at(2) =
true;
177 for (
int ioct = 0; ioct < 8; ioct++) {
187 tdpo[ioct].resize(7);
189 for (
int ibit = 0; ibit < 7; ibit++)
190 tdpo[ioct].at(ibit) =
false;
193 for (
int ioctsec = 0; ioctsec < 2; ioctsec++) {
195 int isec = 2 * ioct + ioctsec;
198 double fCsum_mod = 0;
199 double fCsum_em = 0, fCsum_ha = 0;
200 double fCsum_jet_had = 0;
201 double fCsum_col[3] = {0, 0, 0};
204 for (
int imod = 0; imod < 14; imod++) {
206 fCsum_mod += energy[isec][imod];
210 fCsum_em += energy[isec][imod];
211 if (imod > 2 && imod < 12)
212 fCsum_ha += energy[isec][imod];
216 fCsum_col[0] += energy[isec][imod];
218 fCsum_col[1] += energy[isec][imod];
220 fCsum_col[2] += energy[isec][imod];
223 if (imod > 1 && imod < 5)
224 fCsum_jet_had += energy[isec][imod];
230 tdpo[ioct].at(0) =
true;
231 else if (ioctsec == 1)
232 tdpo[ioct].at(1) =
true;
244 tdpo[ioct].at(2) =
true;
248 tdpo[ioct].at(6) =
true;
253 tdpo[ioct].at(3) =
true;
255 tdpo[ioct].at(4) =
true;
258 int countColumns = 0;
259 for (
int icol = 0; icol < 3; icol++)
262 if (countColumns >= 2)
263 tdpo[ioct].at(5) =
true;
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
int sector() const
get the sector (1-16)
std::vector< unsigned int > ttpBits_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
CastorTTRecord(const edm::ParameterSet &ps)
unsigned int CastorSignalTS_
std::vector< std::string > TrigNames_
std::vector< T >::const_iterator const_iterator
const CastorCalibrations & getCastorCalibrations(const HcalGenericDetId &fId) const
int module() const
get the module (1-2 for EM, 1-12 for HAD)
void produce(edm::Event &e, const edm::EventSetup &c) override
std::vector< double > TrigThresholds_
const CastorQIEShape * getCastorShape() const
void getTriggerDecisionsPerOctant(std::vector< bool > tdps[16], double energy[16][14]) const
double pedestal(int fCapId) const
get pedestal for capid=0..3
const_iterator end() const
double gain(int fCapId) const
get gain for capid=0..3
void getTriggerDecisions(std::vector< bool > &decision, double energy[16][14]) const
void adc2fC(const CastorDataFrame &df, CaloSamples &lf) const override
edm::EDGetTokenT< CastorDigiCollection > CastorDigiColl_
~CastorTTRecord() override
const HcalCastorDetId & id() const
void getEnergy_fC(double energy[16][14], edm::Handle< CastorDigiCollection > &CastorDigiColl, edm::Event &e, const edm::EventSetup &c)
const_iterator begin() const
const CastorQIECoder * getCastorCoder(const HcalGenericDetId &fId) const