1 #ifndef EcalTrigPrimFunctionalAlgo_h 2 #define EcalTrigPrimFunctionalAlgo_h 40 class ETPCoherenceTest;
67 std::vector<std::vector<std::pair<
int, std::vector<typename Coll::Digi>>>> &towerMap,
99 ecaltpgFineGrainTowerEE,
107 void initStructures(std::vector<std::vector<std::pair<
int, std::vector<T>>>> &towMap);
109 void clean(std::vector<std::vector<std::pair<
int, std::vector<T>>>> &towerMap);
110 template <
class Coll>
111 void fillMap(Coll
const *col, std::vector<std::vector<std::pair<
int, std::vector<typename Coll::Digi>>>> &towerMap);
119 int ind = (
id.ietaAbs() - 18) * 72 +
id.
iphi();
153 std::vector<std::vector<std::pair<int, std::vector<EBDataFrame>>>>
towerMapEB_;
154 std::vector<std::vector<std::pair<int, std::vector<EEDataFrame>>>>
towerMapEE_;
156 std::vector<EcalTriggerPrimitiveSample>
towtp_;
157 std::vector<EcalTriggerPrimitiveSample>
towtp2_;
166 template <
class Coll>
170 std::vector<std::vector<std::pair<
int, std::vector<typename Coll::Digi>>>> &towerMap,
180 std::vector<typename Coll::Digi>
dummy;
186 for (
int itow = 0; itow <
nrTowers_; ++itow) {
192 for (
unsigned int i = 0;
i < towerMap[itow].size(); ++
i) {
196 if ((towerMap[index])[
i].first > 0) {
201 bool isInInnerRings =
false;
203 isInInnerRings =
true;
209 if (isInInnerRings) {
211 int phi = 2 * ((thisTower.
iphi() - 1) / 2);
231 for (
int nrt = 0; nrt < nrTowers; nrt++) {
242 LogDebug(
"EcalTPG") <<
" For tower " << itow <<
" created TP nr " << nrTP <<
" with Et " 248 for (
int nrt = 0; nrt < nrTowers; nrt++) {
271 template <
class Coll>
273 Coll
const *
col, std::vector<std::vector<std::pair<
int, std::vector<typename Coll::Digi>>>> &towerMap) {
280 LogDebug(
"EcalTPG") <<
"Fill mapping, Collection size = " << col->size();
281 for (
unsigned int i = 0;
i < col->size(); ++
i) {
288 for (
unsigned int ij = 0; ij < towerMap[
index].size(); ++ij)
289 filled += towerMap[index][ij].
first;
295 int ncryst = towerMap[
index][stripnr - 1].first;
298 <<
"! Too many xtals for TT " << coarser <<
" stripnr " << stripnr <<
" xtalid " << samples.id();
306 <<
"[EcalTrigPrimFunctionalAlgo] (found " << col->size() <<
" frames in " << towerMap.size()
309 LogDebug(
"EcalTPG") <<
"FillMap - FillMap Collection size=0 !!!!";
318 (towMap[
i])[
j].first = 0;
329 vec1[
i] = std::pair<
int, std::vector<T>>(0, vec0);
void setPointers2(const EcalTPGFineGrainEBGroup *ecaltpgFgEBGroup, const EcalTPGLutGroup *ecaltpgLutGroup, const EcalTPGLutIdMap *ecaltpgLut, const EcalTPGFineGrainEBIdMap *ecaltpgFineGrainEB, const EcalTPGFineGrainTowerEE *ecaltpgFineGrainTowerEE, const EcalTPGTowerStatus *ecaltpgBadTT, const EcalTPGSpike *ecaltpgSpike)
const EcalElectronicsMapping * theMapping_
void setbadStripMissing(bool flag)
const CaloSubdetectorGeometry * theEndcapGeometry
std::vector< std::vector< int > > striptp_
void setPointers(const EcalTPGPedestals *ecaltpPed, const EcalTPGLinearizationConst *ecaltpLin, const EcalTPGWeightIdMap *ecaltpgWeightMap, const EcalTPGWeightGroup *ecaltpgWeightGroup, const EcalTPGSlidingWindow *ecaltpgSlidW, const EcalTPGFineGrainStripEE *ecaltpgFgStripEE, const EcalTPGCrystalStatus *ecaltpgBadX, const EcalTPGStripStatus *ecaltpgStripStatus)
class representing the Fenix chip, format strip
void fillMap(Coll const *col, std::vector< std::vector< std::pair< int, std::vector< typename Coll::Digi >>>> &towerMap)
void process(const edm::EventSetup &setup, std::vector< EBDataFrame > &bid, std::vector< std::vector< int >> &tpframetow, int nStr, std::vector< EcalTriggerPrimitiveSample > &tptow, std::vector< EcalTriggerPrimitiveSample > &tptow2, bool isInInnerRings, EcalTrigTowerDetId thisTower)
void push_back(T const &t)
std::vector< std::pair< int, EcalTrigTowerDetId > > hitTowers_
static const unsigned int maxNrSamplesOut_
std::tuple< unsigned int, int, int, DigiType, int, int, int, float > Digi
edm::ESHandle< EcalTrigTowerConstituentsMap > eTTmap_
void process(const edm::EventSetup &, std::vector< const T > &, int nrxtals, std::vector< int > &out)
int zside() const
get the z-side of the tower (1/-1)
std::vector< EcalTriggerPrimitiveSample > towtp_
virtual ~EcalTrigPrimFunctionalAlgo()
U second(std::pair< T, U > const &p)
int compressedEt() const
get the encoded/compressed Et of interesting sample
static const unsigned int maxNrTowers_
EcalTrigPrimFunctionalAlgo(const edm::EventSetup &setup, int binofmax, bool tcpFormat, bool barrelOnly, bool debug, bool famos)
void initStructures(std::vector< std::vector< std::pair< int, std::vector< T >>>> &towMap)
void setPointers(const EcalTPGFineGrainEBGroup *ecaltpgFgEBGroup, const EcalTPGLutGroup *ecaltpgLutGroup, const EcalTPGLutIdMap *ecaltpgLut, const EcalTPGFineGrainEBIdMap *ecaltpgFineGrainEB, const EcalTPGFineGrainTowerEE *ecaltpgFineGrainTowerEE, const EcalTPGTowerStatus *ecaltpgBadTT, const EcalTPGSpike *ecaltpgSpike)
void setSample(int i, const EcalTriggerPrimitiveSample &sam)
int ietaAbs() const
get the absolute value of the tower ieta
std::vector< double > vec1
void run(const edm::EventSetup &, const EBDigiCollection *col, EcalTrigPrimDigiCollection &result, EcalTrigPrimDigiCollection &resultTcp)
std::vector< std::vector< std::pair< int, std::vector< EBDataFrame > > > > towerMapEB_
EcalFenixStripFgvbEE * getFGVB() const
void clean(std::vector< std::vector< std::pair< int, std::vector< T >>>> &towerMap)
int getIndex(const EBDigiCollection *, EcalTrigTowerDetId &id)
int getIndex(const EEDigiCollection *, EcalTrigTowerDetId &id)
void run_part2(const edm::EventSetup &, Coll const *col, std::vector< std::vector< std::pair< int, std::vector< typename Coll::Digi >>>> &towerMap, EcalTrigPrimDigiCollection &result, EcalTrigPrimDigiCollection &resultTcp)
int iphi() const
get the tower iphi
void init(const edm::EventSetup &)
static const unsigned int maxNrTPs_
void setPointers(const EcalTPGLinearizationConst *ecaltpLin, const EcalTPGPedestals *ecaltpPed, const EcalTPGSlidingWindow *ecaltpgSlidW, const EcalTPGWeightIdMap *ecaltpgWeightMap, const EcalTPGWeightGroup *ecaltpgWeightGroup, const EcalTPGFineGrainStripEE *ecaltpgFgStripEE, const EcalTPGCrystalStatus *ecaltpgBadX, const EcalTPGStripStatus *ecaltpgStripStatus)
std::vector< std::vector< std::pair< int, std::vector< EEDataFrame > > > > towerMapEE_
EcalSubdetector subDet() const
get the subDetector associated to the Trigger Tower
std::vector< EcalTriggerPrimitiveSample > towtp2_
void run_part1_EB(EBDigiCollection const *col)
class representing the Fenix chip, format strip
static const unsigned int nrSamples_
void run_part1_EE(EEDigiCollection const *col)
int findStripNr(const EBDetId &id)