32 updateBitMask( Run3 );
34 return StatusCode::SUCCESS;
46 <<
"Can not get SLBparameters "
47 <<
" roi word = " << std::hex <<
roiWord );
48 return StatusCode::FAILURE;
52 <<
"This roiWord is not of TGC" );
53 return StatusCode::FAILURE;
59 std::unique_ptr<TGCIdBase> w_asdout =
61 if (w_asdout ==
nullptr) {
63 <<
"Cannot get ASD out for Wire " );
64 return StatusCode::FAILURE;
67 std::unique_ptr<TGCIdBase> s_asdout =
69 if (s_asdout ==
nullptr) {
71 <<
"Cannot get ASD out for Strip " );
72 return StatusCode::FAILURE;
78 getWireInfo(w_eta,w_phi,wireId,std::move(w_asdout));
85 ATH_MSG_DEBUG(
"(eta,phi)=" <<
" (" << w_eta <<
","<< s_phi <<
")" );
86 ATH_MSG_DEBUG(
"channelId_eta=" << wireId <<
" channelId_phi=" << stripId );
95 data.set_phiMin(phiMin);
96 data.set_phiMax(phiMax);
98 return StatusCode::SUCCESS;
103 unsigned int & sectorID,
114 wireSLBId = block = 0;
121 unsigned int t_sectorID;
129 t_sectorID = getBitMaskValue(&
roiWord,ForwardSectorIDMask());
135 isOK = (t_sectorID<32) && (
roiNumber<64);
137 isOK = (t_sectorID<24) && (
roiNumber<64);
141 r = getBitMaskValue(&
roiWord,ForwardRMask());
142 phi = getBitMaskValue(&
roiWord,ForwardPhiMask());
147 int sec = (t_sectorID + 2 )%32;
149 sectorID = 3*oct + sec%3;
151 sectorID = (t_sectorID )%24;
154 }
else if (sysID>1) {
158 t_sectorID = getBitMaskValue(&
roiWord,EndcapSectorIDMask());
162 isOK = (t_sectorID<48) && (
roiNumber<148);
165 r = getBitMaskValue(&
roiWord,EndcapRMask());
166 phi = getBitMaskValue(&
roiWord,EndcapPhiMask());
171 sectorID = (t_sectorID + 2 )%48;
173 sectorID = (t_sectorID )%48;
178 <<
" roi word = " << std::hex <<
roiWord
179 <<
" sysID = " << std::dec << sysID );
185 <<
" roi word = " << std::hex <<
roiWord
186 <<
" sysID = " << std::dec << sysID
187 <<
" subSysID = " << std::dec << subSysID
189 <<
" trigger sectorID = " << std::dec << t_sectorID
190 <<
" sectorID = " << std::dec << sectorID
191 <<
" roiNumber = " << std::dec <<
roiNumber );
195 <<
" sysID = " << std::dec << sysID
196 <<
" subSysID = " << std::dec << subSysID
198 <<
" trigger sectorID = " << std::dec << t_sectorID
199 <<
" sectorID = " << std::dec << sectorID
200 <<
" roiNumber = " << std::dec <<
roiNumber );
207 unsigned int sectorID,
220 w_slbin.
setId(wireSLBId);
224 std::unique_ptr<TGCIdBase> w_asdout( tgcCabling->
getASDOutChannel (&w_slbin) );
229 unsigned int sectorID,
234 int stripOffset)
const
238 if(stripOffset==
DummyOffset) stripOffset = wireOffset;
247 w_slbin.
setId(wireSLBId);
251 std::unique_ptr<TGCIdBase> w_asdout( tgcCabling->
getASDOutChannel(&w_slbin) );
262 s_slbin.
setId(stripSLBId);
265 std::unique_ptr<TGCIdBase> s_asdout( tgcCabling->
getASDOutChannel (&s_slbin) );
271 std::unique_ptr<TGCIdBase> w_asdout,
278 int subsystemNumber = (w_asdout->
isAside())? 1 : -1;
279 int wireOrStrip = (w_asdout->
isStrip())? 1 : 0;
288 if (
status==
false)
return;
292 if(muonMgr==
nullptr){
293 ATH_MSG_ERROR(
"Null pointer to the read MuonDetectorManager conditions object.");
300 w_pos = tgcwire -> channelPos(wireId);
308 double r = w_pos.perp();
309 double phi = w_pos.phi();
320 std::unique_ptr<TGCIdBase> s_asdout,
328 int subsystemNumber = (s_asdout->
isAside())? 1 : -1;
329 int wireOrStrip = (s_asdout->
isStrip())? 1 : 0;
338 if (
status==
false)
return;
342 if(muonMgr==
nullptr){
343 ATH_MSG_ERROR(
"Null pointer to the read MuonDetectorManager conditions object.");
350 s_pos = tgcstrip -> channelPos(stripId);
359 double halfWidth = (shortWidth + longWidth)/4.;
360 double r = s_pos.perp();
361 double phi = s_pos.phi();
362 double dPhi = atan2(halfWidth,
r);
375 double & phiMin,
double & phiMax)
const
382 int wireSLBId, block;
383 double w_eta,w_phi,s_eta,s_phi;
386 for(
int i=0;
i<2;
i++) {
392 return StatusCode::FAILURE;
397 <<
"This roiWord is not of TGC" );
398 return StatusCode::FAILURE;
404 if(wireOffset==1) wireOffset = 3;
406 if(wireOffset==8) wireOffset = 4;
410 if(wireOffset==1) wireOffset = 4;
412 if(wireOffset==8) wireOffset = 5;
416 std::unique_ptr<TGCIdBase> w_asdout =
419 std::unique_ptr<TGCIdBase> s_asdout =
422 if (w_asdout!=
nullptr) {
428 if (s_asdout!=
nullptr) {
433 getStripInfo(s_eta,s_phi,stripId,std::move(s_asdout),stripEdge);
434 if (
i==0) phiMin=s_phi;
445 double temp=phiMin; phiMin=phiMax; phiMax=temp;
448 if(phiMin<-3. && phiMax>3.) {
451 double temp=phiMin; phiMin=phiMax; phiMax=temp;
454 return StatusCode::SUCCESS;
460 const unsigned int maxSubsystem = 2;
461 const unsigned int maxTriggerSectorEndcap = 48;
462 const unsigned int maxTriggerSectorForward = 24;
464 const unsigned int maxEndcapR = 37;
465 const unsigned int maxForwardR = 16;
467 const unsigned int maxEndcapPhi = 4;
468 const unsigned int maxForwardPhi = 4;
470 std::ofstream roi_map;
475 roi_map <<
"Endcap"<< std::endl;
476 roi_map <<
"# side sector roi etaMin etaMax phiMin phiMax"<< std::endl;
477 roi_map <<
"# ------------------------------------------------------------------------"<< std::endl;
479 for(
unsigned int sector=0;sector < maxTriggerSectorEndcap; sector++){
480 for (
unsigned int r=0;
r<maxEndcapR;
r++){
481 for (
unsigned int phi=0;
phi<maxEndcapPhi;
phi++){
482 int roi = (
r<<2) +
phi;
483 int sectorAddress = sector<<1;
484 sectorAddress |= 0x80;
485 sectorAddress |= (
side==0)?(0
x1):(0x0);
486 unsigned long int roiWord = (
m_useRun3Config) ? (roi+(sectorAddress<<21)) : ((roi<<2)+(sectorAddress<<14));
489 roi_map << std::setw(8) <<
side <<
" "
490 << std::setw(8) << sector <<
" "
491 << std::setw(8) << roi <<
" "
492 << std::setw(12) <<
data.etaMin() <<
" "
493 << std::setw(12) <<
data.etaMax() <<
" "
494 << std::setw(12) <<
data.phiMin() <<
" "
495 << std::setw(12) <<
data.phiMax() << std::endl;
500 roi_map <<
"Forward"<< std::endl;
501 roi_map <<
"# side sector roi etaMin etaMax phiMin phiMax"<< std::endl;
502 roi_map <<
"# ------------------------------------------------------------------------"<< std::endl;
504 for(
unsigned int sector=0;sector < maxTriggerSectorForward; sector++){
505 for (
unsigned int r=0;
r<maxForwardR;
r++){
506 for (
unsigned int phi=0;
phi<maxForwardPhi;
phi++){
507 int roi = (
r<<2) +
phi;
508 int sectorAddress = sector<<1;
509 sectorAddress |= 0x80;
510 sectorAddress |= (
side==0)?(0
x1):(0x0);
511 unsigned long int roiWord = (
m_useRun3Config) ? (roi+(sectorAddress<<21)) : ((roi<<2)+(sectorAddress<<14));
514 roi_map << std::setw(8) <<
side <<
" "
515 << std::setw(8) << sector <<
" "
516 << std::setw(8) << roi <<
" "
517 << std::setw(12) <<
data.etaMin() <<
" "
518 << std::setw(12) <<
data.etaMax() <<
" "
519 << std::setw(12) <<
data.phiMin() <<
" "
520 << std::setw(12) <<
data.phiMax() << std::endl;