CMS 3D CMS Logo

CreateSurveyRcds.cc
Go to the documentation of this file.
7 
11 
16 #include "CLHEP/Random/RandGauss.h"
17 
19  : tTopoToken_(esConsumes()),
20  geomDetToken_(esConsumes()),
21  ptpToken_(esConsumes()),
22  aliToken_(esConsumes()),
23  aliErrToken_(esConsumes()) {
24  m_inputGeom = cfg.getUntrackedParameter<std::string>("inputGeom");
25  m_inputSimpleMis = cfg.getUntrackedParameter<double>("simpleMis");
26  m_generatedRandom = cfg.getUntrackedParameter<bool>("generatedRandom");
27  m_generatedSimple = cfg.getUntrackedParameter<bool>("generatedSimple");
28 }
29 
31  //Retrieve tracker topology from geometry
32  const TrackerTopology* const tTopo = &setup.getData(tTopoToken_);
33  const GeometricDet* geom = &setup.getData(geomDetToken_);
34  const PTrackerParameters& ptp = setup.getData(ptpToken_);
36 
37  //take geometry from DB or randomly generate geometry
38  if (m_inputGeom == "sqlite") {
39  //build the tracker
40  const Alignments* alignments = &setup.getData(aliToken_);
41  const AlignmentErrorsExtended* alignmentErrors = &setup.getData(aliErrToken_);
42 
43  //apply the latest alignments
44  GeometryAligner aligner;
45  aligner.applyAlignments<TrackerGeometry>(&(*tracker), alignments, alignmentErrors, AlignTransform());
46  }
47 
49 
50  Alignable* ali = detector();
51  if (m_inputGeom == "generated") {
52  setGeometry(ali);
53  }
54 
55  setSurveyErrors(ali);
56 }
57 
59  const align::Alignables& comp = ali->components();
60  unsigned int nComp = comp.size();
61  //move then do for lower level object
62  //for issue of det vs detunit
63  bool usecomps = true;
64  if ((ali->alignableObjectId() == 2) && (nComp >= 1))
65  usecomps = false;
66  for (unsigned int i = 0; i < nComp; ++i) {
67  if (usecomps)
68  setGeometry(comp[i]);
69  }
70  DetId id(ali->id());
71  int subdetlevel = id.subdetId();
72  int level = ali->alignableObjectId();
73 
74  //for random misalignment
75  if (m_generatedRandom) {
76  if (subdetlevel > 0) {
78 
79  double value0 = CLHEP::RandGauss::shoot(0, value[0]);
80  double value1 = CLHEP::RandGauss::shoot(0, value[1]);
81  double value2 = CLHEP::RandGauss::shoot(0, value[2]);
82  double value3 = CLHEP::RandGauss::shoot(0, value[3]);
83  double value4 = CLHEP::RandGauss::shoot(0, value[4]);
84  double value5 = CLHEP::RandGauss::shoot(0, value[5]);
85 
86  //move/rotate the surface
88  align::Scalar diffWx = value3;
89  align::Scalar diffWy = value4;
90  align::Scalar diffWz = value5;
91  ali->move(ali->surface().toGlobal(diffR));
92  ali->rotateAroundLocalX(diffWx);
93  ali->rotateAroundLocalY(diffWy);
94  ali->rotateAroundLocalZ(diffWz);
95  }
96  }
97 
98  // for simple misalignments
99  if (m_generatedSimple) {
100  if ((level == 2) || ((level == 1) && (ali->mother()->alignableObjectId() != 2))) {
101  const double constMis = m_inputSimpleMis;
102  const double dAngle = constMis / ali->surface().length();
103  //std::cout << "Shift: " << constMis << ", Rot: " << dAngle << std::endl;
104  double value0 = CLHEP::RandGauss::shoot(0, constMis);
105  double value1 = CLHEP::RandGauss::shoot(0, constMis);
106  double value2 = CLHEP::RandGauss::shoot(0, constMis);
107  double value3 = CLHEP::RandGauss::shoot(0, dAngle);
108  double value4 = CLHEP::RandGauss::shoot(0, dAngle);
109  double value5 = CLHEP::RandGauss::shoot(0, dAngle);
110 
112  ali->move(ali->surface().toGlobal(diffR));
113  align::Scalar diffWx = value3;
114  align::Scalar diffWy = value4;
115  align::Scalar diffWz = value5;
116  ali->rotateAroundLocalX(diffWx);
117  ali->rotateAroundLocalY(diffWy);
118  ali->rotateAroundLocalZ(diffWz);
119  }
120  }
121 }
122 
124  const align::Alignables& comp = ali->components();
125  unsigned int nComp = comp.size();
126  //move then do for lower level object
127  //for issue of det vs detunit
128  for (unsigned int i = 0; i < nComp; ++i) {
130  }
131 
132  DetId id(ali->id());
133  int subdetlevel = id.subdetId();
134  int level = ali->alignableObjectId();
135 
137 
138  double error0 = error[0];
139  double error1 = error[1];
140  double error2 = error[2];
141  double error3 = error[3];
142  double error4 = error[4];
143  double error5 = error[5];
144 
145  // ----------------INFLATING ERRORS----------------------
146  // inflating sensitive coordinates in each subdetector
147  // tib
148  if ((level <= 2) && (subdetlevel == 3)) {
149  error0 = 0.01;
150  error5 = 0.001;
151  if ((level == 2) && (nComp == 2)) {
152  error1 = 0.01;
153  }
154  }
155  // tid
156  if ((level <= 2) && (subdetlevel == 4)) {
157  error0 = 0.01;
158  error1 = 0.01;
159  error2 = 0.01;
160  error3 = 0.001;
161  error4 = 0.001;
162  error5 = 0.001;
163  //error0=0.01; error1=0.002; error2=0.002; error3=0.0002; error4=0.0002; error5=0.001;
164  //if ((level == 2)&&(nComp == 2)){
165  // error1 = 0.01;
166  //}
167  }
168  if ((level == 23) && (subdetlevel == 4)) { //Ring is a Disk
169  error0 = 0.02;
170  error1 = 0.02;
171  error2 = 0.03;
172  error3 = 0.0002;
173  error4 = 0.0002;
174  error5 = 0.0002;
175  }
176  if ((level == 22) && (subdetlevel == 4)) { //Side of a Ring
177  error0 = 0.01;
178  error1 = 0.01;
179  error2 = 0.01;
180  error3 = 0.0002;
181  error4 = 0.0002;
182  error5 = 0.0002;
183  }
184  // tob
185  if ((level <= 2) && (subdetlevel == 5)) {
186  //error0 = 0.015; error1 = 0.015; error2 = 0.05; error3 = 0.001; error4 = 0.001; error5 = 0.001;
187  error0 = 0.015;
188  error1 = 0.003;
189  error2 = 0.003;
190  error3 = 0.0002;
191  error4 = 0.0002;
192  error5 = 0.001;
193  if ((level == 2) && (nComp == 2)) {
194  error1 = 0.015;
195  }
196  }
197  if ((level == 27) && (subdetlevel == 5)) { //Rod in a Layer
198  error0 = 0.02;
199  error1 = 0.02;
200  error2 = 0.03;
201  error3 = 0.001;
202  error4 = 0.001;
203  error5 = 0.001;
204  }
205  // tec
206  if ((level <= 2) && (subdetlevel == 6)) {
207  error0 = 0.02;
208  error5 = 0.0005;
209  if ((level == 2) && (nComp == 2)) {
210  error1 = 0.02;
211  }
212  }
213  if ((level == 34) && (subdetlevel == 6)) { //Side on a Disk
214  error0 = 0.01;
215  error1 = 0.01;
216  error2 = 0.02;
217  error3 = 0.00005;
218  error4 = 0.00005;
219  error5 = 0.00005;
220  }
221  if ((level == 33) && (subdetlevel == 6)) { //Petal on a Side of a Disk
222  error0 = 0.01;
223  error1 = 0.01;
224  error2 = 0.02;
225  error3 = 0.0001;
226  error4 = 0.0001;
227  error5 = 0.0001;
228  }
229  if ((level == 32) && (subdetlevel == 6)) { //Ring on a Petal
230  error0 = 0.007;
231  error1 = 0.007;
232  error2 = 0.015;
233  error3 = 0.00015;
234  error4 = 0.00015;
235  error5 = 0.00015;
236  }
237  // ----------------INFLATING ERRORS----------------------
238 
239  //create the error matrix
240  align::ErrorMatrix error_Matrix;
241  double* errorData = error_Matrix.Array();
242  errorData[0] = error0 * error0;
243  errorData[2] = error1 * error1;
244  errorData[5] = error2 * error2;
245  errorData[9] = error3 * error3;
246  errorData[14] = error4 * error4;
247  errorData[20] = error5 * error5;
248  errorData[1] = 0.0;
249  errorData[3] = 0.0;
250  errorData[4] = 0.0;
251  errorData[6] = 0.0;
252  errorData[7] = 0.0;
253  errorData[8] = 0.0;
254  errorData[10] = 0.0;
255  errorData[11] = 0.0;
256  errorData[12] = 0.0;
257  errorData[13] = 0.0;
258  errorData[15] = 0.0;
259  errorData[16] = 0.0;
260  errorData[17] = 0.0;
261  errorData[18] = 0.0;
262  errorData[19] = 0.0;
263 
264  ali->setSurvey(new SurveyDet(ali->surface(), error_Matrix));
265 }
266 
267 //-------------------------------------------------------
268 // DEFAULT VALUES FOR THE ASSEMBLY PRECISION
269 //-------------------------------------------------------
271  AlgebraicVector deltaRW(6);
272  deltaRW(1) = 0.0;
273  deltaRW(2) = 0.0;
274  deltaRW(3) = 0.0;
275  deltaRW(4) = 0.0;
276  deltaRW(5) = 0.0;
277  deltaRW(6) = 0.0;
278  //PIXEL
279  if ((level == 37) && (subdetlevel == 1)) {
280  deltaRW(1) = 0.3;
281  deltaRW(2) = 0.3;
282  deltaRW(3) = 0.3;
283  deltaRW(4) = 0.0017;
284  deltaRW(5) = 0.0017;
285  deltaRW(6) = 0.0017;
286  }
287  //STRIP
288  if ((level == 38) && (subdetlevel == 3)) {
289  deltaRW(1) = 0.3;
290  deltaRW(2) = 0.3;
291  deltaRW(3) = 0.3;
292  deltaRW(4) = 0.0004;
293  deltaRW(5) = 0.0004;
294  deltaRW(6) = 0.0004;
295  }
296  //TRACKER
297  if ((level == 39) && (subdetlevel == 1)) {
298  deltaRW(1) = 0.0;
299  deltaRW(2) = 0.0;
300  deltaRW(3) = 0.0;
301  deltaRW(4) = 0.0;
302  deltaRW(5) = 0.0;
303  deltaRW(6) = 0.0;
304  }
305  //TPB
306  if ((level == 7) && (subdetlevel == 1)) {
307  deltaRW(1) = 0.2;
308  deltaRW(2) = 0.2;
309  deltaRW(3) = 0.2;
310  deltaRW(4) = 0.003;
311  deltaRW(5) = 0.003;
312  deltaRW(6) = 0.003;
313  }
314  if ((level == 6) && (subdetlevel == 1)) {
315  deltaRW(1) = 0.05;
316  deltaRW(2) = 0.05;
317  deltaRW(3) = 0.05;
318  deltaRW(4) = 0.0008;
319  deltaRW(5) = 0.0008;
320  deltaRW(6) = 0.0008;
321  }
322  if ((level == 5) && (subdetlevel == 1)) {
323  deltaRW(1) = 0.02;
324  deltaRW(2) = 0.02;
325  deltaRW(3) = 0.02;
326  deltaRW(4) = 0.0004;
327  deltaRW(5) = 0.0004;
328  deltaRW(6) = 0.0004;
329  }
330  if ((level == 4) && (subdetlevel == 1)) {
331  deltaRW(1) = 0.01;
332  deltaRW(2) = 0.01;
333  deltaRW(3) = 0.005;
334  deltaRW(4) = 0.0002;
335  deltaRW(5) = 0.0002;
336  deltaRW(6) = 0.0002;
337  }
338  if ((level == 2) && (subdetlevel == 1)) {
339  deltaRW(1) = 0.005;
340  deltaRW(2) = 0.005;
341  deltaRW(3) = 0.003;
342  deltaRW(4) = 0.001;
343  deltaRW(5) = 0.001;
344  deltaRW(6) = 0.001;
345  }
346  if ((level == 1) && (subdetlevel == 1)) {
347  deltaRW(1) = 0.005;
348  deltaRW(2) = 0.005;
349  deltaRW(3) = 0.003;
350  deltaRW(4) = 0.001;
351  deltaRW(5) = 0.001;
352  deltaRW(6) = 0.001;
353  }
354  //TPE
355  if ((level == 13) && (subdetlevel == 2)) {
356  deltaRW(1) = 0.2;
357  deltaRW(2) = 0.2;
358  deltaRW(3) = 0.2;
359  deltaRW(4) = 0.0017;
360  deltaRW(5) = 0.0017;
361  deltaRW(6) = 0.0017;
362  }
363  if ((level == 12) && (subdetlevel == 2)) {
364  deltaRW(1) = 0.05;
365  deltaRW(2) = 0.05;
366  deltaRW(3) = 0.05;
367  deltaRW(4) = 0.0004;
368  deltaRW(5) = 0.0004;
369  deltaRW(6) = 0.0004;
370  }
371  if ((level == 11) && (subdetlevel == 2)) {
372  deltaRW(1) = 0.02;
373  deltaRW(2) = 0.02;
374  deltaRW(3) = 0.02;
375  deltaRW(4) = 0.001;
376  deltaRW(5) = 0.001;
377  deltaRW(6) = 0.001;
378  }
379  if ((level == 10) && (subdetlevel == 2)) {
380  deltaRW(1) = 0.01;
381  deltaRW(2) = 0.01;
382  deltaRW(3) = 0.01;
383  deltaRW(4) = 0.001;
384  deltaRW(5) = 0.001;
385  deltaRW(6) = 0.001;
386  }
387  if ((level == 9) && (subdetlevel == 2)) {
388  deltaRW(1) = 0.01;
389  deltaRW(2) = 0.01;
390  deltaRW(3) = 0.005;
391  deltaRW(4) = 0.002;
392  deltaRW(5) = 0.002;
393  deltaRW(6) = 0.002;
394  }
395  if ((level == 2) && (subdetlevel == 2)) {
396  deltaRW(1) = 0.005;
397  deltaRW(2) = 0.005;
398  deltaRW(3) = 0.003;
399  deltaRW(4) = 0.001;
400  deltaRW(5) = 0.001;
401  deltaRW(6) = 0.001;
402  }
403  if ((level == 1) && (subdetlevel == 2)) {
404  deltaRW(1) = 0.005;
405  deltaRW(2) = 0.005;
406  deltaRW(3) = 0.003;
407  deltaRW(4) = 0.001;
408  deltaRW(5) = 0.001;
409  deltaRW(6) = 0.001;
410  }
411  //TIB
412  if ((level == 20) && (subdetlevel == 3)) {
413  deltaRW(1) = 0.2;
414  deltaRW(2) = 0.2;
415  deltaRW(3) = 0.2;
416  deltaRW(4) = 0.0017;
417  deltaRW(5) = 0.0017;
418  deltaRW(6) = 0.0017;
419  }
420  if ((level == 19) && (subdetlevel == 3)) {
421  deltaRW(1) = 0.1;
422  deltaRW(2) = 0.1;
423  deltaRW(3) = 0.1;
424  deltaRW(4) = 0.0008;
425  deltaRW(5) = 0.0008;
426  deltaRW(6) = 0.0008;
427  }
428  if ((level == 18) && (subdetlevel == 3)) {
429  deltaRW(1) = 0.04;
430  deltaRW(2) = 0.04;
431  deltaRW(3) = 0.02;
432  deltaRW(4) = 0.0006;
433  deltaRW(5) = 0.0006;
434  deltaRW(6) = 0.0006;
435  }
436  if ((level == 17) && (subdetlevel == 3)) {
437  deltaRW(1) = 0.03;
438  deltaRW(2) = 0.03;
439  deltaRW(3) = 0.015;
440  deltaRW(4) = 0.0004;
441  deltaRW(5) = 0.0004;
442  deltaRW(6) = 0.0004;
443  }
444  if ((level == 16) && (subdetlevel == 3)) {
445  deltaRW(1) = 0.01;
446  deltaRW(2) = 0.01;
447  deltaRW(3) = 0.01;
448  deltaRW(4) = 0.0004;
449  deltaRW(5) = 0.0002;
450  deltaRW(6) = 0.0002;
451  }
452  if ((level == 15) && (subdetlevel == 3)) {
453  deltaRW(1) = 0.01;
454  deltaRW(2) = 0.01;
455  deltaRW(3) = 0.01;
456  deltaRW(4) = 0.0004;
457  deltaRW(5) = 0.0002;
458  deltaRW(6) = 0.0002;
459  }
460  if ((level == 2) && (subdetlevel == 3)) {
461  deltaRW(1) = 0.005;
462  deltaRW(2) = 0.005;
463  deltaRW(3) = 0.005;
464  deltaRW(4) = 0.001;
465  deltaRW(5) = 0.0005;
466  deltaRW(6) = 0.0005;
467  }
468  if ((level == 1) && (subdetlevel == 3)) {
469  deltaRW(1) = 0.005;
470  deltaRW(2) = 0.005;
471  deltaRW(3) = 0.005;
472  deltaRW(4) = 0.001;
473  deltaRW(5) = 0.0005;
474  deltaRW(6) = 0.0005;
475  }
476  //TID
477  if ((level == 25) && (subdetlevel == 4)) {
478  deltaRW(1) = 0.2;
479  deltaRW(2) = 0.2;
480  deltaRW(3) = 0.2;
481  deltaRW(4) = 0.0013;
482  deltaRW(5) = 0.0013;
483  deltaRW(6) = 0.0013;
484  }
485  if ((level == 24) && (subdetlevel == 4)) {
486  deltaRW(1) = 0.05;
487  deltaRW(2) = 0.05;
488  deltaRW(3) = 0.05;
489  deltaRW(4) = 0.0004;
490  deltaRW(5) = 0.0004;
491  deltaRW(6) = 0.0004;
492  }
493  if ((level == 23) && (subdetlevel == 4)) {
494  deltaRW(1) = 0.01;
495  deltaRW(2) = 0.01;
496  deltaRW(3) = 0.01;
497  deltaRW(4) = 0.0001;
498  deltaRW(5) = 0.0001;
499  deltaRW(6) = 0.0001;
500  }
501  if ((level == 22) && (subdetlevel == 4)) {
502  deltaRW(1) = 0.005;
503  deltaRW(2) = 0.005;
504  deltaRW(3) = 0.005;
505  deltaRW(4) = 0.0001;
506  deltaRW(5) = 0.0001;
507  deltaRW(6) = 0.0001;
508  }
509  if ((level == 2) && (subdetlevel == 4)) {
510  deltaRW(1) = 0.005;
511  deltaRW(2) = 0.005;
512  deltaRW(3) = 0.005;
513  deltaRW(4) = 0.0005;
514  deltaRW(5) = 0.0005;
515  deltaRW(6) = 0.0005;
516  }
517  if ((level == 1) && (subdetlevel == 4)) {
518  deltaRW(1) = 0.005;
519  deltaRW(2) = 0.005;
520  deltaRW(3) = 0.005;
521  deltaRW(4) = 0.0005;
522  deltaRW(5) = 0.0005;
523  deltaRW(6) = 0.0005;
524  }
525  //TOB
526  if ((level == 30) && (subdetlevel == 5)) {
527  deltaRW(1) = 0.2;
528  deltaRW(2) = 0.2;
529  deltaRW(3) = 0.2;
530  deltaRW(4) = 0.0008;
531  deltaRW(5) = 0.0008;
532  deltaRW(6) = 0.0008;
533  }
534  if ((level == 29) && (subdetlevel == 5)) {
535  deltaRW(1) = 0.014;
536  deltaRW(2) = 0.014;
537  deltaRW(3) = 0.05;
538  deltaRW(4) = 0.0001;
539  deltaRW(5) = 0.0001;
540  deltaRW(6) = 0.0001;
541  }
542  if ((level == 28) && (subdetlevel == 5)) {
543  deltaRW(1) = 0.02;
544  deltaRW(2) = 0.02;
545  deltaRW(3) = 0.02;
546  deltaRW(4) = 0.0001;
547  deltaRW(5) = 0.0001;
548  deltaRW(6) = 0.0001;
549  }
550  if ((level == 27) && (subdetlevel == 5)) {
551  deltaRW(1) = 0.01;
552  deltaRW(2) = 0.01;
553  deltaRW(3) = 0.02;
554  deltaRW(4) = 0.0001;
555  deltaRW(5) = 0.0001;
556  deltaRW(6) = 0.0001;
557  }
558  if ((level == 2) && (subdetlevel == 5)) {
559  deltaRW(1) = 0.003;
560  deltaRW(2) = 0.003;
561  deltaRW(3) = 0.01;
562  deltaRW(4) = 0.0002;
563  deltaRW(5) = 0.0002;
564  deltaRW(6) = 0.0002;
565  }
566  if ((level == 1) && (subdetlevel == 5)) {
567  deltaRW(1) = 0.003;
568  deltaRW(2) = 0.003;
569  deltaRW(3) = 0.01;
570  deltaRW(4) = 0.0002;
571  deltaRW(5) = 0.0002;
572  deltaRW(6) = 0.0002;
573  }
574  //TEC
575  if ((level == 36) && (subdetlevel == 6)) {
576  deltaRW(1) = 0.2;
577  deltaRW(2) = 0.2;
578  deltaRW(3) = 0.2;
579  deltaRW(4) = 0.0008;
580  deltaRW(5) = 0.0008;
581  deltaRW(6) = 0.0008;
582  }
583  if ((level == 35) && (subdetlevel == 6)) {
584  deltaRW(1) = 0.05;
585  deltaRW(2) = 0.05;
586  deltaRW(3) = 0.05;
587  deltaRW(4) = 0.0003;
588  deltaRW(5) = 0.0003;
589  deltaRW(6) = 0.0003;
590  }
591  if ((level == 34) && (subdetlevel == 6)) {
592  deltaRW(1) = 0.01;
593  deltaRW(2) = 0.01;
594  deltaRW(3) = 0.02;
595  deltaRW(4) = 0.00005;
596  deltaRW(5) = 0.00005;
597  deltaRW(6) = 0.00005;
598  }
599  if ((level == 33) && (subdetlevel == 6)) {
600  deltaRW(1) = 0.01;
601  deltaRW(2) = 0.01;
602  deltaRW(3) = 0.02;
603  deltaRW(4) = 0.0001;
604  deltaRW(5) = 0.0001;
605  deltaRW(6) = 0.0001;
606  }
607  if ((level == 32) && (subdetlevel == 6)) {
608  deltaRW(1) = 0.007;
609  deltaRW(2) = 0.007;
610  deltaRW(3) = 0.015;
611  deltaRW(4) = 0.00015;
612  deltaRW(5) = 0.00015;
613  deltaRW(6) = 0.00015;
614  }
615  if ((level == 2) && (subdetlevel == 6)) {
616  deltaRW(1) = 0.002;
617  deltaRW(2) = 0.002;
618  deltaRW(3) = 0.005;
619  deltaRW(4) = 0.0001;
620  deltaRW(5) = 0.0001;
621  deltaRW(6) = 0.0001;
622  }
623  if ((level == 1) && (subdetlevel == 6)) {
624  deltaRW(1) = 0.002;
625  deltaRW(2) = 0.002;
626  deltaRW(3) = 0.005;
627  deltaRW(4) = 0.0001;
628  deltaRW(5) = 0.0001;
629  deltaRW(6) = 0.0001;
630  }
631 
632  return deltaRW;
633 }
634 //-------------------------------------------------------
635 // DEFAULT VALUES FOR THE PRECISION OF THE SURVEY
636 //-------------------------------------------------------
638  AlgebraicVector deltaRW(6);
639  deltaRW(1) = 0.0;
640  deltaRW(2) = 0.0;
641  deltaRW(3) = 0.0;
642  deltaRW(4) = 0.0;
643  deltaRW(5) = 0.0;
644  deltaRW(6) = 0.0;
645  //PIXEL
646  if ((level == 37) && (subdetlevel == 1)) { //Pixel Detector in Tracker
647  deltaRW(1) = 0.2;
648  deltaRW(2) = 0.2;
649  deltaRW(3) = 0.2;
650  deltaRW(4) = 0.0017;
651  deltaRW(5) = 0.0017;
652  deltaRW(6) = 0.0017;
653  }
654  //STRIP
655  if ((level == 38) && (subdetlevel == 3)) { //Strip Tracker in Tracker
656  deltaRW(1) = 0.2;
657  deltaRW(2) = 0.2;
658  deltaRW(3) = 0.2;
659  deltaRW(4) = 0.0004;
660  deltaRW(5) = 0.0004;
661  deltaRW(6) = 0.0004;
662  }
663  //TRACKER
664  if ((level == 39) && (subdetlevel == 1)) { //Tracker
665  deltaRW(1) = 0.0;
666  deltaRW(2) = 0.0;
667  deltaRW(3) = 0.0;
668  deltaRW(4) = 0.0;
669  deltaRW(5) = 0.0;
670  deltaRW(6) = 0.0;
671  }
672  //TPB
673  if ((level == 7) && (subdetlevel == 1)) { //Barrel Pixel in Pixel
674  deltaRW(1) = 0.05;
675  deltaRW(2) = 0.05;
676  deltaRW(3) = 0.1;
677  deltaRW(4) = 0.0008;
678  deltaRW(5) = 0.0008;
679  deltaRW(6) = 0.0008;
680  }
681  if ((level == 6) && (subdetlevel == 1)) { //HalfBarrel in Barrel Pixel
682  deltaRW(1) = 0.015;
683  deltaRW(2) = 0.015;
684  deltaRW(3) = 0.03;
685  deltaRW(4) = 0.0003;
686  deltaRW(5) = 0.0003;
687  deltaRW(6) = 0.0003;
688  }
689  if ((level == 5) && (subdetlevel == 1)) { //HalfShell in HalfBarrel
690  deltaRW(1) = 0.005;
691  deltaRW(2) = 0.005;
692  deltaRW(3) = 0.01;
693  deltaRW(4) = 0.0001;
694  deltaRW(5) = 0.0001;
695  deltaRW(6) = 0.0001;
696  }
697  if ((level == 4) && (subdetlevel == 1)) { //Ladder in HalfShell
698  deltaRW(1) = 0.001;
699  deltaRW(2) = 0.001;
700  deltaRW(3) = 0.002;
701  deltaRW(4) = 0.00005;
702  deltaRW(5) = 0.00005;
703  deltaRW(6) = 0.00005;
704  }
705  if ((level == 2) && (subdetlevel == 1)) { //Det in Ladder
706  deltaRW(1) = 0.0005;
707  deltaRW(2) = 0.001;
708  deltaRW(3) = 0.001;
709  deltaRW(4) = 0.0001;
710  deltaRW(5) = 0.0001;
711  deltaRW(6) = 0.0001;
712  }
713  if ((level == 1) && (subdetlevel == 1)) { //DetUnit in Ladder
714  deltaRW(1) = 0.0005;
715  deltaRW(2) = 0.001;
716  deltaRW(3) = 0.001;
717  deltaRW(4) = 0.0001;
718  deltaRW(5) = 0.0001;
719  deltaRW(6) = 0.0001;
720  }
721  //TPE
722  if ((level == 13) && (subdetlevel == 2)) { //Forward Pixel in Pixel
723  deltaRW(1) = 0.05;
724  deltaRW(2) = 0.05;
725  deltaRW(3) = 0.1;
726  deltaRW(4) = 0.0004;
727  deltaRW(5) = 0.0004;
728  deltaRW(6) = 0.0004;
729  }
730  if ((level == 12) && (subdetlevel == 2)) { //HalfCylinder in Forward Pixel
731  deltaRW(1) = 0.015;
732  deltaRW(2) = 0.015;
733  deltaRW(3) = 0.03;
734  deltaRW(4) = 0.00015;
735  deltaRW(5) = 0.00015;
736  deltaRW(6) = 0.00015;
737  }
738  if ((level == 11) && (subdetlevel == 2)) { //HalfDisk in HalfCylinder
739  deltaRW(1) = 0.005;
740  deltaRW(2) = 0.005;
741  deltaRW(3) = 0.01;
742  deltaRW(4) = 0.0001;
743  deltaRW(5) = 0.0001;
744  deltaRW(6) = 0.0001;
745  }
746  if ((level == 10) && (subdetlevel == 2)) { //Blade in HalfDisk
747  deltaRW(1) = 0.001;
748  deltaRW(2) = 0.001;
749  deltaRW(3) = 0.002;
750  deltaRW(4) = 0.0001;
751  deltaRW(5) = 0.0001;
752  deltaRW(6) = 0.0001;
753  }
754  if ((level == 9) && (subdetlevel == 2)) { //Panel in Blade
755  deltaRW(1) = 0.001;
756  deltaRW(2) = 0.0008;
757  deltaRW(3) = 0.0006;
758  deltaRW(4) = 0.0002;
759  deltaRW(5) = 0.0002;
760  deltaRW(6) = 0.0002;
761  }
762  if ((level == 2) && (subdetlevel == 2)) { //Det in Panel
763  deltaRW(1) = 0.0005;
764  deltaRW(2) = 0.0004;
765  deltaRW(3) = 0.0006;
766  deltaRW(4) = 0.0001;
767  deltaRW(5) = 0.0003;
768  deltaRW(6) = 0.0001;
769  }
770  if ((level == 1) && (subdetlevel == 2)) { //DetUnit in Panel
771  deltaRW(1) = 0.0005;
772  deltaRW(2) = 0.0004;
773  deltaRW(3) = 0.0006;
774  deltaRW(4) = 0.0001;
775  deltaRW(5) = 0.0003;
776  deltaRW(6) = 0.0001;
777  }
778  //TIB
779  if ((level == 20) && (subdetlevel == 3)) { //TIB in Strip Tracker
780  deltaRW(1) = 0.08;
781  deltaRW(2) = 0.08;
782  deltaRW(3) = 0.04;
783  deltaRW(4) = 0.0017;
784  deltaRW(5) = 0.0017;
785  deltaRW(6) = 0.0017;
786  }
787  if ((level == 19) && (subdetlevel == 3)) { //HalfBarrel in TIB
788  deltaRW(1) = 0.04;
789  deltaRW(2) = 0.04;
790  deltaRW(3) = 0.02;
791  deltaRW(4) = 0.0003;
792  deltaRW(5) = 0.0003;
793  deltaRW(6) = 0.0003;
794  }
795  if ((level == 18) && (subdetlevel == 3)) { //Layer in HalfBarrel
796  deltaRW(1) = 0.02;
797  deltaRW(2) = 0.02;
798  deltaRW(3) = 0.01;
799  deltaRW(4) = 0.0006;
800  deltaRW(5) = 0.0006;
801  deltaRW(6) = 0.0006;
802  }
803  if ((level == 17) && (subdetlevel == 3)) { //HalfShell in Layer
804  deltaRW(1) = 0.01;
805  deltaRW(2) = 0.01;
806  deltaRW(3) = 0.005;
807  deltaRW(4) = 0.0002;
808  deltaRW(5) = 0.0002;
809  deltaRW(6) = 0.0002;
810  }
811  if ((level == 16) && (subdetlevel == 3)) { //Surface in a HalfShell
812  deltaRW(1) = 0.004;
813  deltaRW(2) = 0.004;
814  deltaRW(3) = 0.008;
815  deltaRW(4) = 0.0002;
816  deltaRW(5) = 0.0001;
817  deltaRW(6) = 0.0001;
818  }
819  if ((level == 15) && (subdetlevel == 3)) { //String in a Surface
820  deltaRW(1) = 0.004;
821  deltaRW(2) = 0.004;
822  deltaRW(3) = 0.008;
823  deltaRW(4) = 0.0002;
824  deltaRW(5) = 0.0001;
825  deltaRW(6) = 0.0001;
826  }
827  if ((level == 2) && (subdetlevel == 3)) { //Det in a String
828  deltaRW(1) = 0.002;
829  deltaRW(2) = 0.002;
830  deltaRW(3) = 0.004;
831  deltaRW(4) = 0.0004;
832  deltaRW(5) = 0.0002;
833  deltaRW(6) = 0.0002;
834  }
835  if ((level == 1) && (subdetlevel == 3)) { //DetUnit in a String
836  deltaRW(1) = 0.002;
837  deltaRW(2) = 0.002;
838  deltaRW(3) = 0.004;
839  deltaRW(4) = 0.0004;
840  deltaRW(5) = 0.0002;
841  deltaRW(6) = 0.0002;
842  }
843  //TID
844  if ((level == 25) && (subdetlevel == 4)) { //TID in Strip Tracker
845  deltaRW(1) = 0.05;
846  deltaRW(2) = 0.05;
847  deltaRW(3) = 0.1;
848  deltaRW(4) = 0.0003;
849  deltaRW(5) = 0.0003;
850  deltaRW(6) = 0.0003;
851  }
852  if ((level == 24) && (subdetlevel == 4)) { //Disk in a TID
853  deltaRW(1) = 0.01;
854  deltaRW(2) = 0.01;
855  deltaRW(3) = 0.02;
856  deltaRW(4) = 0.0001;
857  deltaRW(5) = 0.0001;
858  deltaRW(6) = 0.0001;
859  }
860  if ((level == 23) && (subdetlevel == 4)) { //Ring is a Disk
861  deltaRW(1) = 0.004;
862  deltaRW(2) = 0.004;
863  deltaRW(3) = 0.005;
864  deltaRW(4) = 0.00004;
865  deltaRW(5) = 0.00004;
866  deltaRW(6) = 0.00004;
867  }
868  if ((level == 22) && (subdetlevel == 4)) { //Side of a Ring
869  deltaRW(1) = 0.002;
870  deltaRW(2) = 0.002;
871  deltaRW(3) = 0.002;
872  deltaRW(4) = 0.00004;
873  deltaRW(5) = 0.00004;
874  deltaRW(6) = 0.00004;
875  }
876  if ((level == 2) && (subdetlevel == 4)) { //Det in a Side
877  deltaRW(1) = 0.002;
878  deltaRW(2) = 0.002;
879  deltaRW(3) = 0.002;
880  deltaRW(4) = 0.0002;
881  deltaRW(5) = 0.0002;
882  deltaRW(6) = 0.0002;
883  }
884  if ((level == 1) && (subdetlevel == 4)) { //DetUnit is a Side
885  deltaRW(1) = 0.002;
886  deltaRW(2) = 0.002;
887  deltaRW(3) = 0.002;
888  deltaRW(4) = 0.0002;
889  deltaRW(5) = 0.0002;
890  deltaRW(6) = 0.0002;
891  }
892  //TOB
893  if ((level == 30) && (subdetlevel == 5)) { // TOB in Strip Tracker
894  deltaRW(1) = 0.06;
895  deltaRW(2) = 0.06;
896  deltaRW(3) = 0.06;
897  deltaRW(4) = 0.00025;
898  deltaRW(5) = 0.00025;
899  deltaRW(6) = 0.00025;
900  }
901  if ((level == 29) && (subdetlevel == 5)) { //HalfBarrel in the TOB
902  deltaRW(1) = 0.014;
903  deltaRW(2) = 0.014;
904  deltaRW(3) = 0.05;
905  deltaRW(4) = 0.0001;
906  deltaRW(5) = 0.0001;
907  deltaRW(6) = 0.0001;
908  }
909  if ((level == 28) && (subdetlevel == 5)) { //Layer in a HalfBarrel
910  deltaRW(1) = 0.02;
911  deltaRW(2) = 0.02;
912  deltaRW(3) = 0.02;
913  deltaRW(4) = 0.0001;
914  deltaRW(5) = 0.0001;
915  deltaRW(6) = 0.0001;
916  }
917  if ((level == 27) && (subdetlevel == 5)) { //Rod in a Layer
918  deltaRW(1) = 0.01;
919  deltaRW(2) = 0.01;
920  deltaRW(3) = 0.02;
921  deltaRW(4) = 0.0001;
922  deltaRW(5) = 0.0001;
923  deltaRW(6) = 0.0001;
924  }
925  if ((level == 2) && (subdetlevel == 5)) { //Det in a Rod
926  deltaRW(1) = 0.003;
927  deltaRW(2) = 0.003;
928  deltaRW(3) = 0.01;
929  deltaRW(4) = 0.0002;
930  deltaRW(5) = 0.0002;
931  deltaRW(6) = 0.0002;
932  }
933  if ((level == 1) && (subdetlevel == 5)) { //DetUnit in a Rod
934  deltaRW(1) = 0.003;
935  deltaRW(2) = 0.003;
936  deltaRW(3) = 0.01;
937  deltaRW(4) = 0.0002;
938  deltaRW(5) = 0.0002;
939  deltaRW(6) = 0.0002;
940  }
941  //TEC
942  if ((level == 36) && (subdetlevel == 6)) { //TEC in the Strip Tracker
943  deltaRW(1) = 0.06;
944  deltaRW(2) = 0.06;
945  deltaRW(3) = 0.1;
946  deltaRW(4) = 0.0003;
947  deltaRW(5) = 0.0003;
948  deltaRW(6) = 0.0003;
949  }
950  if ((level == 35) && (subdetlevel == 6)) { //Disk in the TEC
951  deltaRW(1) = 0.015;
952  deltaRW(2) = 0.015;
953  deltaRW(3) = 0.03;
954  deltaRW(4) = 0.0001;
955  deltaRW(5) = 0.0001;
956  deltaRW(6) = 0.0001;
957  }
958  if ((level == 34) && (subdetlevel == 6)) { //Side on a Disk
959  deltaRW(1) = 0.01;
960  deltaRW(2) = 0.01;
961  deltaRW(3) = 0.02;
962  deltaRW(4) = 0.00005;
963  deltaRW(5) = 0.00005;
964  deltaRW(6) = 0.00005;
965  }
966  if ((level == 33) && (subdetlevel == 6)) { //Petal on a Side of a Disk
967  deltaRW(1) = 0.01;
968  deltaRW(2) = 0.01;
969  deltaRW(3) = 0.02;
970  deltaRW(4) = 0.0001;
971  deltaRW(5) = 0.0001;
972  deltaRW(6) = 0.0001;
973  }
974  if ((level == 32) && (subdetlevel == 6)) { //Ring on a Petal
975  deltaRW(1) = 0.007;
976  deltaRW(2) = 0.007;
977  deltaRW(3) = 0.015;
978  deltaRW(4) = 0.00015;
979  deltaRW(5) = 0.00015;
980  deltaRW(6) = 0.00015;
981  }
982  if ((level == 2) && (subdetlevel == 6)) { //Det on a Ring
983  deltaRW(1) = 0.002;
984  deltaRW(2) = 0.002;
985  deltaRW(3) = 0.005;
986  deltaRW(4) = 0.0001;
987  deltaRW(5) = 0.0001;
988  deltaRW(6) = 0.0001;
989  }
990  if ((level == 1) && (subdetlevel == 6)) { // DetUnit on a Ring
991  deltaRW(1) = 0.002;
992  deltaRW(2) = 0.002;
993  deltaRW(3) = 0.005;
994  deltaRW(4) = 0.0001;
995  deltaRW(5) = 0.0001;
996  deltaRW(6) = 0.0001;
997  }
998 
999  return deltaRW;
1000 }
1001 
1002 // Plug in to framework
1003 
1005 
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
void setSurveyErrors(Alignable *)
module which creates/inserts the survey errors
void analyze(const edm::Event &, const edm::EventSetup &) override
Do nothing for each event.
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
Alignable * mother() const
Return pointer to container alignable (if any)
Definition: Alignable.h:91
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:132
virtual void rotateAroundLocalZ(Scalar radians)
Rotation around local z-axis.
Definition: Alignable.cc:183
double Scalar
Definition: Definitions.h:25
Class to update a given geometry with a set of alignments.
GlobalVector diffR(const GlobalVectors &current, const GlobalVectors &nominal)
Definition: Utilities.cc:158
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
static void addComponent(Alignable *)
void applyAlignments(const C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
void setGeometry(Alignable *)
module which modifies the geometry
AlgebraicVector getStructureErrors(int, int)
default values for survey uncertainty
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Definition: value.py:1
static Alignable * detector()
Get alignable detector as read from input.
virtual const Alignables & components() const =0
Return vector of all direct components.
const edm::ESGetToken< GeometricDet, IdealGeometryRecord > geomDetToken_
std::string m_inputGeom
const edm::ESGetToken< Alignments, TrackerAlignmentRcd > aliToken_
Definition: DetId.h:17
CLHEP::HepVector AlgebraicVector
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcd > ptpToken_
void setSurvey(const SurveyDet *)
Set survey info.
Definition: Alignable.cc:266
align::Scalar length() const
virtual void rotateAroundLocalY(Scalar radians)
Rotation around local y-axis.
Definition: Alignable.cc:169
const edm::ESGetToken< AlignmentErrorsExtended, TrackerAlignmentErrorExtendedRcd > aliErrToken_
std::vector< Alignable * > Alignables
Definition: Utilities.h:31
CreateSurveyRcds(const edm::ParameterSet &)
virtual void rotateAroundLocalX(Scalar radians)
Rotation around local x-axis.
Definition: Alignable.cc:155
math::Error< 6 >::type ErrorMatrix
Definition: Definitions.h:37
AlgebraicVector getStructurePlacements(int, int)
default values for assembly precision
Definition: event.py:1