ATLAS Offline Software
TRT_StrawNeighbourSvc.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
11 #include "TRT_StrawNeighbourSvc.h"
12 
13 #include <cstdio>
14 #include <fstream>
15 #include <iostream>
16 #include <sstream>
17 
18 #include "StoreGate/StoreGateSvc.h"
19 
22 
23 #include "Identifier/Identifier.h"
24 #include "InDetIdentifier/TRT_ID.h"
25 
29 
30 //Geometry db
34 #include "GaudiKernel/Bootstrap.h"
35 #include "GaudiKernel/ISvcLocator.h"
36 #include "GaudiKernel/GaudiException.h"
37 
38 //Geomodel
41 
42 
44  ISvcLocator* pSvcLocator )
45  : AthService(name,pSvcLocator),
46  m_detStore("DetectorStore",name),
47  m_trtid(nullptr)
48 {
49  declareProperty("DetectorStore",m_detStore);
50 }
51 
52 
54 = default;
55 
56 
58 {
59  ATH_MSG_DEBUG("TRT_StrawNeighbourSvc initialize method called");
60 
61  if (StatusCode::SUCCESS!=m_detStore.retrieve()) {
62  msg(MSG::FATAL) << "Couldn't retrieve " << m_detStore << endmsg;
63  return StatusCode::FAILURE;
64  }
65 
66  // Get the TRT ID helper
67  if (StatusCode::SUCCESS!=m_detStore->retrieve(m_trtid,"TRT_ID")) {
68  msg(MSG::FATAL) << "Problem retrieving TRTID helper" << endmsg;
69  return StatusCode::FAILURE;
70  }
71 
72 
73  int chipConversionSocketToChip_m1[]={0,1,2,3,4,21,7,6,5,20,19,8,9,16,17,18,10,15,14,13,12,11};
74  for(int j=0; j<22; j++) m_chipConversionSocketToChip_m1[j]=chipConversionSocketToChip_m1[j];
75  int chipConversionChipToSocket_m1[] = {0,1,2,3,4,8,7,6,11,12,16,21,20,19,18,17,13,14,15,10,9,5};
76  for(int j=0; j<22; j++) m_chipConversionChipToSocket_m1[j]=chipConversionChipToSocket_m1[j];
77 
78  int chipConversionSocketToChip_m2[] = {0,5,4,3,2,1,33,6,7,8,9,32,31,12,11,10,27,28,29,30,13,14,26,25,24,23,22,15,16,17,18,19,20,21};
79  for(int j=0; j<34; j++) m_chipConversionSocketToChip_m2[j]=chipConversionSocketToChip_m2[j];
80  int chipConversionChipToSocket_m2[] = {0,5,4,3,2,1,7,8,9,10,15,14,13,20,21,27,28,29,30,31,32,33,26,25,24,23,22,16,17,18,19,12,11,6};
81  for(int j=0; j<34; j++) m_chipConversionChipToSocket_m2[j]=chipConversionChipToSocket_m2[j];
82 
83  int chipConversionSocketToChip_m3[] = {0,1,2,3,4,5,6,50,11,10,9,8,7,49,12,13,14,15,48,47,46,18,17,16,42,43,44,45,19,20,41,40,39,38,37,22,21,31,32,33,34,35,36,23,30,29,28,27,26,25,24};
84  for(int j=0; j<51; j++) m_chipConversionSocketToChip_m3[j]=chipConversionSocketToChip_m3[j];
85  int chipConversionChipToSocket_m3[] = {0,1,2,3,4,5,6,12,11,10,9,8,14,15,16,17,23,22,21,28,29,36,35,43,50,49,48,47,46,45,44,37,38,39,40,41,42,34,33,32,31,30,24,25,26,27,20,19,18,13,7};
86  for(int j=0; j<51; j++) m_chipConversionChipToSocket_m3[j]=chipConversionChipToSocket_m3[j];
87 
88  if (1) { // initialize endcap chip maps, sasa 27 July 2009
89 
90  int chipIndexToChipHardware_A0[] = {2, 1, 3, 0, 6, 5, 7, 4, 10, 9, 11, 8};
91  int chipIndexToChipHardware_A8[] = {8, 11, 9, 10, 4, 7, 5, 6, 0, 3, 1, 2};
92  int chipIndexToChipHardware_C0[] = {1, 2, 0, 3, 5, 6, 4, 7, 9, 10, 8, 11};
93  int chipIndexToChipHardware_C8[] = {11, 8, 10, 9, 7, 4, 6, 5, 3, 0, 2, 1};
95  int *chip_list[] = {chipIndexToChipHardware_A0, chipIndexToChipHardware_A8, chipIndexToChipHardware_C0, chipIndexToChipHardware_C8};
96  for (int i=0; i<4; i++) for (int j=0; j<12; j++) map_list[i][j] = chip_list[i][j];
97  }
98 
99 
100 
101  //Geometry db
102  // RDBAccessSvc (Interface to the DD database).
103  ISvcLocator* svcLocator = Gaudi::svcLocator(); // from Bootstrap.h
104  IRDBAccessSvc* iAccessSvc = nullptr;
105  StatusCode result = svcLocator->service("RDBAccessSvc",iAccessSvc);
106  if ( result.isFailure() || iAccessSvc == nullptr ) {
107  msg(MSG::FATAL) << "Could not initialize RDBAccessSvc!" << endmsg;
108  throw GaudiException("Could not initalize RDBAccessSvc","TRT_GeoModel",StatusCode::FAILURE);
109  }
110 
111  IGeoModelSvc *geoModel;
112  result = svcLocator->service ("GeoModelSvc",geoModel);
113  if ( result.isFailure()) {
114  msg(MSG::FATAL) << "Could not locate GeoModelSvc" << endmsg;
115  throw GaudiException("Could not locate GeoModelSvc","TRT_GeoModel",StatusCode::FAILURE);
116  }
117  DecodeVersionKey versionKey(geoModel, "TRT");
118  const std::string& detectorKey = versionKey.tag();
119  const std::string& detectorNode = versionKey.node();
120  IRDBRecordset_ptr RDB_TRTElec = iAccessSvc->getRecordsetPtr("TRTBarElecToStrawRel",detectorKey,detectorNode);
121 
122  if (RDB_TRTElec->size()==0) {
123  RDB_TRTElec = iAccessSvc->getRecordsetPtr("TRTBarElecToStrawRel","TRTBarElecToStrawRel-02");
124  msg(MSG::INFO) << "The folder: InnerDetector->TRT->TRTBarrel->TRTBarrelElectronics not found in DetDesc tag. Using hardcoded tag: TRTBarElecToStrawRel-02" << endmsg;
125  }
126 
127 
128  // initialization
129 
130  const int numberOfm1layers=19;
131  const int numberOfm2layers=24;
132  const int numberOfm3layers=30;
133 
134  int layer_m1_array[numberOfm1layers]= {15,16,16,16,16,17,17,17,17,17,18,18,18,18,18,19,19,19,18};
135  int layer_m2_array[numberOfm2layers]= {19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,23};
136  int layer_m3_array[numberOfm3layers]= {23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,28};
137 
138  int i =0;
139  unsigned int acc=0;
140 
141  for (i=0; i<numberOfm1layers ;i++){
142  m_layer_m1.push_back(layer_m1_array[i]);
143  acc +=layer_m1_array[i];
144  m_layer_m1_acc.push_back(acc);
145  }
146 
147  acc=0;
148  for (i=0; i<numberOfm2layers;i++){
149  m_layer_m2.push_back(layer_m2_array[i]);
150  acc +=layer_m2_array[i];
151  m_layer_m2_acc.push_back(acc);
152  }
153 
154  acc=0;
155  for (i=0; i<numberOfm3layers;i++){
156  m_layer_m3.push_back(layer_m3_array[i]);
157  acc +=layer_m3_array[i];
158  m_layer_m3_acc.push_back(acc);
159  }
160 
161 
162 
163 
165 
166 
167  int straw =0;
168  int stnm=0, pad=0, previous_pad=1, layer = 0, pad_rel_mod=0;
169  double chip=0.;
170 
171  std::vector<std::vector<int> > dummy1;
172  std::vector<int> dummy12;
173  std::vector<std::vector<int> > dummy2;
174  std::vector<int> dummy22;
175  std::vector<std::vector<int> > dummy3;
176  std::vector<int> dummy32;
177 
178  std::vector<std::vector<int> > dumdumdum1;
179  std::vector<std::vector<int> > dumdumdum2;
180  std::vector<std::vector<int> > dumdumdum3;
181  std::vector<int> dumdum ;
182  for (unsigned int d =0; d<=100; d++ ) {
183  dumdumdum1.push_back(dumdum);
184  dumdumdum2.push_back(dumdum);
185  dumdumdum3.push_back(dumdum);
186  }
187 
188  m_m1.push_back(0);
189  m_m2.push_back(0);
190  m_m3.push_back(0);
191 
192 
193  dummy1.clear();
194  dummy12.clear();
195  while(layer == 0) {
196  const IRDBRecord* RDBVars__TRTElec = (*RDB_TRTElec)[straw];
197  layer = RDBVars__TRTElec->getInt("LAYER");
198  if (!(layer==0)) break;
199  stnm = RDBVars__TRTElec->getInt("STRAWNUM");
200  pad = RDBVars__TRTElec->getInt("HVPADRELSTRAW");
201  pad_rel_mod = RDBVars__TRTElec->getInt("HVPADRELMOD");
202  m_m1.push_back(pad_rel_mod);
203  if (pad==previous_pad) dummy12.push_back(stnm);
204  else if (pad != previous_pad) {
205  previous_pad=pad;
206  dummy1.push_back(dummy12);
207  dummy12.clear();
208  dummy12.push_back(stnm);
209  }
210  chip=(RDBVars__TRTElec->getDouble("CHIPRELSTRAW"));
211  m_chip_vector1.push_back(chip);
212  (dumdumdum1[(int)chip]).push_back(straw+1);
213  straw++;
214  }
215  m_pad_to_straw.push_back(dummy1);
216  m_chip_to_straw.push_back(dumdumdum1);
217 
218 
219  dummy2.clear();
220  dummy22.clear();
221  previous_pad=1;
222  while(layer == 1) {
223  const IRDBRecord* RDBVars__TRTElec = (*RDB_TRTElec)[straw];
224  layer = RDBVars__TRTElec->getInt("LAYER");
225  if (!(layer==1)) break;
226  stnm = RDBVars__TRTElec->getInt("STRAWNUM");
227  pad = RDBVars__TRTElec->getInt("HVPADRELSTRAW");
228  pad_rel_mod = RDBVars__TRTElec->getInt("HVPADRELMOD");
229  m_m2.push_back(pad_rel_mod);
230  if (pad==previous_pad) dummy22.push_back(stnm);
231  else if (pad != previous_pad) {
232  previous_pad=pad;
233  dummy2.push_back(dummy22);
234  dummy22.clear();
235  dummy22.push_back(stnm);
236  }
237  chip=(RDBVars__TRTElec->getDouble("CHIPRELSTRAW"));
238  m_chip_vector2.push_back(chip);
239  (dumdumdum2[(int)chip]).push_back(straw+1-329);
240  straw++;
241  }
242  m_pad_to_straw.push_back(dummy2);
243  m_chip_to_straw.push_back(dumdumdum2);
244 
245 
246 
247  dummy3.clear();
248  dummy32.clear();
249  previous_pad=1;
250  while(layer == 2) {
251  if (straw>1641) break;// return StatusCode::SUCCESS;
252  const IRDBRecord* RDBVars__TRTElec = (*RDB_TRTElec)[straw];
253  layer = RDBVars__TRTElec->getInt("LAYER");
254  if (!(layer==2)) break;
255  stnm = RDBVars__TRTElec->getInt("STRAWNUM");
256  pad = RDBVars__TRTElec->getInt("HVPADRELSTRAW");
257  pad_rel_mod = RDBVars__TRTElec->getInt("HVPADRELMOD");
258  m_m3.push_back(pad_rel_mod);
259  if (pad==previous_pad) dummy32.push_back(stnm);
260  else if (pad != previous_pad) {
261  previous_pad=pad;
262  dummy3.push_back(dummy32);
263  dummy32.clear();
264  dummy32.push_back(stnm);
265  }
266  chip=(RDBVars__TRTElec->getDouble("CHIPRELSTRAW"));
267  m_chip_vector3.push_back(chip);
268  (dumdumdum3[(int)chip]).push_back(straw+1-329-520);
269  straw++;
270 
271  }
272  m_pad_to_straw.push_back(dummy3);
273  m_chip_to_straw.push_back(dumdumdum3);
274 
275 
276 
277  ATH_MSG_DEBUG("TRT_StrawNeighbourSvc initialized ");
278  if (!((m_m1.size()==330)&&(m_m2.size()==521)&&(m_m3.size()==794) )) ATH_MSG_WARNING("Initialization of TRT_StrawNeighbourTool incomplete. Depending on usage, this can give rise to runtime problems");
279 
280 
281  //for strawLayer barrel
282  int numberOfStraws[75] = {0,
283  15,
284  16,16,16,16,
285  17,17,17,17,17,
286  18,18,18,18,18,
287  19,19,19,
288  18,
289  19,
290  20,20,20,20,20,
291  21,21,21,21,21,
292  22,22,22,22,22,
293  23,23,23,23,23,
294  24,24,
295  23,23,
296  24,24,24,24,
297  25,25,25,25,25,
298  26,26,26,26,26,
299  27,27,27,27,27,
300  28,28,28,28,28,
301  29,29,29,29,
302  28,
303  0};
304  for(int j=0; j<75; j++) m_numberOfStraws[j]=numberOfStraws[j];
305 
306  int TripletOrientation[2][32] = {
307  {1,1,1,1,1,1,1,1,
308  0,0,0,0,0,0,0,0,
309  1,1,1,1,1,1,1,1,
310  0,0,0,0,0,0,0,0},
311  {1,1,1,1,1,1,1,1,
312  0,0,0,0,0,0,0,0,
313  1,1,1,1,1,1,1,1,
314  0,0,0,0,0,0,0,0}
315  };
316 
317 
318 
319  for(int j=0; j<2; j++)
320  for(int jj=0; jj<32; jj++)
321  m_TripletOrientation[j][jj]=TripletOrientation[j][jj];
322 
323 
324  return StatusCode::SUCCESS;
325 
326 
327 
328 }
329 
331 
332 
333 
335 {
336 
337  msg(MSG::INFO) << "TRT_StrawNeighbourSvc finalize method called" << endmsg;
338  return StatusCode::SUCCESS;
339 }
340 
341 
343 
344 void TRT_StrawNeighbourSvc::getAtlasIdentifier(int strawnumber, Identifier &outputID, Identifier inputID){
345  int straw=0,layer=0;
346  int moduleType = m_trtid->layer_or_wheel(inputID);
347 
348  if (moduleType==0) {
349  for (unsigned int i=0; i< m_layer_m1_acc.size();i++){
350  if (((unsigned int)strawnumber)<=m_layer_m1_acc[i]) {
351  layer=i;
352  straw= m_layer_m1_acc[i]-strawnumber;
353  break;
354  }
355  }
356  }
357  else if (moduleType==1) {
358  for (unsigned int i=0; i< m_layer_m2_acc.size();i++){
359  if (((unsigned int)strawnumber)<=m_layer_m2_acc[i]) {
360  layer=i;
361  straw= m_layer_m2_acc[i]-strawnumber;
362  break;
363  }
364  }
365  }
366  else if (moduleType==2) {
367  for (unsigned int i=0; i< m_layer_m3_acc.size();i++){
368  if (((unsigned int)strawnumber)<=m_layer_m3_acc[i]) {
369  layer=i;
370  straw= m_layer_m3_acc[i]-strawnumber;
371  break;
372  }
373  }
374  }
375 
376 
377  outputID = m_trtid->straw_id(m_trtid->barrel_ec(inputID),
378  m_trtid->phi_module(inputID),
379  m_trtid->layer_or_wheel(inputID),
380  layer,
381  straw);
382 }
383 
384 
385 
387 
389 
390  if (abs((m_trtid->barrel_ec(offlineID)))!=1 ) {
391  msg(MSG::ERROR) << "Sorry, getRunningNumbering only works for barrel" << endmsg;
392  return 0;
393  }
394 
395  int layer = m_trtid->straw_layer(offlineID);
396  int straw = m_trtid->straw(offlineID);
397  int moduleType = m_trtid->layer_or_wheel(offlineID);
398 
399 
400  int strawnumber=0;
401  if (moduleType==0) {
402  strawnumber += m_layer_m1_acc[layer];
403  strawnumber -= straw;
404  }
405  else if (moduleType==1) {
406  strawnumber += m_layer_m2_acc[layer];
407  strawnumber -= straw;
408  }
409  else if (moduleType==2) {
410  strawnumber += m_layer_m3_acc[layer];
411  strawnumber -= straw;
412  }
413  return strawnumber;
414 }
415 
416 
418 void TRT_StrawNeighbourSvc::getSocket(Identifier offlineID, int&socket){
419 
420  if ( !(abs(m_trtid->barrel_ec(offlineID))==1)) {
421  msg(MSG::ERROR) << "Sorry, this only works for barrel"<<endmsg;
422  return;
423  } else {
424 
425 
426 
427  int chip = 0;
428  getChip(offlineID,chip);
429  int layer_or_wheel = m_trtid->layer_or_wheel(offlineID);
430 
431  if (layer_or_wheel==0 )socket = m_chipConversionChipToSocket_m1[chip];
432  else if (layer_or_wheel==1 )socket = m_chipConversionChipToSocket_m2[chip];
433  else if (layer_or_wheel==2 )socket = m_chipConversionChipToSocket_m3[chip];
434 
435  return;
436  }
437 }
438 
439 
440 void TRT_StrawNeighbourSvc::getChip(Identifier offlineID, int& chip ){
441 
442  int socket=0;
443  chip=0;
444 
445  int layer_or_wheel = m_trtid->layer_or_wheel(offlineID);
446 
447  if (abs((m_trtid->barrel_ec(offlineID)))!=2 ) {
448  if (layer_or_wheel == 0) socket = (int)m_chip_vector1[getRunningNumbering(offlineID)-1];
449  else if (layer_or_wheel == 1) socket = (int)m_chip_vector2[getRunningNumbering(offlineID)-1];
450  else if (layer_or_wheel == 2) socket = (int)m_chip_vector3[getRunningNumbering(offlineID)-1];
451  else { msg(MSG::ERROR) << "Something is very wrong: According to identifier, straw belongs to a barrel module which is not of type 1,2 or 3 (corresponding to offline numbering: layer_or_wheel = 0,1 or 2) " << endmsg;}
452 
453 
454  if (layer_or_wheel == 0) chip = m_chipConversionSocketToChip_m1[socket] ;
455  else if (layer_or_wheel == 1) chip = m_chipConversionSocketToChip_m2[socket] ;
456  else if (layer_or_wheel == 2) chip = m_chipConversionSocketToChip_m3[socket] ;
457  return;
458  }
459  int straw = m_trtid->straw(offlineID);
460  int strawlayer = m_trtid->straw_layer(offlineID);
461  int bec = m_trtid->barrel_ec(offlineID);
462  int phi = m_trtid->phi_module(offlineID);
463 
464 // FIX ENDCAP CHIP MAPPING - SASA, 27 July 2009
465 
466  chip = (straw - straw%4) / 2;
467  if (strawlayer%8 >= 4) chip++;
468 
469  int nominal_reversed = 1 - ( (phi - phi%8)/8 ) %2 ;
470  int *map = nullptr;
471  if (bec==2) {
472  map = nominal_reversed ? m_endcapChipMapA8 : m_endcapChipMapA0;
473  chip = map[chip];
474  }
475  else if (bec==-2) {
476  map = nominal_reversed ? m_endcapChipMapC8 : m_endcapChipMapC0;
477  chip = map[chip];
478  }
479  else { msg(MSG::ERROR) << "Something is very wrong: endcap chip mapping " << bec << endmsg; chip = 12; }
480 
481  chip += 104;
482 
483  int board = layer_or_wheel;
484  if (board<6) { board *= 2; if (strawlayer>7) board++; }
485  else { board += 6; }
486  chip += board * 12;
487 
488 // end FIX ENDCAP CHIP MAPPING - SASA, 27 July 2009
489 
490  //orientation
491 
492  // endcap A is normal. endcap C is reverse
493 /*
494  int orientation = 1;
495  if (bec < 0) orientation = -1;
496 
497  //some phi sectors has reverse chip orientation
498  if (!( ( phi >= 24 ) || ( (phi >= 8) && ( phi <= 15)) )) orientation = orientation * (-1 );
499 
500  int strawlayer_temp = strawlayer % 8 ;
501  int straw_temp=straw;
502 
503  if (bec<0) straw_temp=23-straw_temp;
504 
505  //case normal orientation
506  if (orientation > 0 ) {
507  if (strawlayer_temp < 4 ) {
508  if (straw_temp<4) chip = 1;
509  else if (straw_temp<8) chip = 0;
510  else if (straw_temp<12) chip = 5;
511  else if (straw_temp<16) chip = 4;
512  else if (straw_temp<20) chip = 9;
513  else chip = 8;
514  }else{
515  if (straw_temp<4) chip = 2;
516  else if (straw_temp<8) chip = 3;
517  else if (straw_temp<12) chip = 6;
518  else if (straw_temp<16) chip = 7;
519  else if (straw_temp<20) chip = 10;
520  else chip = 11;
521  }
522  }else{
523  if (strawlayer_temp < 4 ) {
524  if (straw_temp<4) chip = 11;
525  else if (straw_temp<8) chip = 10;
526  else if (straw_temp<12) chip = 7;
527  else if (straw_temp<16) chip = 6;
528  else if (straw_temp<20) chip =3;
529  else chip = 2;
530  }else{
531  if (straw_temp<4) chip = 8;
532  else if (straw_temp<8) chip = 9;
533  else if (straw_temp<12) chip = 4;
534  else if (straw_temp<16) chip = 5;
535  else if (straw_temp<20) chip = 0;
536  else chip = 1;
537  }
538  }
539 
540 
541  chip+=104;
542  if (layer_or_wheel<=5) chip+=layer_or_wheel*24+ (strawlayer <8?0:12);
543  else chip+=6*24+(layer_or_wheel-6)*12;
544 
545 
546  return;
547 */
548 }
549 
550 
551 
552 
553 
554 
555 
556 
557 
558 
559 void TRT_StrawNeighbourSvc::getPin(Identifier offlineID, int& pin ){
560 
561 
562  pin=0;
563 
564  int layer_or_wheel = m_trtid->layer_or_wheel(offlineID);
565  if (abs((m_trtid->barrel_ec(offlineID)))==1 ) {
566  if (layer_or_wheel == 0) {
567  pin = (int)(100*fmod(m_chip_vector1[getRunningNumbering(offlineID)-1],1.)+0.1);
568  }
569  else if (layer_or_wheel == 1) {
570  pin = (int)(100*fmod(m_chip_vector2[getRunningNumbering(offlineID)-1],1.)+0.1);
571  }
572  else if (layer_or_wheel == 2){
573  pin = (int)(100*fmod(m_chip_vector3[getRunningNumbering(offlineID)-1],1.)+0.1);
574  }
575  else { msg(MSG::ERROR) << "Something is very wrong: According to identifier, straw belongs to a barrel module which is not of type 1,2 or 3 (corresponding to offline numbering: layer_or_wheel = 0,1 or 2) " << endmsg;}
576 
577  return;
578  }
579 
580  else {
581  msg(MSG::WARNING) << " Sorry getPin only implemented for barrel so far. Returning pin=0 " << endmsg;
582  pin=0;
583 
584  return ;
585  }
586 }
587 
588 
589 
590 
591 void TRT_StrawNeighbourSvc::getPad(Identifier offlineID, int& pad ){
592 
593  if (abs((m_trtid->barrel_ec(offlineID)))!=1 ) {
594  // msg(MSG::ERROR) << "Sorry, getPad only works for barrel. barrel_ec(offlineID) = "<<m_trtid->barrel_ec(offlineID) << endmsg;
595  int temp_straw = (m_trtid->straw(offlineID))/8;
596  int temp_straw_layer = (m_trtid->straw_layer(offlineID))/4;
597  pad= temp_straw_layer*3+temp_straw+1;
598  return;
599  }
600 
601 
602  int strawnumber=getRunningNumbering(offlineID);
603  int moduleType = m_trtid->layer_or_wheel(offlineID);
604 
605 
606  strawnumber=strawnumber%1642;
607 
608 
609 
610  if (moduleType==0) {
611  pad = m_m1[strawnumber];
612  return;
613  }
614  else if (moduleType==1) {
615  pad = m_m2[strawnumber];
616  return;
617  }
618  else if (moduleType==2) {
619  pad = m_m3[strawnumber];
620  return;
621  }
622  msg(MSG::ERROR) << "Something went wrong: Pad not found, returning 0" << endmsg;
623  pad = 0;
624 }
625 
626 
627 
628 
629 
631 
632 
633 void TRT_StrawNeighbourSvc::getStrawsFromPad(Identifier offlineID, std::vector<Identifier>& neighbourIDs) {
634 
635  Identifier outputID;
636 
637  if (abs((m_trtid->barrel_ec(offlineID))) != 1 ) {
638  // msg(MSG::ERROR) << "Sorry, getStrawsFromPad only works for barrel" << endmsg;
639  // The Endcap getStrawsFromPad has NOT been properly tested!!!!
640 
641  int temp_straw = (m_trtid->straw(offlineID))/8;
642  int temp_straw_layer = (m_trtid->straw_layer(offlineID))/4;
643 
644 
645  for (int temp_it = temp_straw * 8 ; temp_it < temp_straw * 8 +8 ; temp_it++){
646  for (int temp_it2 = temp_straw_layer * 4 ; temp_it2 < temp_straw_layer * 4 +4 ; temp_it2++){
647  outputID = m_trtid->straw_id(m_trtid->barrel_ec(offlineID),
648  m_trtid->phi_module(offlineID),
649  m_trtid->layer_or_wheel(offlineID),
650  temp_straw_layer,
651  temp_straw);
652 
653  neighbourIDs.push_back(outputID);
654  }
655  }
656 
657  }else{
658  int moduleType = m_trtid->layer_or_wheel(offlineID);
659  int pad = 0;
660  getPad(offlineID, pad);
661  for ( unsigned int j=0; j<(m_pad_to_straw[moduleType][pad-1]).size();j++){
662  getAtlasIdentifier((m_pad_to_straw[moduleType][pad-1][j]),outputID,offlineID);
663  neighbourIDs.push_back(outputID);
664  if (j>9) {
665  msg(MSG::ERROR) << " Error in getStrawsFromPad. Returning "<<endmsg;
666  continue;
667  }
668  }
669  }
670  }
671 
673 
674 
675 
676 void TRT_StrawNeighbourSvc::getStrawsFromChip(Identifier inputID, std::vector<Identifier>& neighbourIDs) {
677 
678  Identifier outputID;
679 
680  if (abs((m_trtid->barrel_ec(inputID))) == 2) {
681 
682  unsigned int straw = (m_trtid->straw(inputID));
683  unsigned int straw_layer = (m_trtid->straw_layer(inputID));
684 
685  unsigned int local_straw = (m_trtid->straw(inputID))%4;
686  unsigned int local_straw_layer = (m_trtid->straw_layer(inputID))%4;
687 
688 
689  // int sign_straw_layer = 0; // set but not used
690  // int sign_straw = 0; // set but not used
691 
692  for( unsigned int i = 0 ; i < 4 ; i ++ ) {
693  for( unsigned int j = 0 ; j < 4 ; j ++ ) {
694 
695 
696  // set but not used
697  // sign_straw = (i<local_straw ?
698  // -1 :
699  // +1);
700 
701  // set but not used
702  // sign_straw_layer = (j<local_straw ?
703  // -1 :
704  // +1);
705 
706  outputID = m_trtid->straw_id(m_trtid->barrel_ec(inputID),
707  m_trtid->phi_module(inputID),
708  m_trtid->layer_or_wheel(inputID),
709  ( straw_layer + j - local_straw_layer),
710  ( straw + i - local_straw));
711  neighbourIDs.push_back(outputID);
712  // sign_straw=0;
713  // sign_straw_layer=0; // set but not used
714  }
715  }
716  }
717  else if (abs((m_trtid->barrel_ec(inputID))) == 1 ) {
718  //m_chip_to_straw
719 
720  int moduleType = m_trtid->layer_or_wheel(inputID);
721  int chip = 0, chiptest=-10;
722  getChip(inputID, chip);
723 
724  for ( unsigned int j=0; j<(m_chip_to_straw[moduleType][chip]).size(); j++){
725  if ( (m_chip_to_straw[moduleType][chip][j] ) ==0 ) continue;
726  getAtlasIdentifier((m_chip_to_straw[moduleType][chip][j]),outputID,inputID);
727  getChip(outputID,chiptest);
728  neighbourIDs.push_back(outputID);
729  if (j>17) {
730  msg(MSG::ERROR) << " Error in getStrawsFromChip. Returning "<<endmsg;
731  continue;
732  }
733  }
734  }
735  else if ( (abs((m_trtid->barrel_ec(inputID))) != 1 ) && (abs((m_trtid->barrel_ec(inputID))) != 2 )) {
736  msg(MSG::ERROR) << "Attempt to use getStrawsFromChip based on a non-TRT identifier. barrel_ec(inputID) = " << m_trtid->barrel_ec(inputID) <<endmsg; }
737 
738 
739 
740  }
741 
743 
745  Identifier outputID;
746 
747  if (abs(m_trtid->barrel_ec(inputID)) == 2 ) {
748 
749  unsigned int straw = (m_trtid->straw(inputID));
750  unsigned int straw_layer = (m_trtid->straw_layer(inputID));
751 
752  unsigned int local_straw = (m_trtid->straw(inputID))%4;
753  unsigned int local_straw_layer = (m_trtid->straw_layer(inputID))%4;
754 
755  //FIXME extra layer not needed
756 
757  //construt identifier of first straw in chip
758  outputID = m_trtid->straw_id(m_trtid->barrel_ec(inputID),
759  m_trtid->phi_module(inputID),
760  m_trtid->layer_or_wheel(inputID),
761  ( straw_layer - local_straw_layer),
762  ( straw - local_straw ) );
763 
764  }
765  else if (abs((m_trtid->barrel_ec(inputID))) == 1 ) {
766 
767  int moduleType = m_trtid->layer_or_wheel(inputID);
768  int chip = 0;
769  getChip(inputID, chip);
770 
771  getAtlasIdentifier(m_chip_to_straw[moduleType][chip][0],outputID,inputID);
772 
773  }
774  else { msg(MSG::ERROR) << "Attempt to use getFirstStrawFromChip based on a non-TRT identifier. barrel_ec(inputID) = "<<m_trtid->barrel_ec(inputID) << endmsg; }
775 
778  m_trtid->phi_module(outputID),m_trtid->straw_layer(outputID),
779  m_trtid->straw(outputID),level );
780  return id;
781 }
782 
783 
785 
786  // First translate between internal software numbering and hardware numbering:
787  int hardwarechip = 0;
788 
789  if ( (chip<1) || (chip > 50) || (abs(layer)>2) ) msg(MSG::ERROR) << "Attempt to use chipToBoard(int chip, int layer) with input outside bounds: 1<=chip<=50 and 0<=|layer|<=2 . Input was: chip = "<<chip<<" layer = "<<layer <<endmsg;
790 
791  if (abs(layer)==0) hardwarechip = chip -1;
792  else if (abs(layer)==1) hardwarechip = chip + 20;
793  else if (abs(layer)==2) hardwarechip = chip + 20 + 33;
794 
795  //From Sasa
796 
797  // return logical board index:
798  // 0 for Board 1S (has 10 chips_
799  // 1 for 1L (11)
800  // 2 for 2S (15)
801  // 3 for 2L, first 9 chips
802  // 4 for 2L, second 9 chips
803  // 5 for 3S, first 11
804  // 6 for 3S, second 12
805  // 7 for 3L, first 13
806  // 8 for 3L, second 14
807 
808  int list[] = {10, 11, 15, 9, 9, 11, 12, 13, 14};
809  int count = 0;
810  for (int i=0; i<9; i++) {
811  count += list[i];
812  if (hardwarechip < count) return i;
813  }
814  assert(count==104);
815  assert(0); // should never come this far
816 
817  msg(MSG::ERROR) << "Something went wrong in chipToBoardBarrel - please contact the author "<<endmsg;
818 
819  return -1;
820 }
821 
822 
824 
825  if ( abs( m_trtid->barrel_ec( id ) ) != 2 ) {
826  ATH_MSG_WARNING( "getRing is not valid for barrel straws!" );
827  return -1;
828  }
829 
830  // const TRT_ID* m_trtid;
831  unsigned int wheel = m_trtid->layer_or_wheel( id );
832  unsigned int strawlayer = m_trtid->straw_layer( id );
833 
834  if (wheel < 6)
835  return (16*wheel + strawlayer) / 4;
836  else
837  return (16*6+8*(wheel-6) + strawlayer) /4;
838 }
839 
841  //----------------------------------------------------------------
842 {
843  int Board = -1;
844  int remainder = (chip-1) % 12;
845  Board = int(((chip -1) - remainder) / 12);
846  return Board;
847 }
848 
849 
850 
852 //-----------------------------------------------------------------//
853 {
854  int bec = m_trtid->barrel_ec(id);
855  int phi_stack = m_trtid->phi_module(id);
856  int LayerNumber = m_trtid->layer_or_wheel(id);
857  int strawlayerNumber = m_trtid->straw_layer(id);
858  int strawNumber = m_trtid->straw(id);
859 
860 
861  if (abs(bec)==1) {
862 
863  int addToStrawNumber=0;
864  int addToStrawNumberNext=0;
865  int i=0;
866 
867 
868  do
869  {
870  i++;
871  addToStrawNumber+=m_numberOfStraws[i-1];
872  addToStrawNumberNext = addToStrawNumber+m_numberOfStraws[i];
873  }
874  while(strawLayerNumber(id)!=i-1);
875  /*
876  if(strawLayerNumber(id)%2==-10)
877  {
878  strawNumber += addToStrawNumber;
879  }
880  else
881  {
882  strawNumber = addToStrawNumberNext - strawNumber-1;
883  }
884  */
885  strawNumber = addToStrawNumberNext - strawNumber-1;
886 
887  return strawNumber;
888  }
889 
890  //strawNumber() for barrel
891 
892  else if (abs(bec)==2) {
893  int phi1=-1;
894  int side=bec;
895  if(side==2) phi1=phi_stack, side=1;
896  else if (side==-2) phi1=31-phi_stack, side=0;
897  if (phi1>-1){
898  //if (side==1 && TripletOrientation[side][phi1]){
899  if (m_TripletOrientation[side][phi1]){
900  //Change straw number from 0-23 in straw layer to 0-192
901 
902  if (strawlayerNumber < 8)strawNumber = strawNumber + 24*strawlayerNumber;
903  if (strawlayerNumber > 7)strawNumber = strawNumber + 24*(strawlayerNumber -8);
904 
905  strawNumber = (192-1)*m_TripletOrientation[side][phi1]+strawNumber*(1-2*m_TripletOrientation[side][phi1]);//actual rotation
906 
907  //take strawNumber back to 0-23
908  if (strawlayerNumber<8) strawlayerNumber = int(strawNumber/24);
909  if (strawlayerNumber>7) strawlayerNumber = int(strawNumber/24) + 8;
911  }
912 
913  //Finish rotation
914 
915  //Flip straw in layer.
916 
917  if (side==0) strawNumber = 23 - strawNumber;
918 
919  //Finish Flipping
920  }
921 
922  // Done with corrections
923 
924  //Start mapping from athena identifiers to TRTViewer maps
925 
926  int strawNumberNew=0;
927 
928  if(LayerNumber<6 && strawlayerNumber>7)
929  {
930  strawNumberNew=strawNumberNew+(384*LayerNumber);
931  strawNumberNew=strawNumberNew+192+(strawlayerNumber%8)+(strawNumber*8);
932  }
933  else if(LayerNumber<6 && strawlayerNumber<8)
934  {
935  strawNumberNew=strawNumberNew+(384*LayerNumber);
936  strawNumberNew=strawNumberNew + (strawlayerNumber%8) + (strawNumber*8);
937  }
938 
939  else if(LayerNumber>5 && strawlayerNumber>7)
940  {
941  strawNumberNew = strawNumberNew + 2304 + 192*(LayerNumber-6);
942  strawNumberNew = strawNumberNew + 192 + (strawlayerNumber%8) + (8*strawNumber);
943  }
944  else if(LayerNumber>5 && strawlayerNumber<8)
945  {
946  strawNumberNew = strawNumberNew + 2304 + 192*(LayerNumber-6);
947  strawNumberNew = strawNumberNew + (strawlayerNumber%8) + (8*strawNumber);
948  }
949 
950  strawNumber=strawNumberNew;
951 
952  return strawNumber;
953  }
954  else {
955  msg(MSG::ERROR) << "corrupted input identifier to TRT_StrawNeighbourSvc::strawNumber(). barrel_ec=" <<bec<< endmsg;
956  }
957  return -1;
958 }
960  //----------------------------------------------------------------------//
961 {
962 
963  int bec = m_trtid->barrel_ec(id);
964  // int phi_stack = m_trtid->phi_module(id);
965  int LayerNumber = m_trtid->layer_or_wheel(id);
967  // int strawNumber = m_trtid->straw(id);
968 
969 
970  if (abs(bec)==1) {
971 
972  if(LayerNumber==0)
973  {
974  strawLayerNumber+=0;
975  }
976  else if(LayerNumber==1)
977  {
978  strawLayerNumber+=19;
979  }
980  else if(LayerNumber==2)
981  {
982  strawLayerNumber+=43;
983  }
984 
985  return strawLayerNumber;
986  }//strawLayerNumber()
987  else{
988  msg(MSG::ERROR) << "Sorry, TRT_StrawNeighbourSvc::strawLayerNumber only works for barrel" << endmsg;
989  }
990  return -1;
991 }
IRDBRecord::getInt
virtual int getInt(const std::string &fieldName) const =0
Get int field value.
StrawStatusContainer.h
TRT_StrawNeighbourSvc::initialize
virtual StatusCode initialize()
tool initialize
Definition: TRT_StrawNeighbourSvc.cxx:57
TRT::Hit::straw
@ straw
Definition: HitInfo.h:82
get_generator_info.result
result
Definition: get_generator_info.py:21
TRT_StrawNeighbourSvc::m_endcapChipMapC0
int m_endcapChipMapC0[12]
Definition: TRT_StrawNeighbourSvc.h:106
TRT_StrawNeighbourSvc::m_layer_m2
std::vector< unsigned int > m_layer_m2
Definition: TRT_StrawNeighbourSvc.h:80
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
IRDBAccessSvc::getRecordsetPtr
virtual IRDBRecordset_ptr getRecordsetPtr(const std::string &node, const std::string &tag, const std::string &tag2node="", const std::string &connName="ATLASDD")=0
Provides access to the Recordset object containing HVS-tagged data.
TRT_StrawNeighbourSvc::strawNumber
int strawNumber(Identifier id)
Definition: TRT_StrawNeighbourSvc.cxx:851
IGeoModelSvc
Definition: IGeoModelSvc.h:17
TRT_StrawNeighbourSvc::m_layer_m3_acc
std::vector< unsigned int > m_layer_m3_acc
Definition: TRT_StrawNeighbourSvc.h:83
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
TRT_StrawNeighbourSvc::m_chipConversionChipToSocket_m1
int m_chipConversionChipToSocket_m1[22]
Definition: TRT_StrawNeighbourSvc.h:98
TRT_StrawNeighbourSvc::strawLayerNumber
int strawLayerNumber(Identifier id)
Definition: TRT_StrawNeighbourSvc.cxx:959
TRT_StrawNeighbourSvc::getChip
void getChip(Identifier offlineID, int &chip)
Definition: TRT_StrawNeighbourSvc.cxx:440
hist_file_dump.d
d
Definition: hist_file_dump.py:137
TRT_StrawNeighbourSvc::m_endcapChipMapA0
int m_endcapChipMapA0[12]
Definition: TRT_StrawNeighbourSvc.h:104
TRT_StrawNeighbourSvc::m_numberOfStraws
int m_numberOfStraws[75]
Definition: TRT_StrawNeighbourSvc.h:75
TRT_StrawNeighbourSvc::getPin
void getPin(Identifier offlineID, int &pin)
Definition: TRT_StrawNeighbourSvc.cxx:559
TRT_StrawNeighbourSvc::m_chipConversionChipToSocket_m2
int m_chipConversionChipToSocket_m2[34]
Definition: TRT_StrawNeighbourSvc.h:100
TRT_StrawNeighbourSvc::m_chip_vector2
std::vector< double > m_chip_vector2
Definition: TRT_StrawNeighbourSvc.h:94
TRT_ID.h
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
TRT_StrawNeighbourSvc::getSocket
void getSocket(Identifier offlineID, int &socket)
Definition: TRT_StrawNeighbourSvc.cxx:418
IIOVRegistrationSvc.h
This is an interface to a tool used to register conditions objects in the Interval of Validity (IOV) ...
TRT_StrawNeighbourSvc::m_m3
std::vector< unsigned int > m_m3
Definition: TRT_StrawNeighbourSvc.h:87
DecodeVersionKey::node
const std::string & node() const
Return the version node.
Definition: DecodeVersionKey.cxx:99
ExpandedIdentifier.h
dummy2
std::pair< HWIdentifier, LArBadFeb > dummy2
Definition: LArBadChannelDBToolsDict.h:18
TRT_StrawNeighbourSvc::m_pad_to_straw
std::vector< std::vector< std::vector< int > > > m_pad_to_straw
Definition: TRT_StrawNeighbourSvc.h:89
TRT_StrawNeighbourSvc::m_chip_to_straw
std::vector< std::vector< std::vector< int > > > m_chip_to_straw
Definition: TRT_StrawNeighbourSvc.h:91
TRT_StrawNeighbourSvc::getPad
void getPad(Identifier offlineID, int &pad)
public methods
Definition: TRT_StrawNeighbourSvc.cxx:591
TRT_StrawNeighbourSvc::getStrawsFromPad
void getStrawsFromPad(Identifier offlineID, std::vector< Identifier > &neighbourIDs)
Definition: TRT_StrawNeighbourSvc.cxx:633
TRT_StrawNeighbourSvc::~TRT_StrawNeighbourSvc
virtual ~TRT_StrawNeighbourSvc()
destructor
TRT_StrawNeighbourSvc::m_chipConversionSocketToChip_m3
int m_chipConversionSocketToChip_m3[51]
Definition: TRT_StrawNeighbourSvc.h:101
TRT_StrawNeighbourSvc::getFirstStrawFromChip
TRTCond::ExpandedIdentifier getFirstStrawFromChip(Identifier offlineID)
Definition: TRT_StrawNeighbourSvc.cxx:744
TRT_StrawNeighbourSvc::TRT_StrawNeighbourSvc
TRT_StrawNeighbourSvc(const std::string &name, ISvcLocator *pSvcLocator)
constructor
Definition: TRT_StrawNeighbourSvc.cxx:43
StrawStatusMultChanContainer.h
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
TRT_StrawNeighbourSvc::m_endcapChipMapC8
int m_endcapChipMapC8[12]
Definition: TRT_StrawNeighbourSvc.h:107
TRT_StrawNeighbourSvc::m_endcapChipMapA8
int m_endcapChipMapA8[12]
Definition: TRT_StrawNeighbourSvc.h:105
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TRT_StrawNeighbourSvc::finalize
virtual StatusCode finalize()
tool finalize
Definition: TRT_StrawNeighbourSvc.cxx:334
TRT::Hit::side
@ side
Definition: HitInfo.h:83
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
TRT_StrawNeighbourSvc::m_chipConversionChipToSocket_m3
int m_chipConversionChipToSocket_m3[51]
Definition: TRT_StrawNeighbourSvc.h:102
TRT_ID::straw
int straw(const Identifier &id) const
Definition: TRT_ID.h:902
IRDBAccessSvc.h
Definition of the abstract IRDBAccessSvc interface.
TRT_StrawNeighbourSvc::getStrawsFromChip
void getStrawsFromChip(Identifier offlineID, std::vector< Identifier > &neighbourIDs)
Definition: TRT_StrawNeighbourSvc.cxx:676
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
IRDBAccessSvc
IRDBAccessSvc is an abstract interface to the athena service that provides the following functionalit...
Definition: IRDBAccessSvc.h:45
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthService
Definition: AthService.h:32
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
dummy22
std::pair< HWIdentifier32, LArBadFeb > dummy22
Definition: LArBadChannelDBToolsDict.h:19
DecodeVersionKey
This is a helper class to query the version tags from GeoModelSvc and determine the appropriate tag a...
Definition: DecodeVersionKey.h:18
TRT_StrawNeighbourSvc::m_trtid
const TRT_ID * m_trtid
Definition: TRT_StrawNeighbourSvc.h:73
TRT_StrawNeighbourSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition: TRT_StrawNeighbourSvc.h:72
DecodeVersionKey::tag
const std::string & tag() const
Return version tag.
Definition: DecodeVersionKey.cxx:93
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
TRT_StrawNeighbourSvc::getRunningNumbering
int getRunningNumbering(Identifier offlineID)
Definition: TRT_StrawNeighbourSvc.cxx:388
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
dummy1
std::pair< bool, LArBadChannel::LArBadChannelEnum::ProblemType > dummy1
Definition: LArBadChannelDBToolsDict.h:16
TRT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: TRT_ID.h:866
TRT_ID::straw_layer
int straw_layer(const Identifier &id) const
Definition: TRT_ID.h:893
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:884
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
TRT_StrawNeighbourSvc.h
Service to information on straws electronic grouping Developed for the study of noise correlations be...
TRT_StrawNeighbourSvc::chipToBoardEndCap
static int chipToBoardEndCap(int chip)
Definition: TRT_StrawNeighbourSvc.cxx:840
TRT_StrawNeighbourSvc::m_layer_m2_acc
std::vector< unsigned int > m_layer_m2_acc
Definition: TRT_StrawNeighbourSvc.h:81
PathResolver.h
remainder
std::vector< std::string > remainder(const std::vector< std::string > &v1, const std::vector< std::string > &v2)
list of entries in a vector that are not in another
Definition: compareFlatTrees.cxx:44
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TRTCond::ExpandedIdentifier::STRAW
@ STRAW
Definition: InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRT_StrawNeighbourSvc::m_layer_m3
std::vector< unsigned int > m_layer_m3
Definition: TRT_StrawNeighbourSvc.h:82
TRT_StrawNeighbourSvc::m_chip_vector3
std::vector< double > m_chip_vector3
Definition: TRT_StrawNeighbourSvc.h:95
TRT_StrawNeighbourSvc::m_m1
std::vector< unsigned int > m_m1
Definition: TRT_StrawNeighbourSvc.h:85
TRT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: TRT_ID.h:875
DecodeVersionKey.h
TRT_StrawNeighbourSvc::m_layer_m1_acc
std::vector< unsigned int > m_layer_m1_acc
Definition: TRT_StrawNeighbourSvc.h:79
TRT_StrawNeighbourSvc::getAtlasIdentifier
void getAtlasIdentifier(int strawnumber, Identifier &outputID, Identifier inputID)
Definition: TRT_StrawNeighbourSvc.cxx:344
TRT_StrawNeighbourSvc::m_chipConversionSocketToChip_m1
int m_chipConversionSocketToChip_m1[22]
Definition: TRT_StrawNeighbourSvc.h:97
IRDBRecord.h
Definition of the abstract IRDBRecord interface.
TRT_StrawNeighbourSvc::m_TripletOrientation
int m_TripletOrientation[2][32]
Definition: TRT_StrawNeighbourSvc.h:76
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
IRDBRecord
IRDBRecord is one record in the IRDBRecordset object.
Definition: IRDBRecord.h:27
TRT_StrawNeighbourSvc::m_chip_vector1
std::vector< double > m_chip_vector1
Definition: TRT_StrawNeighbourSvc.h:93
AthCommonMsg< Service >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
dummy3
std::vector< std::pair< HWIdentifier, LArBadFeb > > dummy3
Definition: LArBadChannelDBToolsDict.h:21
TRT_StrawNeighbourSvc::chipToBoardBarrel
int chipToBoardBarrel(int chip, int layer)
Definition: TRT_StrawNeighbourSvc.cxx:784
TRT_StrawNeighbourSvc::m_m2
std::vector< unsigned int > m_m2
Definition: TRT_StrawNeighbourSvc.h:86
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
IRDBRecord::getDouble
virtual double getDouble(const std::string &fieldName) const =0
Get double field value.
IRDBRecordset.h
Definition of the abstract IRDBRecordset interface.
TRTCond::ExpandedIdentifier
Identifier for TRT detector elements in the conditions code.
Definition: InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:30
IGeoModelSvc.h
StoreGateSvc.h
TRT_StrawNeighbourSvc::getRing
int getRing(const Identifier &id)
Definition: TRT_StrawNeighbourSvc.cxx:823
TRT_StrawNeighbourSvc::m_layer_m1
std::vector< unsigned int > m_layer_m1
Definition: TRT_StrawNeighbourSvc.h:78
TRT_ID::straw_id
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition: TRT_ID.h:581
TRT_StrawNeighbourSvc::m_chipConversionSocketToChip_m2
int m_chipConversionSocketToChip_m2[34]
Definition: TRT_StrawNeighbourSvc.h:99