1 #ifndef EcalTrigPrimFunctionalAlgo_h
2 #define EcalTrigPrimFunctionalAlgo_h
40 class ETPCoherenceTest;
62 std::vector<std::vector<std::pair<
int,std::vector<typename Coll::Digi> > > > &towerMap,
67 estrip_->
setPointers(ecaltpPed,ecaltpLin,ecaltpgWeightMap,ecaltpgWeightGroup,ecaltpgSlidW,ecaltpgFgStripEE,ecaltpgBadX,ecaltpgStripStatus);
78 etcp_->
setPointers(ecaltpgFgEBGroup,ecaltpgLutGroup,ecaltpgLut,ecaltpgFineGrainEB,ecaltpgFineGrainTowerEE,ecaltpgBadTT,ecaltpgSpike);
85 void initStructures(std::vector<std::vector<std::pair<
int,std::vector<T> > > > & towMap);
87 void clean(std::vector<std::vector<std::pair<
int,std::vector<T> > > > &towerMap);
89 void fillMap(Coll
const * col, std::vector<std::vector<std::pair<
int,std::vector<typename Coll::Digi> > > > &towerMap);
97 int ind=(
id.ietaAbs()-18)*72 +
id.iphi();
98 if (
id.
zside()<0) ind+=792;
128 std::vector<std::vector<std::pair<int,std::vector<EBDataFrame> > > >
towerMapEB_;
129 std::vector<std::vector<std::pair<int,std::vector<EEDataFrame> > > >
towerMapEE_;
131 std::vector<EcalTriggerPrimitiveSample>
towtp_;
132 std::vector<EcalTriggerPrimitiveSample>
towtp2_;
140 template <
class Coll>
152 std::vector<typename Coll::Digi> dummy;
166 for(
unsigned int i = 0;
i < towerMap[itow].size();++
i)
170 if ((towerMap[index])[
i].first > 0) {
175 bool isInInnerRings=
false;
185 int phi=2*((thisTower.
iphi()-1)/2);
200 for (
int nrt=0;nrt<nrTowers;nrt++) {
211 LogDebug(
"EcalTPG") <<
" For tower "<<itow<<
" created TP nr "<<nrTP<<
" with Et "<<tptow[nrt].
compressedEt();
217 for (
int nrt=0;nrt<nrTowers;nrt++) {
238 template <
class Coll>
240 std::vector<std::vector<std::pair<
int,std::vector<typename Coll::Digi> > > > &towerMap)
248 LogDebug(
"EcalTPG") <<
"Fill mapping, Collection size = "<<col->size();
249 for(
unsigned int i = 0;
i < col->size() ; ++
i) {
250 Digi samples((*col)[
i]);
256 for (
unsigned int ij=0;ij<towerMap[
index].size();++ij) filled+=towerMap[index][ij].
first;
262 int ncryst=towerMap[
index][stripnr-1].first;
264 edm::LogError(
"EcalTrigPrimFunctionAlgo")<<
"! Too many xtals for TT "<<coarser<<
" stripnr "<<stripnr<<
" xtalid "<<samples.id() ;
267 ((towerMap[
index])[stripnr-1].
second)[ncryst]=samples;
271 LogDebug(
"EcalTPG")<<
"fillMap"<<
"[EcalTrigPrimFunctionalAlgo] (found "
272 << col->size() <<
" frames in "<< towerMap.size() <<
" towers) ";
275 LogDebug(
"EcalTPG")<<
"FillMap - FillMap Collection size=0 !!!!";
293 for (
int i=0;i<nbMaxStrips_ ;++i) 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)
std::vector< std::vector< std::pair< int, std::vector< EBDataFrame > > > > towerMapEB_
const EcalElectronicsMapping * theMapping_
void setbadStripMissing(bool flag)
const CaloSubdetectorGeometry * theEndcapGeometry
std::vector< std::vector< int > > striptp_
std::vector< std::pair< int, EcalTrigTowerDetId > > hitTowers_
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 push_back(T const &t)
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 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 fillMap(Coll const *col, std::vector< std::vector< std::pair< int, std::vector< typename Coll::Digi > > > > &towerMap)
void run(const edm::EventSetup &, const EBDigiCollection *col, EcalTrigPrimDigiCollection &result, EcalTrigPrimDigiCollection &resultTcp)
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)
EcalFenixStripFgvbEE * getFGVB() const
std::vector< std::vector< std::pair< int, std::vector< EEDataFrame > > > > towerMapEE_
int getIndex(const EBDigiCollection *, EcalTrigTowerDetId &id)
int getIndex(const EEDigiCollection *, EcalTrigTowerDetId &id)
int iphi() const
get the tower iphi
void init(const edm::EventSetup &)
void initStructures(std::vector< std::vector< std::pair< int, std::vector< T > > > > &towMap)
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)
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
void clean(std::vector< std::vector< std::pair< int, std::vector< T > > > > &towerMap)
static const unsigned int nrSamples_
void run_part1_EE(EEDigiCollection const *col)
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)
int findStripNr(const EBDetId &id)