CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
EcalFenixStripFormatEE Class Reference

Formatting for Fenix strip input: 18 bits + 3x 1bit (fgvb, gapflagbit, output from peakfinder) output:16 bits The output corresponds to 1 calodataframe per strip — not really a calodataframe no? More...

#include <EcalFenixStripFormatEE.h>

Public Member Functions

 EcalFenixStripFormatEE ()
 
virtual void process (std::vector< int > &fgvbout, std::vector< int > &peakout_even, std::vector< int > &filtout_even, std::vector< int > &peakout_odd, std::vector< int > &filtout_odd, std::vector< int > &output)
 
void setParameters (uint32_t id, const EcalTPGSlidingWindow *&, const EcalTPGStripStatus *, const EcalTPGTPMode *)
 
virtual ~EcalFenixStripFormatEE ()
 

Private Member Functions

int process ()
 
int setInput (int input_even, int inputEvenPeak, int input_odd, int inputOddPeak, int fgvb)
 

Private Attributes

const EcalTPGTPModeecaltpgTPMode_
 
int fgvb_
 
int input_even_
 
int input_odd_
 
int inputEvenPeak_
 
int inputOddPeak_
 
uint32_t shift_
 
uint16_t stripStatus_
 

Detailed Description

Formatting for Fenix strip input: 18 bits + 3x 1bit (fgvb, gapflagbit, output from peakfinder) output:16 bits The output corresponds to 1 calodataframe per strip — not really a calodataframe no?

Formatting for Fenix Tcp EE input 10 bits from Ettot 1 bit from fgvb 3 bits TriggerTowerFlag output: 16 bits simple formatting.

Definition at line 20 of file EcalFenixStripFormatEE.h.

Constructor & Destructor Documentation

◆ EcalFenixStripFormatEE()

EcalFenixStripFormatEE::EcalFenixStripFormatEE ( )

Definition at line 10 of file EcalFenixStripFormatEE.cc.

◆ ~EcalFenixStripFormatEE()

EcalFenixStripFormatEE::~EcalFenixStripFormatEE ( )
virtual

Definition at line 13 of file EcalFenixStripFormatEE.cc.

13 {}

Member Function Documentation

◆ process() [1/2]

int EcalFenixStripFormatEE::process ( )
private

Definition at line 27 of file EcalFenixStripFormatEE.cc.

References EcalTPGTPMode::DisableEEEvenPeakFinder, ecaltpgTPMode_, EcalTPGTPMode::EnableEEOddFilter, EcalTPGTPMode::EnableEEOddPeakFinder, EcalTPGTPMode::FenixEEStripInfobit2, EcalTPGTPMode::FenixEEStripOutput, fgvb_, input_even_, input_odd_, inputEvenPeak_, inputOddPeak_, convertSQLitetoXML_cfg::output, shift_, and stripStatus_.

Referenced by process(), and EcalFenixStrip::process_part2_endcap().

27  {
28  // Bad strip - zero everything
29  if (stripStatus_ != 0)
30  return 0;
31 
32  int even_output = 0;
33  int odd_output = 0;
34 
35  // Applying sliding window on the strip output after the peak finder
37  even_output = input_even_ >> shift_;
38  } else {
39  if (inputEvenPeak_ == 1)
40  even_output = input_even_ >> shift_;
41  }
42 
44  if (inputOddPeak_ == 1)
45  odd_output = input_odd_ >> shift_;
46  } else {
47  odd_output = input_odd_ >> shift_;
48  }
49 
50  // Truncating the signals to to 12 bit after peak finder sliding window
51  if (odd_output > 0XFFF)
52  odd_output = 0XFFF;
53  if (even_output > 0XFFF)
54  even_output = 0XFFF;
55 
56  // Prepare the amplitude output for the strip looking at the TPmode options
57  int output = 0;
58  bool is_odd_larger = false;
59 
60  if (ecaltpgTPMode_->EnableEEOddFilter && (odd_output > even_output))
61  is_odd_larger =
62  true; // If running with odd filter enabled, check if odd output is larger regardless of strip formatter output mode
64  case 0: // even filter out
65  output = even_output;
66  break;
67  case 1: // odd filter out
69  output = odd_output;
70  else
71  output = even_output;
72  break;
73  case 2: // larger between odd and even
74  if (ecaltpgTPMode_->EnableEEOddFilter && (odd_output > even_output)) {
75  output = odd_output;
76  } else
77  output = even_output;
78  break;
79  case 3: // even + odd
81  output = even_output + odd_output;
82  else
83  output = even_output;
84  break;
85  }
86 
87  // barrel saturates at 12 bits, endcap at 10!
88  // Pascal: finally no,endcap has 12 bits as in EB (bug in FENIX!!!!)
89  if (output > 0XFFF)
90  output = 0XFFF;
91 
92  // Info bits
93  // bit12 is sFGVB, bit13 is for odd>even flagging
94  output |= ((fgvb_ & 0x1) << 12);
95 
97  output |= ((is_odd_larger & 0x1) << 13);
98  }
99 
100  return output;
101 }
uint16_t FenixEEStripInfobit2
Definition: EcalTPGTPMode.h:26
bool EnableEEOddFilter
Definition: EcalTPGTPMode.h:18
uint16_t FenixEEStripOutput
Definition: EcalTPGTPMode.h:24
bool EnableEEOddPeakFinder
Definition: EcalTPGTPMode.h:20
bool DisableEEEvenPeakFinder
Definition: EcalTPGTPMode.h:22
Definition: output.py:1
const EcalTPGTPMode * ecaltpgTPMode_

◆ process() [2/2]

void EcalFenixStripFormatEE::process ( std::vector< int > &  fgvbout,
std::vector< int > &  peakout_even,
std::vector< int > &  filtout_even,
std::vector< int > &  peakout_odd,
std::vector< int > &  filtout_odd,
std::vector< int > &  output 
)
virtual

Definition at line 104 of file EcalFenixStripFormatEE.cc.

References gather_cfg::cout, mps_fire::i, process(), and setInput().

109  {
110  if (peakout_even.size() != filtout_even.size() || fgvbout.size() != filtout_even.size() ||
111  peakout_odd.size() != filtout_odd.size() || filtout_odd.size() != filtout_even.size()) {
112  edm::LogWarning("EcalTPG") << " problem in EcalFenixStripFormatEE: peak_out and filt_out don't "
113  "have the same size";
114  std::cout << " Size peak_out" << peakout_even.size() << ", size filt_out:" << filtout_even.size() << std::flush
115  << std::endl;
116  }
117 
118  for (unsigned int i = 0; i < filtout_even.size(); i++) {
119  setInput(filtout_even[i], peakout_even[i], filtout_odd[i], peakout_odd[i], fgvbout[i]);
120  output[i] = process();
121  }
122  return;
123 }
int setInput(int input_even, int inputEvenPeak, int input_odd, int inputOddPeak, int fgvb)
Definition: output.py:1
Log< level::Warning, false > LogWarning

◆ setInput()

int EcalFenixStripFormatEE::setInput ( int  input_even,
int  inputEvenPeak,
int  input_odd,
int  inputOddPeak,
int  fgvb 
)
private

Definition at line 17 of file EcalFenixStripFormatEE.cc.

References fgvb_, input_even_, input_odd_, inputEvenPeak_, and inputOddPeak_.

Referenced by process().

17  {
18  inputEvenPeak_ = inputEvenPeak;
19  input_even_ = input_even;
20  inputOddPeak_ = inputOddPeak;
21  input_odd_ = input_odd;
22  fgvb_ = fgvb;
23  return 0;
24 }

◆ setParameters()

void EcalFenixStripFormatEE::setParameters ( uint32_t  id,
const EcalTPGSlidingWindow *&  slWin,
const EcalTPGStripStatus stripStatus,
const EcalTPGTPMode ecaltpgTPMode 
)

Definition at line 126 of file EcalFenixStripFormatEE.cc.

References ecaltpgTPMode_, EcalTPGSlidingWindow::getMap(), EcalTPGStripStatus::getMap(), EcalPhiSymFlatTableProducers_cfi::id, ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, shift_, and stripStatus_.

Referenced by EcalFenixStrip::process_part2_endcap().

129  {
130  // TP mode contains options for the formatter (odd/even filters config)
131  ecaltpgTPMode_ = ecaltpgTPMode;
132  const EcalTPGSlidingWindowMap &slwinmap = slWin->getMap();
133  EcalTPGSlidingWindowMapIterator it = slwinmap.find(id);
134  if (it != slwinmap.end())
135  shift_ = (*it).second;
136  else
137  edm::LogWarning("EcalTPG") << " could not find EcalTPGSlidingWindowMap entry for " << id;
138 
139  const EcalTPGStripStatusMap &statusMap = stripStatus->getMap();
140  EcalTPGStripStatusMapIterator sit = statusMap.find(id);
141  if (sit != statusMap.end()) {
142  stripStatus_ = (*sit).second;
143  } else {
144  stripStatus_ = 0; // Assume strip OK
145  }
146 }
const std::map< uint32_t, uint32_t > & getMap() const
std::map< uint32_t, uint32_t > EcalTPGSlidingWindowMap
const std::map< uint32_t, uint16_t > & getMap() const
const EcalTPGTPMode * ecaltpgTPMode_
std::map< uint32_t, uint16_t > EcalTPGStripStatusMap
std::map< uint32_t, uint32_t >::const_iterator EcalTPGSlidingWindowMapIterator
std::map< uint32_t, uint16_t >::const_iterator EcalTPGStripStatusMapIterator

Member Data Documentation

◆ ecaltpgTPMode_

const EcalTPGTPMode* EcalFenixStripFormatEE::ecaltpgTPMode_
private

Definition at line 29 of file EcalFenixStripFormatEE.h.

Referenced by process(), and setParameters().

◆ fgvb_

int EcalFenixStripFormatEE::fgvb_
private

Definition at line 27 of file EcalFenixStripFormatEE.h.

Referenced by process(), and setInput().

◆ input_even_

int EcalFenixStripFormatEE::input_even_
private

Definition at line 24 of file EcalFenixStripFormatEE.h.

Referenced by process(), and setInput().

◆ input_odd_

int EcalFenixStripFormatEE::input_odd_
private

Definition at line 25 of file EcalFenixStripFormatEE.h.

Referenced by process(), and setInput().

◆ inputEvenPeak_

int EcalFenixStripFormatEE::inputEvenPeak_
private

Definition at line 22 of file EcalFenixStripFormatEE.h.

Referenced by process(), and setInput().

◆ inputOddPeak_

int EcalFenixStripFormatEE::inputOddPeak_
private

Definition at line 23 of file EcalFenixStripFormatEE.h.

Referenced by process(), and setInput().

◆ shift_

uint32_t EcalFenixStripFormatEE::shift_
private

Definition at line 26 of file EcalFenixStripFormatEE.h.

Referenced by process(), and setParameters().

◆ stripStatus_

uint16_t EcalFenixStripFormatEE::stripStatus_
private

Definition at line 28 of file EcalFenixStripFormatEE.h.

Referenced by process(), and setParameters().