CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ESFEDIntegrityTask.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <fstream>
3 #include <vector>
4 
10 
14 
24 
25 using namespace cms;
26 using namespace edm;
27 using namespace std;
28 
30 
31  init_ = false;
32 
33  dqmStore_ = Service<DQMStore>().operator->();
34 
35  prefixME_ = ps.getUntrackedParameter<string>("prefixME", "");
36  fedDirName_ = ps.getUntrackedParameter<string>("FEDDirName", "FEDIntegrity");
37  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
38  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
39  debug_ = ps.getUntrackedParameter<bool>("debug", false);
40 
41  dccCollections_ = ps.getParameter<InputTag>("ESDCCCollections");
42  kchipCollections_ = ps.getParameter<InputTag>("ESKChipCollections");
43  FEDRawDataCollection_ = ps.getParameter<edm::InputTag>("FEDRawDataCollection");
44 
45  meESFedsEntries_ = 0;
46  meESFedsFatal_ = 0;
47  meESFedsNonFatal_ = 0;
48 
49 }
50 
52 
53 }
54 
56 
57  ievt_ = 0;
58 
59  if ( dqmStore_ ) {
60  dqmStore_->setCurrentFolder(prefixME_ + "/" + fedDirName_);
61  dqmStore_->rmdir(prefixME_ + "/" + fedDirName_);
62  }
63 
64 }
65 
67 
68  if ( ! mergeRuns_ ) this->reset();
69 
70 }
71 
73 
74 }
75 
77 
78  if ( meESFedsEntries_ ) meESFedsEntries_->Reset();
79  if ( meESFedsFatal_ ) meESFedsFatal_->Reset();
80  if ( meESFedsNonFatal_ ) meESFedsNonFatal_->Reset();
81 
82 }
83 
85 
86  init_ = true;
87 
88  char histo[200];
89 
90  if ( dqmStore_ ) {
91  dqmStore_->setCurrentFolder(prefixME_ + "/" + fedDirName_);
92 
93  sprintf(histo, "FEDEntries");
94  meESFedsEntries_ = dqmStore_->book1D(histo, histo, 56, 520, 576);
95 
96  sprintf(histo, "FEDFatal");
97  meESFedsFatal_ = dqmStore_->book1D(histo, histo, 56, 520, 576);
98 
99  sprintf(histo, "FEDNonFatal");
100  meESFedsNonFatal_ = dqmStore_->book1D(histo, histo, 56, 520, 576);
101  }
102 
103 }
104 
106 
107  if ( ! init_ ) return;
108 
109  if ( dqmStore_ ) {
110  dqmStore_->setCurrentFolder(prefixME_ + "/" + fedDirName_);
111 
112  if ( meESFedsEntries_ ) dqmStore_->removeElement( meESFedsEntries_->getName() );
113  meESFedsEntries_ = 0;
114 
115  if ( meESFedsFatal_ ) dqmStore_->removeElement( meESFedsFatal_->getName() );
116  meESFedsFatal_ = 0;
117 
118  if ( meESFedsNonFatal_ ) dqmStore_->removeElement( meESFedsNonFatal_->getName() );
119  meESFedsNonFatal_ = 0;
120 
121  }
122 
123  init_ = false;
124 
125 }
126 
128 
129  LogInfo("ESFEDIntegrityTask") << "analyzed " << ievt_ << " events";
130 
131  if ( enableCleanup_ ) this->cleanup();
132 
133 }
134 
136 
137  if ( ! init_ ) this->setup();
138 
139  ievt_++;
140 
141  int gt_L1A = 0;
142  // int gt_OrbitNumber = 0, gt_BX = 0;
143  int esDCC_L1A_MostFreqCounts = 0;
144  int esDCC_BX_MostFreqCounts = 0;
145  int esDCC_OrbitNumber_MostFreqCounts = 0;
146  int gtFedDataSize = 0;
147 
149  Handle<FEDRawDataCollection> allFedRawData;
150 
151  if ( e.getByLabel(FEDRawDataCollection_, allFedRawData) ) {
152 
153  // ES FEDs
154  for (int esFED=520; esFED<=575; ++esFED) {
155 
156  const FEDRawData& fedData = allFedRawData->FEDData(esFED);
157  int length = fedData.size()/sizeof(uint64_t);
158 
159  if ( length > 0 )
160  if ( meESFedsEntries_ ) meESFedsEntries_->Fill(esFED);
161  }
162 
163  // GT FED data
164  const FEDRawData& gtFedData = allFedRawData->FEDData(812);
165 
166  gtFedDataSize = gtFedData.size()/sizeof(uint64_t);
167 
168  if ( gtFedDataSize > 0 ) {
169 
170  FEDHeader header(gtFedData.data());
171 
172  gt_L1A = header.lvl1ID();
173  //gt_OrbitNumber = e.orbitNumber();
174  //gt_BX = e.bunchCrossing();
175  } else {
176 
177  map<int, int> esDCC_L1A_FreqMap;
178  map<int, int> esDCC_BX_FreqMap;
179  map<int, int> esDCC_OrbitNumber_FreqMap;
180 
181  if ( e.getByLabel(dccCollections_, dccs) ) {
182 
183  for (ESRawDataCollection::const_iterator dccItr = dccs->begin(); dccItr != dccs->end(); ++dccItr) {
184  ESDCCHeaderBlock esdcc = (*dccItr);
185 
186  esDCC_L1A_FreqMap[esdcc.getLV1()]++;
187  esDCC_BX_FreqMap[esdcc.getBX()]++;
188  esDCC_OrbitNumber_FreqMap[esdcc.getOrbitNumber()]++;
189 
190  if (esDCC_L1A_FreqMap[esdcc.getLV1()] > esDCC_L1A_MostFreqCounts) {
191  esDCC_L1A_MostFreqCounts = esDCC_L1A_FreqMap[esdcc.getLV1()];
192  gt_L1A = esdcc.getLV1();
193  }
194 
195  if (esDCC_BX_FreqMap[esdcc.getBX()] > esDCC_BX_MostFreqCounts) {
196  esDCC_BX_MostFreqCounts = esDCC_BX_FreqMap[esdcc.getBX()];
197  //gt_BX = esdcc.getBX();
198  }
199 
200  if (esDCC_OrbitNumber_FreqMap[esdcc.getOrbitNumber()] > esDCC_OrbitNumber_MostFreqCounts) {
201  esDCC_OrbitNumber_MostFreqCounts = esDCC_OrbitNumber_FreqMap[esdcc.getOrbitNumber()];
202  //gt_OrbitNumber = esdcc.getOrbitNumber();
203  }
204 
205  }
206  } else {
207  LogWarning("ESFEDIntegrityTask") << dccCollections_ << " not available";
208  }
209 
210  }
211 
212  } else {
213  LogWarning("ESFEDIntegrityTask") << FEDRawDataCollection_ << " not available";
214  }
215 
216  vector<int> fiberStatus;
217  if ( e.getByLabel(dccCollections_, dccs) ) {
218  for (ESRawDataCollection::const_iterator dccItr = dccs->begin(); dccItr != dccs->end(); ++dccItr) {
219  ESDCCHeaderBlock dcc = (*dccItr);
220 
221  if (dcc.getDCCErrors() > 0) {
222 
223  if ( meESFedsFatal_ ) meESFedsFatal_->Fill(dcc.fedId());
224 
225  } else {
226  if (debug_) cout<<dcc.fedId()<<" "<<dcc.getOptoRX0()<<" "<<dcc.getOptoRX1()<<" "<<dcc.getOptoRX2()<<endl;
227  fiberStatus = dcc.getFEChannelStatus();
228 
229  if (dcc.getOptoRX0() == 128) {
230  meESFedsNonFatal_->Fill(dcc.fedId(), 1./3.);
231  } else if (dcc.getOptoRX0() == 129) {
232  for (unsigned int i=0; i<12; ++i) {
233  if (fiberStatus[i]==8 || fiberStatus[i]==10 || fiberStatus[i]==11 || fiberStatus[i]==12)
234  if ( meESFedsNonFatal_ ) meESFedsNonFatal_->Fill(dcc.fedId(), 1./12.);
235  }
236  }
237  if (dcc.getOptoRX1() == 128) {
238  meESFedsNonFatal_->Fill(dcc.fedId(), 1./3.);
239  } else if (dcc.getOptoRX1() == 129) {
240  for (unsigned int i=12; i<24; ++i) {
241  if (fiberStatus[i]==8 || fiberStatus[i]==10 || fiberStatus[i]==11 || fiberStatus[i]==12)
242  if ( meESFedsNonFatal_ ) meESFedsNonFatal_->Fill(dcc.fedId(), 1./12.);
243  }
244  }
245  if (dcc.getOptoRX2() == 128) {
246  meESFedsNonFatal_->Fill(dcc.fedId(), 1./3.);
247  } else if (dcc.getOptoRX2() == 129){
248  for (unsigned int i=24; i<36; ++i) {
249  if (fiberStatus[i]==8 || fiberStatus[i]==10 || fiberStatus[i]==11 || fiberStatus[i]==12)
250  if ( meESFedsNonFatal_ ) meESFedsNonFatal_->Fill(dcc.fedId(), 1./12.);
251  }
252  }
253  }
254 
255  if (dcc.getLV1() != gt_L1A) meESFedsNonFatal_->Fill(dcc.fedId());
256  //if (dcc.getBX() != gt_BX) meESFedsNonFatal_->Fill(dcc.fedId());
257  //if (dcc.getOrbitNumber() != gt_OrbitNumber) meESFedsNonFatal_->Fill(dcc.fedId());
258  }
259  }
260 
261  //for (ESLocalRawDataCollection::const_iterator kItr = kchips->begin(); kItr != kchips->end(); ++kItr) {
262 
263  //ESKCHIPBlock kchip = (*kItr);
264 
265  //Int_t nErr = 0;
266  //if (kchip.getFlag1() > 0) nErr++;
267  //if (kchip.getFlag2() > 0) nErr++;
268  //if (kchip.getBC() != kchip.getOptoBC()) nErr++;
269  //if (kchip.getEC() != kchip.getOptoEC()) nErr++;
270  //if (nErr>0) meESFedsNonFatal_->Fill(dcc.fedId());
271  //}
272 
273 }
274 
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
int getLV1() const
void beginRun(const edm::Run &r, const edm::EventSetup &c)
BeginRun.
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< T >::const_iterator const_iterator
static void cleanup(const Factory::MakerMap::value_type &v)
Definition: Factory.cc:12
int getOptoRX0() const
int getOptoRX1() const
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:49
const std::vector< int > & getFEChannelStatus() const
void endJob(void)
EndJob.
void setup(void)
Setup.
int getBX() const
void beginJob(void)
BeginJob.
void cleanup(void)
Cleanup.
void reset(void)
Reset.
ESFEDIntegrityTask(const edm::ParameterSet &ps)
int getOrbitNumber() const
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
unsigned long long uint64_t
Definition: Time.h:15
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
void endRun(const edm::Run &r, const edm::EventSetup &c)
EndRun.
int getDCCErrors() const
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:29
tuple cout
Definition: gather_cfg.py:121
const int fedId() const
int lvl1ID()
Level-1 event number generated by the TTC system.
Definition: FEDHeader.cc:22
int getOptoRX2() const
void reset(double vett[256])
Definition: TPedValues.cc:11
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
Definition: Run.h:36