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