Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
MuonTGC_Cabling::TGCCableInASD Class Reference

#include <TGCCableInASD.h>

Inheritance diagram for MuonTGC_Cabling::TGCCableInASD:
Collaboration diagram for MuonTGC_Cabling::TGCCableInASD:

Public Types

enum  CableType {
  NoCableType =-1, InASD, ASDToPP, InPP,
  PPToSLB, InSLB, SLBToHPB, HPBToSL,
  SLBToSSW, SSWToROD, MaxCableType
}
 

Public Member Functions

 TGCCableInASD (const std::string &filename)
 
virtual ~TGCCableInASD ()=default
 
virtual TGCChannelIdgetChannel (const TGCChannelId *channelId, bool orChannel=false) const
 
CableType getCableType (void) const
 

Protected Member Functions

virtual TGCModuleMapgetModuleIn (const TGCModuleId *) const
 
virtual TGCModuleMapgetModuleOut (const TGCModuleId *) const
 

Private Member Functions

 TGCCableInASD (void)
 
virtual TGCChannelIdgetChannelIn (const TGCChannelId *asdout, bool orChannel=false) const
 
virtual TGCChannelIdgetChannelOut (const TGCChannelId *asdin, bool orChannel=false) const
 

Private Attributes

std::array< std::array< std::unique_ptr< TGCDatabase >, TGCId::MaxModuleType >, TGCId::MaxRegionTypem_database {{{nullptr}}}
 
CableType m_type
 

Detailed Description

Definition at line 18 of file TGCCableInASD.h.

Member Enumeration Documentation

◆ CableType

Enumerator
NoCableType 
InASD 
ASDToPP 
InPP 
PPToSLB 
InSLB 
SLBToHPB 
HPBToSL 
SLBToSSW 
SSWToROD 
MaxCableType 

Definition at line 18 of file TGCCable.h.

Constructor & Destructor Documentation

◆ TGCCableInASD() [1/2]

MuonTGC_Cabling::TGCCableInASD::TGCCableInASD ( const std::string &  filename)

Definition at line 14 of file TGCCableInASD.cxx.

16  m_database[TGCId::Endcap][TGCId::WD] = std::make_unique<TGCDatabaseASDToPP>(filename,"EWD");
17  m_database[TGCId::Endcap][TGCId::WT] = std::make_unique<TGCDatabaseASDToPP>(filename,"EWT");
18  m_database[TGCId::Endcap][TGCId::SD] = std::make_unique<TGCDatabaseASDToPP>(filename,"ESD");
19  m_database[TGCId::Endcap][TGCId::ST] = std::make_unique<TGCDatabaseASDToPP>(filename,"EST");
20  m_database[TGCId::Endcap][TGCId::WI] = std::make_unique<TGCDatabaseASDToPP>(filename,"EWI");
21  m_database[TGCId::Endcap][TGCId::SI] = std::make_unique<TGCDatabaseASDToPP>(filename,"ESI");
22  m_database[TGCId::Forward][TGCId::WD] = std::make_unique<TGCDatabaseASDToPP>(filename,"FWD");
23  m_database[TGCId::Forward][TGCId::WT] = std::make_unique<TGCDatabaseASDToPP>(filename,"FWT");
24  m_database[TGCId::Forward][TGCId::SD] = std::make_unique<TGCDatabaseASDToPP>(filename,"FSD");
25  m_database[TGCId::Forward][TGCId::ST] = std::make_unique<TGCDatabaseASDToPP>(filename,"FST");
26  m_database[TGCId::Forward][TGCId::WI] = std::make_unique<TGCDatabaseASDToPP>(filename,"FWI");
27  m_database[TGCId::Forward][TGCId::SI] = std::make_unique<TGCDatabaseASDToPP>(filename,"FSI");
28 }

◆ ~TGCCableInASD()

virtual MuonTGC_Cabling::TGCCableInASD::~TGCCableInASD ( )
virtualdefault

◆ TGCCableInASD() [2/2]

MuonTGC_Cabling::TGCCableInASD::TGCCableInASD ( void  )
inlineprivate

Definition at line 27 of file TGCCableInASD.h.

27 {}

Member Function Documentation

◆ getCableType()

CableType MuonTGC_Cabling::TGCCable::getCableType ( void  ) const
inlineinherited

Definition at line 30 of file TGCCable.h.

30 { return m_type; }

◆ getChannel()

TGCChannelId * MuonTGC_Cabling::TGCCableInASD::getChannel ( const TGCChannelId channelId,
bool  orChannel = false 
) const
virtual

Definition at line 30 of file TGCCableInASD.cxx.

31  {
32  if(channelId){
33  if(channelId->getChannelIdType()==TGCChannelId::ChannelIdType::ASDIn)
34  return getChannelOut(channelId,orChannel);
35  if(channelId->getChannelIdType()==TGCChannelId::ChannelIdType::ASDOut)
36  return getChannelIn(channelId,orChannel);
37  }
38  return nullptr;
39 }

◆ getChannelIn()

TGCChannelId * MuonTGC_Cabling::TGCCableInASD::getChannelIn ( const TGCChannelId asdout,
bool  orChannel = false 
) const
privatevirtual

Reimplemented from MuonTGC_Cabling::TGCCable.

Definition at line 41 of file TGCCableInASD.cxx.

42  {
43  if(orChannel) return nullptr;
44  if(asdout->isValid()==false) return nullptr;
45 
46  TGCDatabase* databaseP = m_database[asdout->getRegionType()][asdout->getModuleType()].get();
47 
48  TGCChannelASDIn* asdin = nullptr;
49 
50  // sector ASDIn [1..48, 1..24], ASDOut [0..47, 0..23]
51  int sector;
52  if(asdout->isEndcap() && !asdout->isInner()){
53  sector = asdout->getSector()-1;
54  if(sector<=0) sector += TGCId::NUM_ENDCAP_SECTOR;
55  } else {
56  sector = asdout->getSector();
57  if(sector<=0) sector += TGCId::NUM_FORWARD_SECTOR;
58  }
59 
60  // chamber ASDIn [1(F),1,2,3,4,5(E)], ASDOut [0(F),4,3,2,1,0(E)]
61  int chamber;
62  if(asdout->isEndcap() && !asdout->isInner()){
63  chamber = 5-asdout->getChamber();
64  } else {
65  chamber = asdout->getChamber()+1;
66  }
67 
68  int channel=-1;
69  // channel ASDIn [1..32(S),1..n(W chamber)], ASDOut [0..31(S),n..0(W sector)]
70  if(asdout->isWire()){
71  // Endcap Triplet chamberId start from 1 in ASDOut
72  int dbChamber = asdout->getChamber();
73  if(asdout->isEndcap() && asdout->isTriplet()) dbChamber = dbChamber-1;
74  int indexIn[TGCDatabaseASDToPP::NIndexIn] =
75  {asdout->getLayer(), dbChamber, asdout->getChannel()};
76  int i = databaseP->getIndexDBIn(indexIn);
77  if(i<0) return nullptr;
78  channel = databaseP->getEntry(i,7)+1;
79  } else {
80  if(( asdout->isBackward() && asdout->isAside()) ||
81  (!asdout->isBackward() && asdout->isCside()))
82  channel = 32-asdout->getChannel();
83  else
84  channel = asdout->getChannel()+1;
85  }
86  if(channel==-1) return nullptr;
87 
88  asdin = new TGCChannelASDIn(asdout->getSideType(),
89  asdout->getSignalType(),
90  asdout->getRegionType(),
91  sector,
92  asdout->getLayer(),
93  chamber,
94  channel);
95 
96  return asdin;
97 }

◆ getChannelOut()

TGCChannelId * MuonTGC_Cabling::TGCCableInASD::getChannelOut ( const TGCChannelId asdin,
bool  orChannel = false 
) const
privatevirtual

Reimplemented from MuonTGC_Cabling::TGCCable.

Definition at line 99 of file TGCCableInASD.cxx.

100  {
101  if(orChannel) return nullptr;
102  if(asdin->isValid()==false) return nullptr;
103 
104  const bool asdinisEndcap = asdin->isEndcap();
105  const bool asdinisTriplet = asdin->isTriplet();
106  const int asdinLayer = asdin->getLayer();
107  const int asdinChannel = asdin->getChannel();
108 
109  TGCDatabase* databaseP = m_database[asdin->getRegionType()][asdin->getModuleType()].get();
110 
111  TGCChannelASDOut* asdout = nullptr;
112 
113  // sector ASDIn [1..48, 1..24], ASDOut [2..47.0.1, 1..23.0]
114  int sector;
115  if(asdin->isEndcap()) {
116  if(!asdin->isInner()){
117  // Endcap
118  sector = (asdin->getSector()+1) % TGCId::NUM_ENDCAP_SECTOR;
119  } else {
120  // EI
121  sector = (asdin->getSector()) % TGCId::NUM_INNER_SECTOR;
122  }
123  } else {
124  if(!asdin->isInner()){
125  // Forward
126  sector = (asdin->getSector()) % TGCId::NUM_FORWARD_SECTOR;
127  } else {
128  // FI
129  sector = (asdin->getSector()) % TGCId::NUM_INNER_SECTOR;
130  }
131  }
132 
133  // chamber ASDIn [1(F),1,2,3,4,5(E)], ASDOut [0(F),4,3,2,1,0(E)]
134  int chamber;
135  if(asdin->isEndcap()&&!asdin->isInner()){
136  chamber = 5-asdin->getChamber();
137  } else {
138  chamber = asdin->getChamber()-1;
139  }
140 
141  int channel=-1;
142  // channel ASDIn [1..32(S),1..n(W chamber)], ASDOut [0..31(S),n..0(W sector)]
143  if(asdin->isWire()){
144  const int MaxEntry = databaseP->getMaxEntry();
145  for(int i=0; i<MaxEntry; i++){
146  // Endcap Triplet chamberId start from 1 in ASDOut
147  int dbChamber = chamber;
148  if(asdinisEndcap&&asdinisTriplet)
149  dbChamber = dbChamber-1;
150 
151  int dbChannel = asdinChannel-1;
152  if(databaseP->getEntry(i,7)==dbChannel &&
153  databaseP->getEntry(i,1)==dbChamber &&
154  databaseP->getEntry(i,0)==asdinLayer) {
155  channel = databaseP->getEntry(i,6);
156  break;
157  }
158  }
159  } else {
160  // asdin->isBackward() can not be used because this method rely on sector number for asdout
161  bool is_Backward = false;
162  if(asdin->isEndcap()){
163  if(!asdin->isInner()) {
164  if(asdin->isAside()) is_Backward = (sector%2==1);
165  else is_Backward = (sector%2==0);
166  } else {
167  // EI
168  // Special case of EI11
169  if(sector == 15) {
170  if(asdin->isAside()) is_Backward = false;
171  else is_Backward = true;
172  } else if(sector == 16) {
173  if(asdin->isAside()) is_Backward = true;
174  else is_Backward = false;
175  } else {
176  // A-side phi0 F: phi1 F: phi2 B
177  // C-side phi0 B: phi1 B: phi2 F
178  if(asdin->isAside()) is_Backward = (sector%3==2);
179  else is_Backward = (sector%3!=2);
180  }
181  }
182  } else {
183  if(asdin->isAside()) is_Backward = true; //All Backward for A-side
184  }
185  if(( is_Backward && asdin->isAside()) ||
186  (!is_Backward && asdin->isCside()))
187  channel = 32-asdin->getChannel();
188  else
189  channel = asdin->getChannel()-1;
190  }
191  if(channel==-1) return nullptr;
192 
193  asdout = new TGCChannelASDOut(asdin->getSideType(),
194  asdin->getSignalType(),
195  asdin->getRegionType(),
196  sector,
197  asdin->getLayer(),
198  chamber,
199  channel);
200 
201  return asdout;
202 }

◆ getModuleIn()

virtual TGCModuleMap* MuonTGC_Cabling::TGCCable::getModuleIn ( const TGCModuleId ) const
inlineprotectedvirtualinherited

◆ getModuleOut()

virtual TGCModuleMap* MuonTGC_Cabling::TGCCable::getModuleOut ( const TGCModuleId ) const
inlineprotectedvirtualinherited

Member Data Documentation

◆ m_database

std::array<std::array<std::unique_ptr<TGCDatabase>, TGCId::MaxModuleType>, TGCId::MaxRegionType> MuonTGC_Cabling::TGCCableInASD::m_database {{{nullptr}}}
private

Definition at line 32 of file TGCCableInASD.h.

◆ m_type

CableType MuonTGC_Cabling::TGCCable::m_type
privateinherited

Definition at line 43 of file TGCCable.h.


The documentation for this class was generated from the following files:
MuonTGC_Cabling::TGCCable::NoCableType
@ NoCableType
Definition: TGCCable.h:18
MuonTGC_Cabling::TGCId::SI
@ SI
Definition: TGCId.h:47
MuonTGC_Cabling::TGCCable::InASD
@ InASD
Definition: TGCCable.h:19
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
MuonTGC_Cabling::TGCCableInASD::getChannelOut
virtual TGCChannelId * getChannelOut(const TGCChannelId *asdin, bool orChannel=false) const
Definition: TGCCableInASD.cxx:99
calibdata.chamber
chamber
Definition: calibdata.py:32
MuonTGC_Cabling::TGCCable::PPToSLB
@ PPToSLB
Definition: TGCCable.h:19
MuonTGC_Cabling::TGCChannelId::ChannelIdType::ASDOut
@ ASDOut
MuonTGC_Cabling::TGCDatabaseASDToPP::NIndexIn
@ NIndexIn
Definition: TGCDatabaseASDToPP.h:31
MuonTGC_Cabling::TGCChannelId::ChannelIdType::ASDIn
@ ASDIn
MuonTGC_Cabling::TGCId::NUM_INNER_SECTOR
static constexpr int NUM_INNER_SECTOR
Definition: TGCId.h:42
MuonTGC_Cabling::TGCCable::TGCCable
TGCCable(CableType type=NoCableType)
Definition: TGCCable.h:24
MuonTGC_Cabling::TGCCableInASD::getChannelIn
virtual TGCChannelId * getChannelIn(const TGCChannelId *asdout, bool orChannel=false) const
Definition: TGCCableInASD.cxx:41
MuonTGC_Cabling::TGCId::SD
@ SD
Definition: TGCId.h:47
MuonTGC_Cabling::TGCId::NUM_FORWARD_SECTOR
static constexpr int NUM_FORWARD_SECTOR
Definition: TGCId.h:41
MuonTGC_Cabling::TGCCable::ASDToPP
@ ASDToPP
Definition: TGCCable.h:19
MuonTGC_Cabling::TGCCable::InSLB
@ InSLB
Definition: TGCCable.h:19
lumiFormat.i
int i
Definition: lumiFormat.py:85
MuonTGC_Cabling::TGCCable::MaxCableType
@ MaxCableType
Definition: TGCCable.h:21
MuonTGC_Cabling::TGCId::WT
@ WT
Definition: TGCId.h:47
MuonTGC_Cabling::TGCCable::m_type
CableType m_type
Definition: TGCCable.h:43
MuonTGC_Cabling::TGCCableInASD::m_database
std::array< std::array< std::unique_ptr< TGCDatabase >, TGCId::MaxModuleType >, TGCId::MaxRegionType > m_database
Definition: TGCCableInASD.h:32
MuonTGC_Cabling::TGCCable::SLBToSSW
@ SLBToSSW
Definition: TGCCable.h:20
MuonTGC_Cabling::TGCId::WD
@ WD
Definition: TGCId.h:47
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
MuonTGC_Cabling::TGCId::Endcap
@ Endcap
Definition: TGCId.h:53
MuonTGC_Cabling::TGCId::WI
@ WI
Definition: TGCId.h:47
MuonTGC_Cabling::TGCCable::HPBToSL
@ HPBToSL
Definition: TGCCable.h:20
MuonTGC_Cabling::TGCCable::SSWToROD
@ SSWToROD
Definition: TGCCable.h:20
MuonTGC_Cabling::TGCId::ST
@ ST
Definition: TGCId.h:47
MuonTGC_Cabling::TGCCable::SLBToHPB
@ SLBToHPB
Definition: TGCCable.h:20
MuonTGC_Cabling::TGCId::NUM_ENDCAP_SECTOR
static constexpr int NUM_ENDCAP_SECTOR
Definition: TGCId.h:40
MuonTGC_Cabling::TGCCable::InPP
@ InPP
Definition: TGCCable.h:19
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
MuonTGC_Cabling::TGCId::Forward
@ Forward
Definition: TGCId.h:53