CMS 3D CMS Logo

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

#include <SiPixelDetectorStatus.h>

Public Member Functions

void addModule (int detid, int nrocs)
 
void addModule (int detid, SiPixelModuleStatus a)
 
std::map< int, SiPixelModuleStatus >::iterator begin ()
 
SiPixelDetectorStatus combineDetectorStatus (SiPixelDetectorStatus newData)
 
unsigned long int digiOccDET ()
 
void digiOccupancy ()
 
void dumpToFile (std::string filename)
 
std::map< int, SiPixelModuleStatus >::iterator end ()
 
void fillDIGI (int detid, int roc, int idc)
 
void fillStuckTBM (int detid, PixelFEDChannel ch, std::time_t time)
 
bool findModule (int detid)
 
std::map< int, SiPixelModuleStatusgetDetectorStatus ()
 
std::pair< int, int > getLSRange ()
 
SiPixelModuleStatusgetModule (int detid)
 
unsigned long int getNevents ()
 
std::pair< std::time_t, std::time_t > getRefTime ()
 
std::pair< int, int > getRunRange ()
 
std::map< int, std::vector< int > > getStuckTBMsRocs ()
 
std::map< int, SiPixelModuleStatus >::iterator next ()
 
int nmodules ()
 
double perRocDigiOcc ()
 
double perRocDigiOccVar ()
 
void readFromFile (std::string filename)
 
void resetDetectorStatus ()
 
void setLSRange (int ls0, int ls1)
 
void setNevents (unsigned long int N)
 
void setRefTime (std::time_t refTime0, std::time_t refTime1)
 
void setRunRange (int run0, int run1)
 
 SiPixelDetectorStatus ()
 
void updateDetectorStatus (SiPixelDetectorStatus newData)
 
 ~SiPixelDetectorStatus ()
 

Private Attributes

double fDetAverage
 
unsigned long int fDetHits
 
double fDetSigma
 
int fLS0
 
int fLS1
 
std::map< int, SiPixelModuleStatusfModules
 
unsigned long int fNevents
 
int fRun0
 
int fRun1
 
std::time_t fTime0
 
std::time_t fTime1
 

Detailed Description

Definition at line 11 of file SiPixelDetectorStatus.h.

Constructor & Destructor Documentation

SiPixelDetectorStatus::SiPixelDetectorStatus ( )
SiPixelDetectorStatus::~SiPixelDetectorStatus ( )

Definition at line 28 of file SiPixelDetectorStatus.cc.

28  {
29 
30 }

Member Function Documentation

void SiPixelDetectorStatus::addModule ( int  detid,
int  nrocs 
)

Definition at line 120 of file SiPixelDetectorStatus.cc.

References a, and fModules.

Referenced by combineDetectorStatus(), and readFromFile().

120  {
121  SiPixelModuleStatus a(detid, nrocs);
122  fModules.insert(make_pair(detid, a));
123 }
std::map< int, SiPixelModuleStatus > fModules
double a
Definition: hdecay.h:121
void SiPixelDetectorStatus::addModule ( int  detid,
SiPixelModuleStatus  a 
)

Definition at line 125 of file SiPixelDetectorStatus.cc.

References fModules.

125  {
126  fModules.insert(make_pair(detid, a));
127 }
std::map< int, SiPixelModuleStatus > fModules
map< int, SiPixelModuleStatus >::iterator SiPixelDetectorStatus::begin ( )

Definition at line 172 of file SiPixelDetectorStatus.cc.

References fModules.

Referenced by combineDetectorStatus(), SiPixelStatusManager::createStuckTBMs(), digiOccDET(), digiOccupancy(), dumpToFile(), getStuckTBMsRocs(), and updateDetectorStatus().

172  {
173  return fModules.begin();
174 }
std::map< int, SiPixelModuleStatus > fModules
SiPixelDetectorStatus SiPixelDetectorStatus::combineDetectorStatus ( SiPixelDetectorStatus  newData)

Definition at line 252 of file SiPixelDetectorStatus.cc.

References addModule(), begin(), funct::combine(), end(), findModule(), fModules, getModule(), and SiPixelModuleStatus::updateModuleStatus().

Referenced by resetDetectorStatus().

252  {
253 
255 
256  // loop over current module status
257  std::map<int, SiPixelModuleStatus>::iterator itEnd = end();
258  for (map<int, SiPixelModuleStatus>::iterator it = begin(); it != itEnd; ++it) {
259 
260  int detid = it->first;
261  combine.addModule(detid, fModules[detid]);
262 
263  if(newData.findModule(detid)){ // the detid in current data is also in new data
264  // then update the module status
265  SiPixelModuleStatus* moduleStatus = combine.getModule(detid);
266  moduleStatus->updateModuleStatus(*(newData.getModule(detid)));
267  }
268  }
269 
270  return combine;
271 
272 }
void addModule(int detid, int nrocs)
std::map< int, SiPixelModuleStatus > fModules
std::map< int, SiPixelModuleStatus >::iterator begin()
static type combine(const A &_1, const B &_2)
Definition: Factorize.h:187
std::map< int, SiPixelModuleStatus >::iterator end()
void updateModuleStatus(SiPixelModuleStatus newData)
SiPixelModuleStatus * getModule(int detid)
unsigned long int SiPixelDetectorStatus::digiOccDET ( )
inline

Definition at line 38 of file SiPixelDetectorStatus.h.

References begin(), end(), fDetHits, findModule(), getModule(), next(), and nmodules().

Referenced by updateDetectorStatus().

38 { return fDetHits; }
unsigned long int fDetHits
void SiPixelDetectorStatus::digiOccupancy ( )

Definition at line 210 of file SiPixelDetectorStatus.cc.

References begin(), end(), fDetAverage, and fDetSigma.

Referenced by perRocDigiOcc(), and perRocDigiOccVar().

210  {
211 
212  fDetAverage = fDetSigma = 0;
213  unsigned long int ave(0), sig(0);
214  int nrocs(0);
215  map<int, SiPixelModuleStatus>::iterator itEnd = end();
216  for (map<int, SiPixelModuleStatus>::iterator it = begin(); it != itEnd; ++it) {
217  unsigned long int inc = it->second.digiOccMOD();
218  ave += inc;
219  nrocs += it->second.nrocs();
220  }
221  fDetAverage = (1.0*ave)/nrocs;
222 
223  for (map<int, SiPixelModuleStatus>::iterator it = begin(); it != itEnd; ++it) {
224  unsigned long int inc = it->second.digiOccMOD();
225  sig += (fDetAverage - inc) * (fDetAverage - inc);
226  }
227 
228  fDetSigma = sig/(nrocs - 1);
229  fDetSigma = TMath::Sqrt(fDetSigma);
230 
231 }
std::map< int, SiPixelModuleStatus >::iterator begin()
std::map< int, SiPixelModuleStatus >::iterator end()
void SiPixelDetectorStatus::dumpToFile ( std::string  filename)

Definition at line 98 of file SiPixelDetectorStatus.cc.

References begin(), end(), fDetHits, fLS0, fLS1, fRun0, and fRun1.

Referenced by SiPixelStatusHarvester::endRun().

98  {
99 
100  ofstream OD(filename.c_str());
101  OD << "# SiPixelDetectorStatus START" << endl;
102  OD << "# SiPixelDetectorStatus for LS " << fLS0 << " .. " << fLS1 << endl;
103  OD << "# SiPixelDetectorStatus for run " << fRun0 << " .. " << fRun1 << endl;
104  OD << "# SiPixelDetectorStatus total hits = " << fDetHits << endl;
105  map<int, SiPixelModuleStatus>::iterator itEnd = end();
106  for (map<int, SiPixelModuleStatus>::iterator it = begin(); it != itEnd; ++it) {
107  for (int iroc = 0; iroc < it->second.nrocs(); ++iroc) {
108  for (int idc = 0; idc < 26; ++idc) {
109  OD << Form("%10d %2d %2d %3d", it->first, iroc, idc, int(it->second.getRoc(iroc)->digiOccDC(idc))) << endl;
110  }
111  }
112  }
113  OD << "# SiPixelDetectorStatus END" << endl;
114  OD.close();
115 
116 }
std::map< int, SiPixelModuleStatus >::iterator begin()
unsigned long int fDetHits
std::map< int, SiPixelModuleStatus >::iterator end()
std::map< int, SiPixelModuleStatus >::iterator SiPixelDetectorStatus::end ( )
void SiPixelDetectorStatus::fillDIGI ( int  detid,
int  roc,
int  idc 
)

Definition at line 131 of file SiPixelDetectorStatus.cc.

References fDetHits, and fModules.

131  {
132  ++fDetHits;
133  fModules[detid].fillDIGI(roc, idc);
134 }
std::map< int, SiPixelModuleStatus > fModules
unsigned long int fDetHits
void SiPixelDetectorStatus::fillStuckTBM ( int  detid,
PixelFEDChannel  ch,
std::time_t  time 
)

Definition at line 137 of file SiPixelDetectorStatus.cc.

References fModules.

137  {
138 
139  if (fModules.find(detid) != fModules.end()){
140  fModules[detid].fillStuckTBM(ch,time);
141  }
142 
143 }
std::map< int, SiPixelModuleStatus > fModules
bool SiPixelDetectorStatus::findModule ( int  detid)

Definition at line 200 of file SiPixelDetectorStatus.cc.

References fModules.

Referenced by combineDetectorStatus(), and digiOccDET().

200  {
201 
202  if (fModules.find(detid) == fModules.end())
203  return false;
204  else
205  return true;
206 
207 }
std::map< int, SiPixelModuleStatus > fModules
std::map<int, SiPixelModuleStatus> SiPixelDetectorStatus::getDetectorStatus ( )
inline

Definition at line 74 of file SiPixelDetectorStatus.h.

References fModules.

Referenced by SiPixelStatusHarvester::endRun().

74 { return fModules; }
std::map< int, SiPixelModuleStatus > fModules
std::pair<int,int> SiPixelDetectorStatus::getLSRange ( )
inline

Definition at line 56 of file SiPixelDetectorStatus.h.

References fLS0, and fLS1.

SiPixelModuleStatus * SiPixelDetectorStatus::getModule ( int  detid)

Definition at line 192 of file SiPixelDetectorStatus.cc.

References fModules.

Referenced by combineDetectorStatus(), digiOccDET(), readFromFile(), and updateDetectorStatus().

192  {
193 
194  if (fModules.find(detid) == fModules.end()) {
195  return nullptr;
196  }
197  return &(fModules[detid]);
198 }
std::map< int, SiPixelModuleStatus > fModules
unsigned long int SiPixelDetectorStatus::getNevents ( )
inline

Definition at line 62 of file SiPixelDetectorStatus.h.

References fNevents.

Referenced by updateDetectorStatus().

62 { return fNevents; }
unsigned long int fNevents
std::pair<std::time_t,std::time_t> SiPixelDetectorStatus::getRefTime ( )
inline

Definition at line 58 of file SiPixelDetectorStatus.h.

References fTime0, and fTime1.

58 {return std::make_pair(fTime0,fTime1);}
std::pair<int,int> SiPixelDetectorStatus::getRunRange ( )
inline

Definition at line 54 of file SiPixelDetectorStatus.h.

References fRun0, and fRun1.

std::map< int, std::vector< int > > SiPixelDetectorStatus::getStuckTBMsRocs ( )

Definition at line 146 of file SiPixelDetectorStatus.cc.

References begin(), end(), SiPixelModuleStatus::getRoc(), SiPixelRocStatus::isStuckTBM(), list(), and SiPixelModuleStatus::nrocs().

Referenced by SiPixelStatusManager::createStuckTBMs(), and SiPixelStatusHarvester::endRun().

146  {
147 
148  std::map<int, std::vector<int>> badRocLists_;
149 
150  std::map<int, SiPixelModuleStatus>::iterator itModEnd = end();
151  for (std::map<int, SiPixelModuleStatus>::iterator itMod = begin(); itMod != itModEnd; ++itMod) {
152 
153  int detid = itMod->first;
154  // stuck TBM effected ROCs in a given module
155  std::vector<int> list;
156  SiPixelModuleStatus modStatus = itMod->second;
157  for (int iroc = 0; iroc < modStatus.nrocs(); ++iroc) {
158 
159  SiPixelRocStatus* roc = modStatus.getRoc(iroc);
160  if(roc->isStuckTBM()){
161  list.push_back(iroc);
162  }
163  badRocLists_[detid]=list;
164  }
165 
166  }
167 
168  return badRocLists_;
169 }
std::map< int, SiPixelModuleStatus >::iterator begin()
std::map< int, SiPixelModuleStatus >::iterator end()
SiPixelRocStatus * getRoc(int i)
get a ROC
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
std::map<int, SiPixelModuleStatus>::iterator SiPixelDetectorStatus::next ( )

Referenced by digiOccDET().

int SiPixelDetectorStatus::nmodules ( )

Definition at line 187 of file SiPixelDetectorStatus.cc.

References fModules.

Referenced by digiOccDET().

187  {
188  return static_cast<int>(fModules.size());
189 }
std::map< int, SiPixelModuleStatus > fModules
double SiPixelDetectorStatus::perRocDigiOcc ( )
inline
double SiPixelDetectorStatus::perRocDigiOccVar ( )
inline

Definition at line 37 of file SiPixelDetectorStatus.h.

References digiOccupancy(), and fDetSigma.

void SiPixelDetectorStatus::readFromFile ( std::string  filename)

Definition at line 34 of file SiPixelDetectorStatus.cc.

References addModule(), fDetHits, fLS0, fLS1, fRun0, fRun1, getModule(), hfClusterShapes_cfi::hits, SiPixelModuleStatus::setNrocs(), and SiPixelModuleStatus::updateModuleDIGI().

34  {
35 
36  ifstream INS;
37  string sline;
38  INS.open(filename.c_str());
39 
40  int oldDetId(-1);
41  int detid(0), roc(0), dc(0), hits(0), nroc(0);
42  SiPixelModuleStatus *pMod(nullptr);
43  bool readOK(false);
44  while (getline(INS, sline)) {
45 
46  if (string::npos != sline.find("# SiPixelDetectorStatus START")) {
47  readOK = true;
48  continue;
49  }
50  if (!readOK) continue;
51 
52  if (string::npos != sline.find("# SiPixelDetectorStatus END")) {
53  pMod->setNrocs(nroc+1);
54  break;
55  }
56 
57  if (sline.find("# SiPixelDetectorStatus for LS") != string::npos) {
58  sscanf(sline.c_str(), "# SiPixelDetectorStatus for LS %d .. %d", &fLS0, &fLS1);
59  continue;
60  }
61  if (sline.find("# SiPixelDetectorStatus for run") != string::npos) {
62  sscanf(sline.c_str(), "# SiPixelDetectorStatus for run %d .. %d", &fRun0, &fRun1);
63  continue;
64  }
65  if (sline.find("# SiPixelDetectorStatus total hits = ") != string::npos) {
66  sscanf(sline.c_str(), "# SiPixelDetectorStatus total hits = %ld", &fDetHits);
67  continue;
68  }
69 
70  sscanf(sline.c_str(), "%d %d %d %d", &detid, &roc, &dc, &hits);
71  if (roc > nroc) nroc = roc;
72  if (detid != oldDetId) {
73  if (pMod) {
74  pMod->setNrocs(nroc+1);
75  }
76 
77  oldDetId = detid;
78  if (nullptr == getModule(detid)) {
79  addModule(detid,nroc+1);
80  }
81 
82  pMod = getModule(detid);
83  nroc = 0;
84  }
85  if (pMod) {
86  fDetHits += hits;
87  pMod->updateModuleDIGI(roc, dc, hits);
88  }
89 
90  }
91 
92  INS.close();
93 
94 }
void addModule(int detid, int nrocs)
unsigned long int fDetHits
SiPixelModuleStatus * getModule(int detid)
void SiPixelDetectorStatus::resetDetectorStatus ( )
inline
void SiPixelDetectorStatus::setLSRange ( int  ls0,
int  ls1 
)
inline

Definition at line 55 of file SiPixelDetectorStatus.h.

References fLS0, and fLS1.

void SiPixelDetectorStatus::setNevents ( unsigned long int  N)
inline

Definition at line 61 of file SiPixelDetectorStatus.h.

References fNevents, and N.

61 { fNevents = N; }
unsigned long int fNevents
#define N
Definition: blowfish.cc:9
void SiPixelDetectorStatus::setRefTime ( std::time_t  refTime0,
std::time_t  refTime1 
)
inline

Definition at line 57 of file SiPixelDetectorStatus.h.

References fTime0, and fTime1.

57 {fTime0 = refTime0; fTime1 = refTime1;}
void SiPixelDetectorStatus::setRunRange ( int  run0,
int  run1 
)
inline
void SiPixelDetectorStatus::updateDetectorStatus ( SiPixelDetectorStatus  newData)

Definition at line 234 of file SiPixelDetectorStatus.cc.

References begin(), digiOccDET(), end(), fDetHits, fModules, fNevents, getModule(), and getNevents().

Referenced by SiPixelStatusManager::createBadComponents(), and resetDetectorStatus().

234  {
235 
236  // loop over new data status
237  std::map<int, SiPixelModuleStatus>::iterator itEnd = newData.end();
238  for (map<int, SiPixelModuleStatus>::iterator it = newData.begin(); it != itEnd; ++it) {
239 
240  int detid = it->first;
241  if(fModules.find(detid) != fModules.end()){// if the detid is in the module lists
242  fModules[detid].updateModuleStatus( *(newData.getModule(detid)) );
243  }
244 
245  }
246 
247  fDetHits = fDetHits + newData.digiOccDET();
248  fNevents = fNevents + newData.getNevents();
249 
250 }
unsigned long int digiOccDET()
std::map< int, SiPixelModuleStatus > fModules
std::map< int, SiPixelModuleStatus >::iterator begin()
unsigned long int fDetHits
unsigned long int fNevents
std::map< int, SiPixelModuleStatus >::iterator end()
unsigned long int getNevents()
SiPixelModuleStatus * getModule(int detid)

Member Data Documentation

double SiPixelDetectorStatus::fDetAverage
private
unsigned long int SiPixelDetectorStatus::fDetHits
private
double SiPixelDetectorStatus::fDetSigma
private
int SiPixelDetectorStatus::fLS0
private
int SiPixelDetectorStatus::fLS1
private
std::map<int, SiPixelModuleStatus> SiPixelDetectorStatus::fModules
private
unsigned long int SiPixelDetectorStatus::fNevents
private
int SiPixelDetectorStatus::fRun0
private
int SiPixelDetectorStatus::fRun1
private
std::time_t SiPixelDetectorStatus::fTime0
private
std::time_t SiPixelDetectorStatus::fTime1
private