CMS 3D CMS Logo

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

#include <HtrXmlPatternSet.h>

Public Member Functions

 ChannelPattern ()
 
void encode ()
 
void Fill (HtrXmlPatternToolParameters *params, HBHEDigiCollection::const_iterator data)
 
void Fill (HtrXmlPatternToolParameters *params, HFDigiCollection::const_iterator data)
 
void Fill (HtrXmlPatternToolParameters *params, HODigiCollection::const_iterator data)
 
void Fill_by_hand (const HcalElectronicsMap *, int)
 
int getChan () const
 
int getCoded (int bc) const
 
int getCrate () const
 
double getQuantized (int bc) const
 
int getSlot () const
 
int getTB () const
 
double & operator[] (int bc)
 
const double operator[] (int bc) const
 
void setLoc (int crate, int slot, int tb, int chan)
 

Static Public Attributes

static const int NUM_CRATES = 18
 
static const int NUM_SLOTS = 22
 
static const int SAMPLES = 512
 

Private Attributes

int fCCoded [SAMPLES]
 
double fCQuantized [SAMPLES]
 
double fCReal [SAMPLES]
 
int m_chan
 
int m_crate
 
int m_sample_pos
 
int m_slot
 
int m_tb
 

Detailed Description

Definition at line 8 of file HtrXmlPatternSet.h.

Constructor & Destructor Documentation

ChannelPattern::ChannelPattern ( )

Definition at line 5 of file HtrXmlPatternSet.cc.

References fCCoded, fCQuantized, fCReal, mps_fire::i, m_sample_pos, and SAMPLES.

5  {
6  for (int i = 0; i < SAMPLES; i++) {
7  fCReal[i] = 0;
8  fCCoded[i] = 0;
9  fCQuantized[i] = 0;
10  }
11  m_sample_pos = 0;
12 }
int fCCoded[SAMPLES]
double fCQuantized[SAMPLES]
static const int SAMPLES
double fCReal[SAMPLES]

Member Function Documentation

void ChannelPattern::encode ( )

Referenced by operator[]().

void ChannelPattern::Fill ( HtrXmlPatternToolParameters params,
HBHEDigiCollection::const_iterator  data 
)

Definition at line 168 of file HtrXmlPatternSet.cc.

References data, fCCoded, fCQuantized, HtrXmlPatternToolParameters::m_presamples_per_event, m_sample_pos, HtrXmlPatternToolParameters::m_samples_per_event, hcalTTPDigis_cfi::samples, and SAMPLES.

Referenced by HtrXmlPatternTool::Fill(), and getQuantized().

168  {
169  //first fill with pedestal value (currently hard-coded to 0)
170  for (int samples = 0; samples < params->m_samples_per_event; samples++) {
171  int index = m_sample_pos + samples;
172  if (index >= SAMPLES)
173  continue;
174 
175  fCCoded[index] = 0;
176  fCQuantized[index] = 0;
177  }
178 
179  //now fill with actual samples
180  for (int samples = 0; samples < data->size(); samples++) {
181  int index = m_sample_pos + params->m_presamples_per_event - data->presamples() + samples;
182  if (index < m_sample_pos || index >= (m_sample_pos + params->m_samples_per_event) || index >= SAMPLES)
183  continue;
184 
185  fCCoded[index] = data->sample(samples).adc();
186  fCQuantized[index] = data->sample(samples).nominal_fC();
187  }
188 
190 }
int fCCoded[SAMPLES]
double fCQuantized[SAMPLES]
static const int SAMPLES
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void ChannelPattern::Fill ( HtrXmlPatternToolParameters params,
HFDigiCollection::const_iterator  data 
)
void ChannelPattern::Fill ( HtrXmlPatternToolParameters params,
HODigiCollection::const_iterator  data 
)
void ChannelPattern::Fill_by_hand ( const HcalElectronicsMap emap,
int  pattern_number 
)

Definition at line 14 of file HtrXmlPatternSet.cc.

References gather_cfg::cout, egammaForCoreTracking_cff::depth, HcalDetId::depth(), fCCoded, fCQuantized, mps_fire::i, HcalDetId::ietaAbs(), HcalDetId::iphi(), HcalElectronicsMap::lookup(), m_chan, m_crate, m_slot, m_tb, NUM_CRATES, phi, SAMPLES, HcalElectronicsId::setHTR(), HcalDetId::subdet(), and HcalDetId::zside().

Referenced by HtrXmlPattern::do_hand_fill(), and getQuantized().

14  {
15  for (int iSample = 0; iSample < SAMPLES; iSample++) {
16  fCCoded[iSample] = 0;
17  fCQuantized[iSample] = 0;
18  }
19 
20  int dcc9[NUM_CRATES];
21  int dcc19[NUM_CRATES];
22  for (int jCrate = 0; jCrate < NUM_CRATES; jCrate++) {
23  dcc9[jCrate] = -1;
24  dcc19[jCrate] = -1;
25  }
26 
27  int iCrate;
28  iCrate = 4;
29  dcc9[iCrate] = 700;
30  dcc19[iCrate] = 701;
31  iCrate = 0;
32  dcc9[iCrate] = 702;
33  dcc19[iCrate] = 703;
34  iCrate = 1;
35  dcc9[iCrate] = 704;
36  dcc19[iCrate] = 705;
37  iCrate = 5;
38  dcc9[iCrate] = 706;
39  dcc19[iCrate] = 707;
40  iCrate = 11;
41  dcc9[iCrate] = 708;
42  dcc19[iCrate] = 709;
43  iCrate = 15;
44  dcc9[iCrate] = 710;
45  dcc19[iCrate] = 711;
46  iCrate = 17;
47  dcc9[iCrate] = 712;
48  dcc19[iCrate] = 713;
49  iCrate = 14;
50  dcc9[iCrate] = 714;
51  dcc19[iCrate] = 715;
52  iCrate = 10;
53  dcc9[iCrate] = 716;
54  dcc19[iCrate] = 717;
55  iCrate = 2;
56  dcc9[iCrate] = 718;
57  dcc19[iCrate] = 719;
58  iCrate = 9;
59  dcc9[iCrate] = 720;
60  dcc19[iCrate] = 721;
61  iCrate = 12;
62  dcc9[iCrate] = 722;
63  dcc19[iCrate] = 723;
64  iCrate = 3;
65  dcc9[iCrate] = 724;
66  dcc19[iCrate] = 725;
67  iCrate = 7;
68  dcc9[iCrate] = 726;
69  dcc19[iCrate] = 727;
70  iCrate = 6;
71  dcc9[iCrate] = 728;
72  dcc19[iCrate] = 729;
73  iCrate = 13;
74  dcc9[iCrate] = 730;
75  dcc19[iCrate] = 731;
76 
77  int* dcc = nullptr;
78  int spigot = -100;
79  if (m_slot >= 2 && m_slot <= 8) {
80  spigot = 2 * m_slot - m_tb - 3;
81  dcc = dcc9;
82  } else if (m_slot >= 13 && m_slot <= 18) {
83  spigot = 2 * m_slot - m_tb - 25;
84  dcc = dcc19;
85  } else
86  return;
87 
88  int fiber_channel = (m_chan - 1) % 3;
89  int fiber = (m_chan - fiber_channel - 1) / 3 + 1;
90  int dcc_num = dcc[m_crate] - 700;
91 
92  HcalElectronicsId heid(fiber_channel, fiber, spigot, dcc_num);
93  heid.setHTR(m_crate, m_slot, m_tb);
94 
95  //if (heid.readoutVMECrateId()!=m_crate) std::cout << "crate: " << heid.readoutVMECrateId() << "; " << m_crate << std::endl;
96  //if (heid.htrSlot()!=m_slot) std::cout << "slot: " << heid.htrSlot() << "; " << m_slot << std::endl;
97  //if (heid.htrTopBottom()!=m_tb) std::cout << "tb: " << heid.htrTopBottom() << "; " << m_tb << std::endl;
98  //if (heid.htrChanId()!=m_chan) std::cout << "chan: " << heid.htrChanId() << "; " << m_chan << std::endl;
99  //
100  //if (heid.readoutVMECrateId()==14 && heid.htrTopBottom()==0 && heid.htrChanId()==3) {
101  // std::cout << heid.rawId() << " " << heid << std::endl;
102  //}
103 
104  try {
105  const HcalDetId hdid = emap->lookup(heid);
106 
107  int etaabs = hdid.ietaAbs();
108  int phi = hdid.iphi();
109  int side = hdid.zside();
110  int depth = hdid.depth();
111  int subdet = hdid.subdet();
112 
114  if (pattern_number == 1) {
115  if (m_crate == 2 || m_crate == 9 || m_crate == 12)
116  return;
117  //fill only one channel per half-crate
118  if (m_slot != 2 && m_slot != 13)
119  return;
120  if (m_tb != 0)
121  return;
122  if (m_chan != 5)
123  return;
124 
125  //put some data here
126  fCCoded[31] = 17;
127  }
129  if (pattern_number == 2) {
130  if (depth > 1)
131  return;
132  if (subdet == 4 && etaabs < 30)
133  return;
134 
135  if ((etaabs + 2) % 4 != 0)
136  return;
137  int i = (etaabs + 2) / 4;
138  if (i < 1 || i > 7)
139  return;
140 
141  if ((phi + 3) % 4 != 0)
142  return;
143  int j = (phi + 3) / 4;
144  if (j < 1 || j > 18)
145  return;
146 
147  //add one to BX?
148  if (side < 0)
149  fCCoded[phi + 10] = i;
150  if (side > 0)
151  fCCoded[phi + 10] = i + 16;
152  }
154  if (pattern_number == 3) {
155  if (depth > 1 || etaabs != 18 || side != 1 || phi != 32)
156  return;
157  std::cout << "hello" << std::endl;
158  //add one to BX?
159  if (side > 0)
160  fCCoded[15] = 20;
161  }
162 
163  } catch (...) {
164  return;
165  }
166 }
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:146
int zside() const
get the z-side of the cell (1/-1)
Definition: HcalDetId.h:149
int fCCoded[SAMPLES]
static const int NUM_CRATES
int depth() const
get the tower depth
Definition: HcalDetId.h:166
double fCQuantized[SAMPLES]
static const int SAMPLES
int ietaAbs() const
get the absolute value of the cell ieta
Definition: HcalDetId.h:154
int iphi() const
get the cell iphi
Definition: HcalDetId.h:161
Readout chain identification for Hcal.
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
int ChannelPattern::getChan ( ) const
inline

Definition at line 25 of file HtrXmlPatternSet.h.

References m_chan.

25 { return m_chan; }
int ChannelPattern::getCoded ( int  bc) const
inline

Definition at line 29 of file HtrXmlPatternSet.h.

References fCCoded.

Referenced by HtrXmlPatternTool::createHists(), and HtrXmlPatternWriter::writePattern().

29 { return fCCoded[bc]; }
int fCCoded[SAMPLES]
int ChannelPattern::getCrate ( ) const
inline

Definition at line 22 of file HtrXmlPatternSet.h.

References m_crate.

22 { return m_crate; }
double ChannelPattern::getQuantized ( int  bc) const
inline

Definition at line 30 of file HtrXmlPatternSet.h.

References data, fCQuantized, Fill(), and Fill_by_hand().

Referenced by HtrXmlPatternTool::createHists().

30 { return fCQuantized[bc]; }
double fCQuantized[SAMPLES]
int ChannelPattern::getSlot ( ) const
inline

Definition at line 23 of file HtrXmlPatternSet.h.

References m_slot.

23 { return m_slot; }
int ChannelPattern::getTB ( ) const
inline

Definition at line 24 of file HtrXmlPatternSet.h.

References m_tb.

24 { return m_tb; }
double& ChannelPattern::operator[] ( int  bc)
inline

Definition at line 26 of file HtrXmlPatternSet.h.

References fCReal.

26 { return fCReal[bc]; }
double fCReal[SAMPLES]
const double ChannelPattern::operator[] ( int  bc) const
inline

Definition at line 27 of file HtrXmlPatternSet.h.

References encode(), and fCReal.

27 { return fCReal[bc]; }
double fCReal[SAMPLES]
void ChannelPattern::setLoc ( int  crate,
int  slot,
int  tb,
int  chan 
)
inline

Definition at line 16 of file HtrXmlPatternSet.h.

References officialStyle::chan, m_chan, m_crate, m_slot, and m_tb.

Referenced by HalfHtrData::HalfHtrData().

16  {
17  m_crate = crate;
18  m_slot = slot;
19  m_tb = tb;
20  m_chan = chan;
21  }
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi...

Member Data Documentation

int ChannelPattern::fCCoded[SAMPLES]
private

Definition at line 39 of file HtrXmlPatternSet.h.

Referenced by ChannelPattern(), Fill(), Fill_by_hand(), and getCoded().

double ChannelPattern::fCQuantized[SAMPLES]
private

Definition at line 38 of file HtrXmlPatternSet.h.

Referenced by ChannelPattern(), Fill(), Fill_by_hand(), and getQuantized().

double ChannelPattern::fCReal[SAMPLES]
private

Definition at line 37 of file HtrXmlPatternSet.h.

Referenced by ChannelPattern(), and operator[]().

int ChannelPattern::m_chan
private

Definition at line 40 of file HtrXmlPatternSet.h.

Referenced by Fill_by_hand(), getChan(), and setLoc().

int ChannelPattern::m_crate
private
int ChannelPattern::m_sample_pos
private

Definition at line 41 of file HtrXmlPatternSet.h.

Referenced by ChannelPattern(), and Fill().

int ChannelPattern::m_slot
private
int ChannelPattern::m_tb
private
const int ChannelPattern::NUM_CRATES = 18
static
const int ChannelPattern::NUM_SLOTS = 22
static
const int ChannelPattern::SAMPLES = 512
static