CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
pos::PixelGlobalDelay25 Class Reference

This class specifies which delay25 channels are delayed over the entire pixel detector and by how much. More...

#include <PixelGlobalDelay25.h>

Inheritance diagram for pos::PixelGlobalDelay25:
pos::PixelConfigBase

Public Member Functions

unsigned int getCyclicDelay (unsigned int offset=0) const
 
unsigned int getDelay (unsigned int offset=0) const
 
unsigned int getTTCrxDelay (unsigned int offset) const
 
unsigned int getTTCrxDelay () const
 
 PixelGlobalDelay25 (std::string filename)
 
 PixelGlobalDelay25 (std::vector< std::vector< std::string > > &tab)
 
virtual void setDelay (unsigned int delay)
 
void writeASCII (std::string dir) const override
 
void writeXML (std::ofstream *out, std::ofstream *out1=nullptr, std::ofstream *out2=nullptr) const override
 
void writeXMLHeader (pos::PixelConfigKey key, int version, std::string path, std::ofstream *out, std::ofstream *out1=nullptr, std::ofstream *out2=nullptr) const override
 
void writeXMLTrailer (std::ofstream *out, std::ofstream *out1=nullptr, std::ofstream *out2=nullptr) const override
 
 ~PixelGlobalDelay25 () override
 
- Public Member Functions inherited from pos::PixelConfigBase
std::string creator ()
 
std::string date ()
 
std::string description ()
 
std::string getAuthor () const
 
std::string getComment () const
 
 PixelConfigBase (std::string description, std::string creator, std::string date)
 
void setAuthor (std::string author)
 
void setComment (std::string comment)
 
virtual void writeXML (pos::PixelConfigKey key, int version, std::string path) const
 
virtual void writeXML (std::ofstream *out) const
 
virtual void writeXMLHeader (pos::PixelConfigKey key, int version, std::string path, std::ofstream *out) const
 
virtual void writeXMLTrailer (std::ofstream *out) const
 
virtual ~PixelConfigBase ()
 

Private Attributes

unsigned int delay_
 

Detailed Description

This class specifies which delay25 channels are delayed over the entire pixel detector and by how much.

" "

A longer explanation will be placed here later

Definition at line 26 of file PixelGlobalDelay25.h.

Constructor & Destructor Documentation

PixelGlobalDelay25::PixelGlobalDelay25 ( std::string  filename)

Definition at line 73 of file PixelGlobalDelay25.cc.

References gather_cfg::cout, TauDecayModes::dec, delay_, recoMuon::in, and AlCaHLTBitMon_QueryRunRegistry::string.

73  : PixelConfigBase(" ", " ", " ") {
74  std::string mthn = "[PixelGlobalDelay25::PixelGlobalDelay25()]\t\t\t ";
75  std::ifstream in(filename.c_str());
76 
77  if (!in.good()) {
78  std::cout << __LINE__ << "]\t" << mthn << "Could not open: " << filename << std::endl;
79  throw std::runtime_error("Failed to open file " + filename);
80  } else {
81  std::cout << __LINE__ << "]\t" << mthn << "Opened: " << filename << std::endl;
82  }
83 
84  in >> std::hex >> delay_ >> std::dec;
85  std::cout << __LINE__ << "]\t" << mthn << "read global delay 0x" << std::hex << delay_ << std::dec << endl;
86 
87  in.close();
88 
89  if (delay_ >= 50) {
90  std::cout << __LINE__ << "]\t" << mthn << "global delay is out of range (>= 1 Tclk)." << std::endl;
91  std::cout << __LINE__ << "]\t" << mthn << "will not apply any global delays." << std::endl;
92  std::cout << __LINE__ << "]\t" << mthn << "increase the delays in the TPLL if needed." << std::endl;
93  delay_ = 0;
94  }
95 }
PixelConfigBase(std::string description, std::string creator, std::string date)
pos::PixelGlobalDelay25::PixelGlobalDelay25 ( std::vector< std::vector< std::string > > &  tab)
PixelGlobalDelay25::~PixelGlobalDelay25 ( )
override

Definition at line 97 of file PixelGlobalDelay25.cc.

97 {}

Member Function Documentation

unsigned int PixelGlobalDelay25::getCyclicDelay ( unsigned int  offset = 0) const

Definition at line 114 of file PixelGlobalDelay25.cc.

References gather_cfg::cout, delay_, runTheMatrix::ret, and AlCaHLTBitMon_QueryRunRegistry::string.

114  {
115  std::string mthn = "[PixelGlobalDelay25::getCyclicDelay()]\t\t\t ";
116  unsigned int ret = offset + delay_;
117  if (ret > 120)
118  ret -= 50;
119  std::cout << __LINE__ << "]\t" << mthn << "getCyclicDelay(" << offset << ") returns " << ret << endl;
120  return ret;
121 }
ret
prodAgent to be discontinued
unsigned int PixelGlobalDelay25::getDelay ( unsigned int  offset = 0) const

Definition at line 99 of file PixelGlobalDelay25.cc.

References gather_cfg::cout, delay_, hltrates_dqm_sourceclient-live_cfg::offset, runTheMatrix::ret, and AlCaHLTBitMon_QueryRunRegistry::string.

99  {
100  std::string mthn = "[PixelGlobalDelay25::getDelay()]\t\t\t ";
101  unsigned int ret = offset + delay_;
102  if (ret > 127) {
103  std::cout << __LINE__ << "]\t" << mthn << "the required total delay " << ret << " is out of range." << endl;
104  std::cout << __LINE__ << "]\t" << mthn << "original setting: " << offset << ", global delay: " << delay_ << endl;
105  std::cout << __LINE__ << "]\t" << mthn << "we will keep the default delay setting..." << endl;
106 
107  ret = offset;
108  }
109 
110  std::cout << __LINE__ << "]\t" << mthn << "getDelay(" << offset << ") returns " << ret << endl;
111  return ret;
112 }
ret
prodAgent to be discontinued
unsigned int PixelGlobalDelay25::getTTCrxDelay ( unsigned int  offset) const

Definition at line 123 of file PixelGlobalDelay25.cc.

References gather_cfg::cout, delay_, createfilelist::int, visualization-live-secondInstance_cfg::m, hltrates_dqm_sourceclient-live_cfg::offset, runTheMatrix::ret, and AlCaHLTBitMon_QueryRunRegistry::string.

123  {
124  // Computes the TTCrx delay settting required to compensate for the global Delay25 shift.
125  //
126  // 'offset' is the current register setting in the TTCrx register
127  //
128  // The unit of delay_ is 0.499 ns (Delay25 granularity) that needs to be converted
129  // to the units of the TTCrx delay generator 103.96 ps
130 
131  std::string mthn = "[PixelGlobalDelay25::getTTCrxDelay()]\t\t\t ";
132  unsigned int K = (offset / 16 * 16 + offset % 16 * 15 + 30) % 240;
133  K += (unsigned int)floor((delay_ * 0.499) / 0.1039583 + 0.5); // add max 235
134 
135  unsigned int ret;
136  if (K > 239) {
137  std::cout << __LINE__ << "]\t" << mthn << "the required TTCrx fine delay " << K << " is out of range." << endl;
138  std::cout << __LINE__ << "]\t" << mthn << "this can happen if the register was initialized to 0" << endl;
139  std::cout << __LINE__ << "]\t" << mthn << "(i.e. delay of 3.1 ns) and the required delay is >21.7 ns." << endl;
140  std::cout << __LINE__ << "]\t" << mthn << "we will keep the current delay setting..." << endl;
141  ret = offset;
142  } else {
143  unsigned int n = K % 15;
144  unsigned int m = ((K / 15) - n + 14) % 16;
145  ret = 16 * n + m;
146  }
147 
148  std::cout << __LINE__ << "]\t" << mthn << "getTTCrxDelay(" << offset << ") returns " << ret << endl;
149  return ret;
150  //return offset;
151 }
ret
prodAgent to be discontinued
unsigned int PixelGlobalDelay25::getTTCrxDelay ( ) const

Definition at line 153 of file PixelGlobalDelay25.cc.

153  {
154  // Computes the TTCrx delay settting required to compensate for the global Delay25 shift.
155  //
156  // Assumes that the current register setting in the TTCrx is 0 ns (14)
157  //
158  // The unit of delay_ is 0.499 ns (Delay25 granularity) that needs to be converted
159  // to the units of the TTCrx delay generator 103.96 ps
160 
161  return getTTCrxDelay(14);
162 }
unsigned int getTTCrxDelay() const
virtual void pos::PixelGlobalDelay25::setDelay ( unsigned int  delay)
inlinevirtual
void PixelGlobalDelay25::writeASCII ( std::string  dir) const
overridevirtual

Implements pos::PixelConfigBase.

Definition at line 164 of file PixelGlobalDelay25.cc.

References gather_cfg::cout, TauDecayModes::dec, delay_, corrVsCorr::filename, MillePedeFileConverter_cfg::out, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by setDelay().

164  {
165  std::string mthn = "[PixelGlobalDelay25::writeASCII()]\t\t\t ";
166  if (!dir.empty())
167  dir += "/";
168  string filename = dir + "globaldelay25.dat";
169 
170  ofstream out(filename.c_str());
171  if (!out.good()) {
172  cout << __LINE__ << "]\t" << mthn << "Could not open file:" << filename << endl;
173  assert(0);
174  }
175 
176  out << "0x" << hex << delay_ << dec << endl;
177 
178  out.close();
179 }
void PixelGlobalDelay25::writeXML ( std::ofstream *  out,
std::ofstream *  out1 = nullptr,
std::ofstream *  out2 = nullptr 
) const
overridevirtual

Reimplemented from pos::PixelConfigBase.

Definition at line 229 of file PixelGlobalDelay25.cc.

References TauDecayModes::dec, delay_, alignCSCRings::s, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by setDelay().

231  {
232  std::stringstream s;
233  s << __LINE__ << "]\t[PixelGlobalDelay25::writeXML()]\t\t\t ";
234  std::string mthn = s.str();
235 
236  *outstream << " <DATA>" << std::endl;
237  *outstream << " <GLOBALDELAY25>0x" << hex << delay_ << dec << "</GLOBALDELAY25>" << std::endl;
238  *outstream << " </DATA>" << std::endl;
239  *outstream << " " << std::endl;
240 }
void PixelGlobalDelay25::writeXMLHeader ( pos::PixelConfigKey  key,
int  version,
std::string  path,
std::ofstream *  out,
std::ofstream *  out1 = nullptr,
std::ofstream *  out2 = nullptr 
) const
overridevirtual

Reimplemented from pos::PixelConfigBase.

Definition at line 182 of file PixelGlobalDelay25.cc.

References gather_cfg::cout, contentValuesFiles::fullPath, pos::PixelConfigBase::getAuthor(), pos::PixelConfigBase::getComment(), pos::PixelTimeFormatter::getmSecTime(), pos::PixelTimeFormatter::getTime(), alignCSCRings::s, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by setDelay().

187  {
188  std::stringstream s;
189  s << __LINE__ << "]\t[[PixelGlobalDelay25::writeXMLHeader()]\t\t\t ";
190  std::string mthn = s.str();
191  std::stringstream fullPath;
192  fullPath << path << "/Pixel_GlobalDelay25_" << PixelTimeFormatter::getmSecTime() << ".xml";
193  cout << mthn << "Writing to: " << fullPath.str() << endl;
194 
195  outstream->open(fullPath.str().c_str());
196 
197  *outstream << "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" << std::endl;
198  *outstream << "<ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" << std::endl;
199  *outstream << "" << std::endl;
200  *outstream << " <!-- " << mthn << "-->" << std::endl;
201  *outstream << "" << std::endl;
202  *outstream << " <HEADER>" << std::endl;
203  *outstream << " <TYPE>" << std::endl;
204  *outstream << " <EXTENSION_TABLE_NAME>PIXEL_GLOBAL_DELAY25</EXTENSION_TABLE_NAME>" << std::endl;
205  *outstream << " <NAME>Pixel Global Delay25</NAME>" << std::endl;
206  *outstream << " </TYPE>" << std::endl;
207  *outstream << " <RUN>" << std::endl;
208  *outstream << " <RUN_TYPE>Pixel Global Delay25</RUN_TYPE>" << std::endl;
209  *outstream << " <RUN_NUMBER>1</RUN_NUMBER>" << std::endl;
210  *outstream << " <RUN_BEGIN_TIMESTAMP>" << pos::PixelTimeFormatter::getTime() << "</RUN_BEGIN_TIMESTAMP>"
211  << std::endl;
212  *outstream << " <LOCATION>CERN P5</LOCATION>" << std::endl;
213  *outstream << " </RUN>" << std::endl;
214  *outstream << " </HEADER>" << std::endl;
215  *outstream << "" << std::endl;
216  *outstream << " <DATA_SET>" << std::endl;
217  *outstream << " " << std::endl;
218  *outstream << " <VERSION>" << version << "</VERSION>" << std::endl;
219  *outstream << " <COMMENT_DESCRIPTION>" << getComment() << "</COMMENT_DESCRIPTION>" << std::endl;
220  *outstream << " <CREATED_BY_USER>" << getAuthor() << "</CREATED_BY_USER>" << std::endl;
221  *outstream << " " << std::endl;
222  *outstream << " <PART>" << std::endl;
223  *outstream << " <NAME_LABEL>CMS-PIXEL-ROOT</NAME_LABEL>" << std::endl;
224  *outstream << " <KIND_OF_PART>Detector ROOT</KIND_OF_PART>" << std::endl;
225  *outstream << " </PART>" << std::endl;
226 }
static std::string getmSecTime(void)
static std::string getTime(void)
std::string getComment() const
std::string getAuthor() const
void PixelGlobalDelay25::writeXMLTrailer ( std::ofstream *  out,
std::ofstream *  out1 = nullptr,
std::ofstream *  out2 = nullptr 
) const
overridevirtual

Reimplemented from pos::PixelConfigBase.

Definition at line 243 of file PixelGlobalDelay25.cc.

References alignCSCRings::s, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by setDelay().

245  {
246  std::stringstream s;
247  s << __LINE__ << "]\t[PixelGlobalDelay25::writeASCII()]\t\t\t ";
248  std::string mthn = s.str();
249 
250  *outstream << " " << std::endl;
251  *outstream << " </DATA_SET>" << std::endl;
252  *outstream << "</ROOT> " << std::endl;
253 
254  outstream->close();
255 }

Member Data Documentation

unsigned int pos::PixelGlobalDelay25::delay_
private