CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ExceptionGenerator.cc
Go to the documentation of this file.
1 #include "ExceptionGenerator.h"
2 
3 #include <iostream>
4 #include <typeinfo>
5 #include <map>
6 #include <sstream>
7 
8 #include "TRandom3.h"
9 
10 
13 
14 #include "boost/tokenizer.hpp"
15 
16 #include <stdio.h>
17 #include <sys/types.h>
18 #include <signal.h>
19 
20 using namespace std;
21 
22 namespace evf{
23 
24 
26  actionId_(pset.getUntrackedParameter<int>("defaultAction",-1)),
27  intqualifier_(pset.getUntrackedParameter<int>("defaultQualifier",0)),
28  actionRequired_(actionId_!=-1)
29  {
30 
31  }
33  {
34  // timing destribution from (https://twiki.cern.ch/twiki/bin/viewauth/CMS/HLTCpuTimingFAQ#2011_Most_Recent_Data)
35  // /castor/cern.ch/user/d/dsperka/HLT/triggerSkim_HLTPhysics_run178479_68_188.root
36  // Baseline result with CMSSW_4_2_9_HLT3_hltpatch3 and /online/collisions/2011/5e33/v2.1/HLT/V9 :
37  // vocms110:/store/timing_178479/outfile-178479-col1.root
38 
39  timingHisto_ = new TH1D("timingHisto_","Total time for all modules per event",100,0,1000);
40  timingHisto_->SetBinContent(1,5016);
41  timingHisto_->SetBinContent(2,4563);
42  timingHisto_->SetBinContent(3,3298);
43  timingHisto_->SetBinContent(4,1995);
44  timingHisto_->SetBinContent(5,1708);
45  timingHisto_->SetBinContent(6,1167);
46  timingHisto_->SetBinContent(7,928);
47  timingHisto_->SetBinContent(8,785);
48  timingHisto_->SetBinContent(9,643);
49  timingHisto_->SetBinContent(10,486);
50  timingHisto_->SetBinContent(11,427);
51  timingHisto_->SetBinContent(12,335);
52  timingHisto_->SetBinContent(13,332);
53  timingHisto_->SetBinContent(14,327);
54  timingHisto_->SetBinContent(15,258);
55  timingHisto_->SetBinContent(16,257);
56  timingHisto_->SetBinContent(17,222);
57  timingHisto_->SetBinContent(18,253);
58  timingHisto_->SetBinContent(19,223);
59  timingHisto_->SetBinContent(20,177);
60  timingHisto_->SetBinContent(21,148);
61  timingHisto_->SetBinContent(22,148);
62  timingHisto_->SetBinContent(23,113);
63  timingHisto_->SetBinContent(24,83);
64  timingHisto_->SetBinContent(25,84);
65  timingHisto_->SetBinContent(26,75);
66  timingHisto_->SetBinContent(27,61);
67  timingHisto_->SetBinContent(28,66);
68  timingHisto_->SetBinContent(29,51);
69  timingHisto_->SetBinContent(30,43);
70  timingHisto_->SetBinContent(31,38);
71  timingHisto_->SetBinContent(32,27);
72  timingHisto_->SetBinContent(33,34);
73  timingHisto_->SetBinContent(34,28);
74  timingHisto_->SetBinContent(35,18);
75  timingHisto_->SetBinContent(36,26);
76  timingHisto_->SetBinContent(37,18);
77  timingHisto_->SetBinContent(38,11);
78  timingHisto_->SetBinContent(39,11);
79  timingHisto_->SetBinContent(40,12);
80  timingHisto_->SetBinContent(41,14);
81  timingHisto_->SetBinContent(42,11);
82  timingHisto_->SetBinContent(43,8);
83  timingHisto_->SetBinContent(44,4);
84  timingHisto_->SetBinContent(45,2);
85  timingHisto_->SetBinContent(46,5);
86  timingHisto_->SetBinContent(47,3);
87  timingHisto_->SetBinContent(48,4);
88  timingHisto_->SetBinContent(49,6);
89  timingHisto_->SetBinContent(50,6);
90  timingHisto_->SetBinContent(51,3);
91  timingHisto_->SetBinContent(52,5);
92  timingHisto_->SetBinContent(53,6);
93  timingHisto_->SetBinContent(54,6);
94  timingHisto_->SetBinContent(55,6);
95  timingHisto_->SetBinContent(56,4);
96  timingHisto_->SetBinContent(57,5);
97  timingHisto_->SetBinContent(58,9);
98  timingHisto_->SetBinContent(59,3);
99  timingHisto_->SetBinContent(60,3);
100  timingHisto_->SetBinContent(61,8);
101  timingHisto_->SetBinContent(62,7);
102  timingHisto_->SetBinContent(63,5);
103  timingHisto_->SetBinContent(64,7);
104  timingHisto_->SetBinContent(65,5);
105  timingHisto_->SetBinContent(66,5);
106  timingHisto_->SetBinContent(67,4);
107  timingHisto_->SetBinContent(68,2);
108  timingHisto_->SetBinContent(69,2);
109  timingHisto_->SetBinContent(70,4);
110  timingHisto_->SetBinContent(71,5);
111  timingHisto_->SetBinContent(72,4);
112  timingHisto_->SetBinContent(73,5);
113  timingHisto_->SetBinContent(74,3);
114  timingHisto_->SetBinContent(75,5);
115  timingHisto_->SetBinContent(76,3);
116  timingHisto_->SetBinContent(77,9);
117  timingHisto_->SetBinContent(78,2);
118  timingHisto_->SetBinContent(79,2);
119  timingHisto_->SetBinContent(80,5);
120  timingHisto_->SetBinContent(81,5);
121  timingHisto_->SetBinContent(82,5);
122  timingHisto_->SetBinContent(83,5);
123  timingHisto_->SetBinContent(84,4);
124  timingHisto_->SetBinContent(85,4);
125  timingHisto_->SetBinContent(86,9);
126  timingHisto_->SetBinContent(87,5);
127  timingHisto_->SetBinContent(88,4);
128  timingHisto_->SetBinContent(89,4);
129  timingHisto_->SetBinContent(90,5);
130  timingHisto_->SetBinContent(91,3);
131  timingHisto_->SetBinContent(92,3);
132  timingHisto_->SetBinContent(93,3);
133  timingHisto_->SetBinContent(94,7);
134  timingHisto_->SetBinContent(95,5);
135  timingHisto_->SetBinContent(96,6);
136  timingHisto_->SetBinContent(97,2);
137  timingHisto_->SetBinContent(98,3);
138  timingHisto_->SetBinContent(99,5);
139  timingHisto_->SetBinContent(101,147);
140  timingHisto_->SetEntries(24934);
141  }
143  {
144  gettimeofday(&tv_start_,0);
145  }
146 
148  {
149  float dummy = 0.;
150  unsigned int iterations = 0;
151  if(actionRequired_)
152  {
153  int *pi = 0;
154  int ind = 0;
155  int step = 1;
156  switch(actionId_)
157  {
158  case 0:
159  ::usleep(intqualifier_*1000);
160  break;
161  case 1:
162  ::sleep(0xFFFFFFF);
163  break;
164  case 2:
165  throw cms::Exception(qualifier_) << "This exception was generated by the ExceptionGenerator";
166  break;
167  case 3:
168  exit(-1);
169  break;
170  case 4:
171  abort();
172  break;
173  case 5:
174  throw qualifier_;
175  break;
176  case 6:
177  while(1){ind+=step; if(ind>1000000) step = -1; if(ind==0) step = 1;}
178  break;
179  case 7:
180  edm::LogError("TestErrorMessage") << qualifier_;
181  break;
182  case 8:
183  *pi=0;
184  break;
185  case 9:
186  for(unsigned int j=0; j<intqualifier_*1000;j++){
187  dummy += sqrt(log(float(j+1)))/float(j*j);
188  }
189  break;
190  case 10:
191  iterations = static_cast<unsigned int>(
192  timingHisto_->GetRandom() * intqualifier_*17. + 0.5
193  );
194  for(unsigned int j=0; j<iterations;j++){
195  dummy += sqrt(log(float(j+1)))/float(j*j);
196  }
197  break;
198  case 11:
199  {
200  iterations = static_cast<unsigned int>(
201  timingHisto_->GetRandom() * intqualifier_*12. + 0.5
202  );
203  TRandom3 random(iterations);
204  const size_t dataSize = 32*500; // 124kB
205  std::vector<double> data(dataSize);
206  random.RndmArray(dataSize, &data[0]);
207 
208  for(unsigned int j=0; j<iterations;j++){
209  const size_t index = static_cast<size_t>(random.Rndm() * dataSize + 0.5);
210  const double value = data[index];
211  dummy += sqrt(log(value+1))/(value*value);
212  if ( random.Rndm() < 0.1 )
213  data[index] = dummy;
214  }
215  }
216  break;
217  case 12:
218  {
219  timeval tv_now;
220  gettimeofday(&tv_now,0);
221  if ((unsigned)(tv_now.tv_sec-tv_start_.tv_sec)>intqualifier_)
222  *pi=0;
223  }
224  break;
225  case 13:
226  void *vp = malloc(1024);
227  memset((char *)vp - 32, 0, 1024);
228  free(vp);
229  break;
230  }
231  }
232  }
233 
235  {
236 
237  }
238 
239 
240 } // end namespace evf
static std::vector< std::string > checklist log
TRandom random
Definition: MVATrainer.cc:138
const Double_t pi
void analyze(const edm::Event &e, const edm::EventSetup &c)
T sqrt(T t)
Definition: SSEVec.h:48
int j
Definition: DBlmapReader.cc:9
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void beginRun(edm::Run &r, const edm::EventSetup &iSetup)
Definition: Run.h:41