CMS 3D CMS Logo

DigiConverterFP420.cc
Go to the documentation of this file.
1 // File: DigiConverterFP420.cc
3 // Date: 12.2006
4 // Description: DigiConverterFP420 for FP420
5 // Modifications:
8 
11  verbos = verbosity;
12 
13  constexpr int defaultBits = 10;
14  constexpr int largestBits = 30;
15  constexpr unsigned int allOne = ~0;
16 
17  // example is in SiStrips:
18  // static SimpleConfigurable<int>
19  // adcBits(defaultBits, "DigiConverterFP420:rawDataAdcBits");
20  adcBits = defaultBits;
21 
22  if (adcBits > largestBits || adcBits < 1)
23  adcBits = largestBits;
24 
25  theMaxADC = ~(allOne << adcBits);
26  // std::cout << "theMaxADC= "<< theMaxADC << std::endl; // = 1023
27  if (verbos > 0) {
28  std::cout << " ***DigiConverterFP420: constructor" << std::endl;
29  std::cout << "with known electronperADC = " << electronperADC << "the adcBits = " << adcBits
30  << " theMaxADC= " << theMaxADC << "for known defaultBits= " << defaultBits
31  << " largestBits= " << largestBits << std::endl;
32  }
33 }
34 
37 
38  for (signal_map_type::const_iterator i = analogSignal.begin(); i != analogSignal.end(); i++) {
39  // convert analog amplitude to digital, means integer number simulating ADC
40  // digitization!
41  // with truncation check
42  int adc = convert((*i).second);
43 
44  if (verbos > 0) {
45  std::cout << " ***DigiConverterFP420: convert: after truncation " << std::endl;
46  std::cout << "adc = " << adc << " (*i).first = " << (*i).first << std::endl;
47  }
48  if (adc > 0)
49  _temp.insert(_temp.end(), DigitalMapType::value_type((*i).first, adc));
50  }
51 
52  return _temp;
53 }
54 
55 int DigiConverterFP420::truncate(float in_adc) {
56  int adc = int(in_adc);
57  if (verbos > 0) {
58  std::cout << " ***DigiConverterFP420: truncate" << std::endl;
59  std::cout << "if adc = " << adc << "bigger theMaxADC = " << theMaxADC << " adc=theMaxADC !!!" << std::endl;
60  }
61  if (adc > theMaxADC)
62  adc = theMaxADC;
63 
64  return adc;
65 }
int truncate(float in_adc)
std::map< int, int, std::less< int > > DigitalMapType
DigiConverterFP420(float in, int)
PileUpFP420::signal_map_type signal_map_type
DigitalMapType convert(const signal_map_type &) override
uint16_t *__restrict__ uint16_t const *__restrict__ adc