ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
TrigL2MuonSA::RpcRoadDefiner Class Reference

#include <RpcRoadDefiner.h>

Inheritance diagram for TrigL2MuonSA::RpcRoadDefiner:
Collaboration diagram for TrigL2MuonSA::RpcRoadDefiner:

Public Member Functions

 RpcRoadDefiner (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual StatusCode initialize () override
 
StatusCode defineRoad (const LVL1::RecMuonRoI *p_roi, const bool insideOut, TrigL2MuonSA::MuonRoad &muonRoad, TrigL2MuonSA::RpcHits &rpcHits, const TrigL2MuonSA::RpcLayerHits &rpcLayerHits, const ToolHandle< RpcPatFinder > *rpcPatFinder, TrigL2MuonSA::RpcFitResult &rpcFitResult, double roiEtaMinLow, double roiEtaMaxLow, double roiEtaMinHigh, double roiEtaMaxHigh) const
 
StatusCode defineRoad (const xAOD::MuonRoI *p_roi, const bool insideOut, TrigL2MuonSA::MuonRoad &muonRoad, TrigL2MuonSA::RpcHits &rpcHits, const TrigL2MuonSA::RpcLayerHits &rpcLayerHits, const ToolHandle< RpcPatFinder > *rpcPatFinder, TrigL2MuonSA::RpcFitResult &rpcFitResult, double roiEtaMinLow, double roiEtaMaxLow, double roiEtaMinHigh, double roiEtaMaxHigh) const
 
void setRoadWidthForFailure (double rWidth_RPC_Failed)
 
void setRpcGeometry (bool use_rpc)
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

float f (float x, float c0, float c1, float c2, float c3) const
 
float fp (float x, float c33, float c22, float c1) const
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

double m_rWidth_RPC_Failed {0}
 
bool m_use_rpc {true}
 
ToolHandle< IRegSelToolm_regionSelector {this, "RegionSelectionTool", "RegSelTool/RegSelTool_MDT", "MDT Region Selector Tool"}
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 30 of file RpcRoadDefiner.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ RpcRoadDefiner()

TrigL2MuonSA::RpcRoadDefiner::RpcRoadDefiner ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 14 of file RpcRoadDefiner.cxx.

16  :
18 {
19 }

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ defineRoad() [1/2]

StatusCode TrigL2MuonSA::RpcRoadDefiner::defineRoad ( const LVL1::RecMuonRoI p_roi,
const bool  insideOut,
TrigL2MuonSA::MuonRoad muonRoad,
TrigL2MuonSA::RpcHits rpcHits,
const TrigL2MuonSA::RpcLayerHits rpcLayerHits,
const ToolHandle< RpcPatFinder > *  rpcPatFinder,
TrigL2MuonSA::RpcFitResult rpcFitResult,
double  roiEtaMinLow,
double  roiEtaMaxLow,
double  roiEtaMinHigh,
double  roiEtaMaxHigh 
) const

Definition at line 37 of file RpcRoadDefiner.cxx.

48 {
49 
50  const double ZERO_LIMIT = 1e-5;
51 
52  const int N_LAYER = 5; // 0: inner, 1: middle, 2: outer 4: BME 5: BMG
53  const int N_SECTOR = 2; // 0: normal, 1:overlap
54 
55  if (m_use_rpc && !insideOut) {
56  double aw[3]={0.,0.,0.};
57  double bw[3]={0.,0.,0.};
58  unsigned int rpc_pattern;
59  if ( (*rpcPatFinder)->findPatternEta(aw, bw, rpc_pattern, rpcLayerHits) ) {
60  rpcFitResult.isSuccess = true;
61  rpcFitResult.offset_inner = bw[0];
62  rpcFitResult.offset_middle = bw[1];
63  rpcFitResult.offset_outer = bw[2];
64  rpcFitResult.slope_inner = 1.0/aw[0];
65  rpcFitResult.slope_middle = 1.0/aw[1];
66  rpcFitResult.slope_outer = 1.0/aw[2];
67 
68  for(int i=0;i<3;i++){
69  if(std::abs(1.0/aw[i]) <= ZERO_LIMIT) rpcFitResult.isSuccess = false;
70  }
71  } else {
72  rpcFitResult.isSuccess = false;
73  }
74 
75  double phi_middle;
76  double phi_outer;
77  unsigned int phi_pattern;
78  if ( (*rpcPatFinder)->findPatternPhi(phi_middle, phi_outer, phi_pattern, rpcLayerHits)) {
79  rpcFitResult.phi = phi_middle;
80  rpcFitResult.phi_middle = phi_middle;
81  rpcFitResult.phi_outer = phi_outer;
82  } else {
83  rpcFitResult.phi = p_roi->phi();
84  }
85  } else {
86  ATH_MSG_DEBUG("Skip rpcPatFinder");
87  }
88 
89  // RPC data is not available -> use RoI
90 
91  muonRoad.isEndcap = false;
92  if(!insideOut) {
93  muonRoad.phiMiddle = rpcFitResult.phi;
94  } else {
95  muonRoad.phiMiddle = muonRoad.extFtfMiddlePhi;
96  rpcFitResult.phi = muonRoad.extFtfMiddlePhi;
97  rpcFitResult.phi_middle = muonRoad.extFtfMiddlePhi;
98  rpcFitResult.phi_outer = muonRoad.extFtfMiddlePhi;
99  }
100  muonRoad.phiRoI = p_roi->phi();
101  muonRoad.side = (p_roi->phi()<0.)? 0 : 1;
102  muonRoad.LargeSmall = ((p_roi->sectorID() + 1)/2 )%2;
103 
104  const int PhysicsSector = ((p_roi->sectorID() + 1)/4 )%8 + 1;
105 
106  int special = 0;
107  if (muonRoad.LargeSmall == 0 && (PhysicsSector == 6 || PhysicsSector == 8 ))
108  special = 1;
109  if (muonRoad.LargeSmall == 1 && (PhysicsSector == 6 || PhysicsSector == 7 ))
110  special = 1;
111  muonRoad.Special = special;
112 
113  for (int i_station=0; i_station<6; i_station++) {
114  for (int i_layer=0; i_layer<8; i_layer++) {
115  if(!rpcFitResult.isSuccess) {
116  if (!insideOut){
117  if (i_station==0) muonRoad.rWidth[i_station][i_layer] = 500;//for inner
118  else if (i_station==1) muonRoad.rWidth[i_station][i_layer] = 650;//for middle
119  else if (i_station==2) muonRoad.rWidth[i_station][i_layer] = 800;//for outer
120  else if (i_station==3) muonRoad.rWidth[i_station][i_layer] = 500;//EndcapInner
121  else if (i_station==4) muonRoad.rWidth[9][i_layer] = 650;//BME
122  else if (i_station==5) muonRoad.rWidth[10][i_layer] = 650;//BMG
123  else muonRoad.rWidth[i_station][i_layer] = m_rWidth_RPC_Failed;
124  } else {
125  if (i_station==0) muonRoad.rWidth[i_station][i_layer] = 250;//for inner
126  else if (i_station==1) muonRoad.rWidth[i_station][i_layer] = 400;//for middle
127  else if (i_station==2) muonRoad.rWidth[i_station][i_layer] = 600;//for outer
128  else if (i_station==3) muonRoad.rWidth[i_station][i_layer] = 300;//EndcapInner
129  else if (i_station==4) muonRoad.rWidth[9][i_layer] = 400;//BME
130  else if (i_station==5) muonRoad.rWidth[10][i_layer] = 400;//BMG
131  else muonRoad.rWidth[i_station][i_layer] = 400;
132  }
133  }
134  else {
135  if (i_station==0) muonRoad.rWidth[i_station][i_layer] = 400;//for inner
136  else if (i_station==1) muonRoad.rWidth[i_station][i_layer] = 200;//for middle
137  else if (i_station==2) muonRoad.rWidth[i_station][i_layer] = 400;//for outer
138  else if (i_station==3) muonRoad.rWidth[i_station][i_layer] = 400;//EndcapInner
139  else if (i_station==4) muonRoad.rWidth[9][i_layer] = m_rWidth_RPC_Failed;//BME
140  else if (i_station==5) muonRoad.rWidth[10][i_layer] = m_rWidth_RPC_Failed;//BMG
141  else muonRoad.rWidth[i_station][i_layer] = m_rWidth_RPC_Failed;
142  }
143  }
144  }
145 
146  int sector_trigger = 99;
147  int sector_overlap = 99;
148  std::vector<Identifier> stationList;
149  std::vector<IdentifierHash> mdtHashList;
150 
151  // get sector_trigger and sector_overlap by using the region selector
152  IdContext context = m_idHelperSvc->mdtIdHelper().module_context();
153 
154  double etaMin = p_roi->eta()-.02;
155  double etaMax = p_roi->eta()+.02;
156  double phiMin = muonRoad.phiMiddle-.01;
157  double phiMax = muonRoad.phiMiddle+.01;
158  if(phiMax > M_PI) phiMax -= M_PI*2.;
159  if(phiMin < M_PI*-1) phiMin += M_PI*2.;
160 
161  TrigRoiDescriptor* roi = new TrigRoiDescriptor( p_roi->eta(), etaMin, etaMax, p_roi->phi(), phiMin, phiMax );
162 
163  const IRoiDescriptor* iroi = (IRoiDescriptor*) roi;
164 
165  if (iroi) m_regionSelector->HashIDList(*iroi, mdtHashList);
166  else {
167  TrigRoiDescriptor fullscan_roi( true );
168  m_regionSelector->HashIDList(fullscan_roi, mdtHashList);
169  }
170 
171  if(roi) delete roi;
172 
173  for( const IdentifierHash& hash : mdtHashList){
174 
175  Identifier id;
176  const int convert = m_idHelperSvc->mdtIdHelper().get_id(hash, id, &context);
177 
178  if(convert!=0) ATH_MSG_ERROR("problem converting hash list to id");
179 
180  muonRoad.stationList.push_back(id);
181  const int stationPhi = m_idHelperSvc->mdtIdHelper().stationPhi(id);
182  std::string name = m_idHelperSvc->mdtIdHelper().stationNameString(m_idHelperSvc->mdtIdHelper().stationName(id));
183 
184  if ( name[1]=='M' && name[2]=='E' ) continue;//exclude BME
185  if ( name[1]=='M' && name[2]=='G' ) continue;//exclude BMG
186 
187  int LargeSmall = 0;
188  if(name[2]=='S' || name[2]=='F' || name[2]=='G' ) LargeSmall = 1;
189  const int sector = (stationPhi-1)*2 + LargeSmall;
190  if(sector_trigger == 99)
191  sector_trigger = sector;
192  else if(sector_trigger != sector)
193  sector_overlap = sector;
194  }
195 
196  const int MDT_tr = (PhysicsSector - 1)*2 + muonRoad.LargeSmall;
197  if (MDT_tr == sector_overlap) {
198  sector_overlap = sector_trigger;
199  sector_trigger = MDT_tr;
200  }
201 
202  muonRoad.MDT_sector_trigger = sector_trigger;
203  muonRoad.MDT_sector_overlap = sector_overlap;
204 
205  if (rpcFitResult.isSuccess) {
206  for (int i_sector=0; i_sector<N_SECTOR; i_sector++) {
207  muonRoad.aw[0][i_sector] = rpcFitResult.slope_inner;
208  muonRoad.bw[0][i_sector] = rpcFitResult.offset_inner;
209  muonRoad.aw[1][i_sector] = rpcFitResult.slope_middle;
210  muonRoad.bw[1][i_sector] = rpcFitResult.offset_middle;
211  muonRoad.aw[2][i_sector] = rpcFitResult.slope_outer;
212  muonRoad.bw[2][i_sector] = rpcFitResult.offset_outer;
213  muonRoad.aw[3][i_sector] = rpcFitResult.slope_inner; // Endcap Inner
214  muonRoad.bw[3][i_sector] = rpcFitResult.offset_inner;
215  muonRoad.aw[9][i_sector] = rpcFitResult.slope_middle;//BME
216  muonRoad.bw[9][i_sector] = rpcFitResult.offset_middle;
217  muonRoad.aw[10][i_sector] = rpcFitResult.slope_middle;//BMG
218  muonRoad.bw[10][i_sector] = rpcFitResult.offset_middle;
219  }
220 
221  } else {
222  const double roiEtaLow = (roiEtaMinLow + roiEtaMaxLow) * 0.5;
223  const double roiEtaHigh = (roiEtaMinHigh + roiEtaMaxHigh) * 0.5;
224  const double thetaLow = std::atan(std::exp(-std::abs(roiEtaLow)))*2.;
225  const double thetaHigh = std::atan(std::exp(-std::abs(roiEtaHigh)))*2.;
226  const double awLow = (std::abs(roiEtaLow) > ZERO_LIMIT)? std::tan(thetaLow)*(std::abs(roiEtaLow)/roiEtaLow): 0.;
227  const double awHigh = (std::abs(roiEtaHigh) > ZERO_LIMIT)? std::tan(thetaHigh)*(std::abs(roiEtaHigh)/roiEtaHigh): 0.;
228 
229  for (int i_station=0; i_station<N_LAYER; i_station++) {
230  for (int i_sector=0; i_sector<N_SECTOR; i_sector++) {
231  muonRoad.aw[i_station][i_sector] = awLow;
232  muonRoad.bw[i_station][i_sector] = 0;
233  if (i_station==2) muonRoad.aw[i_station][i_sector] = awHigh;
234  if (i_station==3) muonRoad.aw[i_station][i_sector] = awLow; //EI
235  if (i_station==4) muonRoad.aw[9][i_sector] = awLow; //BME
236  if (i_station==5) muonRoad.aw[10][i_sector] = awLow; //BMG
237  }
238  }
239  }
240 
241  if (insideOut) {
242  for (int i_sector=0; i_sector<N_SECTOR; i_sector++) {
243  ATH_MSG_DEBUG("Use aw_ftf and bw_ftf as aw and bw");
244  muonRoad.aw[0][i_sector] = muonRoad.aw_ftf[0][0];
245  muonRoad.bw[0][i_sector] = muonRoad.bw_ftf[0][0];
246  muonRoad.aw[1][i_sector] = muonRoad.aw_ftf[1][0];
247  muonRoad.bw[1][i_sector] = muonRoad.bw_ftf[1][0];
248  muonRoad.aw[2][i_sector] = muonRoad.aw_ftf[2][0];
249  muonRoad.bw[2][i_sector] = muonRoad.bw_ftf[2][0];
250  muonRoad.aw[3][i_sector] = muonRoad.aw_ftf[3][0]; // Endcap Inner
251  muonRoad.bw[3][i_sector] = muonRoad.bw_ftf[3][0];
252  muonRoad.aw[9][i_sector] = muonRoad.aw_ftf[9][0];//BME
253  muonRoad.bw[9][i_sector] = muonRoad.bw_ftf[9][0];
254  muonRoad.aw[10][i_sector] = muonRoad.aw_ftf[10][0];//BMG
255  muonRoad.bw[10][i_sector] = muonRoad.bw_ftf[10][0];
256  }
257  }
258  ATH_MSG_DEBUG("muonRoad.phiMiddle: " << muonRoad.phiMiddle);
259 
260  return StatusCode::SUCCESS;
261 }

◆ defineRoad() [2/2]

StatusCode TrigL2MuonSA::RpcRoadDefiner::defineRoad ( const xAOD::MuonRoI p_roi,
const bool  insideOut,
TrigL2MuonSA::MuonRoad muonRoad,
TrigL2MuonSA::RpcHits rpcHits,
const TrigL2MuonSA::RpcLayerHits rpcLayerHits,
const ToolHandle< RpcPatFinder > *  rpcPatFinder,
TrigL2MuonSA::RpcFitResult rpcFitResult,
double  roiEtaMinLow,
double  roiEtaMaxLow,
double  roiEtaMinHigh,
double  roiEtaMaxHigh 
) const

Definition at line 266 of file RpcRoadDefiner.cxx.

277 {
278 
279  const double ZERO_LIMIT = 1e-5;
280 
281  const int N_LAYER = 5; // 0: inner, 1: middle, 2: outer 4: BME 5: BMG
282  const int N_SECTOR = 2; // 0: normal, 1:overlap
283 
284  if (m_use_rpc && !insideOut) {
285  double aw[3]={0.,0.,0.};
286  double bw[3]={0.,0.,0.};
287  unsigned int rpc_pattern;
288  if ( (*rpcPatFinder)->findPatternEta(aw, bw, rpc_pattern, rpcLayerHits) ) {
289  rpcFitResult.isSuccess = true;
290  rpcFitResult.offset_inner = bw[0];
291  rpcFitResult.offset_middle = bw[1];
292  rpcFitResult.offset_outer = bw[2];
293  rpcFitResult.slope_inner = 1.0/aw[0];
294  rpcFitResult.slope_middle = 1.0/aw[1];
295  rpcFitResult.slope_outer = 1.0/aw[2];
296 
297  for(int i=0;i<3;i++){
298  if(std::abs(1.0/aw[i]) <= ZERO_LIMIT) rpcFitResult.isSuccess = false;
299  }
300  } else {
301  rpcFitResult.isSuccess = false;
302  }
303 
304  double phi_middle;
305  double phi_outer;
306  unsigned int phi_pattern;
307  if ( (*rpcPatFinder)->findPatternPhi(phi_middle, phi_outer, phi_pattern, rpcLayerHits)) {
308  rpcFitResult.phi = phi_middle;
309  rpcFitResult.phi_middle = phi_middle;
310  rpcFitResult.phi_outer = phi_outer;
311  } else {
312  rpcFitResult.phi = p_roi->phi();
313  }
314  } else {
315  ATH_MSG_DEBUG("Skip rpcPatFinder");
316  }
317 
318  // RPC data is not available -> use RoI
319 
320  muonRoad.isEndcap = false;
321  if(!insideOut) {
322  muonRoad.phiMiddle = rpcFitResult.phi;
323  } else {
324  muonRoad.phiMiddle = muonRoad.extFtfMiddlePhi;
325  rpcFitResult.phi = muonRoad.extFtfMiddlePhi;
326  rpcFitResult.phi_middle = muonRoad.extFtfMiddlePhi;
327  rpcFitResult.phi_outer = muonRoad.extFtfMiddlePhi;
328  }
329  muonRoad.phiRoI = p_roi->phi();
330  muonRoad.side = (p_roi->phi()<0.)? 0 : 1;
331  muonRoad.LargeSmall = ((p_roi->getSectorID() + 1)/2 )%2;
332 
333  const int PhysicsSector = ((p_roi->getSectorID() + 1)/4 )%8 + 1;
334 
335  int special = 0;
336  if (muonRoad.LargeSmall == 0 && (PhysicsSector == 6 || PhysicsSector == 8 ))
337  special = 1;
338  if (muonRoad.LargeSmall == 1 && (PhysicsSector == 6 || PhysicsSector == 7 ))
339  special = 1;
340  muonRoad.Special = special;
341 
342  for (int i_station=0; i_station<6; i_station++) {
343  for (int i_layer=0; i_layer<8; i_layer++) {
344  if(!rpcFitResult.isSuccess) {
345  if (!insideOut){
346  if (i_station==0) muonRoad.rWidth[i_station][i_layer] = 500;//for inner
347  else if (i_station==1) muonRoad.rWidth[i_station][i_layer] = 650;//for middle
348  else if (i_station==2) muonRoad.rWidth[i_station][i_layer] = 800;//for outer
349  else if (i_station==3) muonRoad.rWidth[i_station][i_layer] = 500;//EndcapInner
350  else if (i_station==4) muonRoad.rWidth[9][i_layer] = 650;//BME
351  else if (i_station==5) muonRoad.rWidth[10][i_layer] = 650;//BMG
352  else muonRoad.rWidth[i_station][i_layer] = m_rWidth_RPC_Failed;
353  } else {
354  if (i_station==0) muonRoad.rWidth[i_station][i_layer] = 250;//for inner
355  else if (i_station==1) muonRoad.rWidth[i_station][i_layer] = 400;//for middle
356  else if (i_station==2) muonRoad.rWidth[i_station][i_layer] = 600;//for outer
357  else if (i_station==3) muonRoad.rWidth[i_station][i_layer] = 300;//EndcapInner
358  else if (i_station==4) muonRoad.rWidth[9][i_layer] = 400;//BME
359  else if (i_station==5) muonRoad.rWidth[10][i_layer] = 400;//BMG
360  else muonRoad.rWidth[i_station][i_layer] = 400;
361  }
362  }
363  else {
364  if (i_station==0) muonRoad.rWidth[i_station][i_layer] = 400;//for inner
365  else if (i_station==1) muonRoad.rWidth[i_station][i_layer] = 200;//for middle
366  else if (i_station==2) muonRoad.rWidth[i_station][i_layer] = 400;//for outer
367  else if (i_station==3) muonRoad.rWidth[i_station][i_layer] = 400;//EndcapInner
368  else if (i_station==4) muonRoad.rWidth[9][i_layer] = m_rWidth_RPC_Failed;//BME
369  else if (i_station==5) muonRoad.rWidth[10][i_layer] = m_rWidth_RPC_Failed;//BMG
370  else muonRoad.rWidth[i_station][i_layer] = m_rWidth_RPC_Failed;
371  }
372  }
373  }
374 
375  int sector_trigger = 99;
376  int sector_overlap = 99;
377  std::vector<Identifier> stationList;
378  std::vector<IdentifierHash> mdtHashList;
379 
380  // get sector_trigger and sector_overlap by using the region selector
381  IdContext context = m_idHelperSvc->mdtIdHelper().module_context();
382 
383  double etaMin = p_roi->eta()-.02;
384  double etaMax = p_roi->eta()+.02;
385  double phiMin = muonRoad.phiMiddle-.01;
386  double phiMax = muonRoad.phiMiddle+.01;
387  if(phiMax > M_PI) phiMax -= M_PI*2.;
388  if(phiMin < M_PI*-1) phiMin += M_PI*2.;
389 
390  TrigRoiDescriptor* roi = new TrigRoiDescriptor( p_roi->eta(), etaMin, etaMax, p_roi->phi(), phiMin, phiMax );
391 
392  const IRoiDescriptor* iroi = (IRoiDescriptor*) roi;
393 
394  if (iroi) m_regionSelector->HashIDList(*iroi, mdtHashList);
395  else {
396  TrigRoiDescriptor fullscan_roi( true );
397  m_regionSelector->HashIDList(fullscan_roi, mdtHashList);
398  }
399 
400  if(roi) delete roi;
401 
402  for( const IdentifierHash& hash : mdtHashList){
403 
404  Identifier id;
405  const int convert = m_idHelperSvc->mdtIdHelper().get_id(hash, id, &context);
406 
407  if(convert!=0) ATH_MSG_ERROR("problem converting hash list to id");
408 
409  muonRoad.stationList.push_back(id);
410  const int stationPhi = m_idHelperSvc->mdtIdHelper().stationPhi(id);
411  std::string name = m_idHelperSvc->mdtIdHelper().stationNameString(m_idHelperSvc->mdtIdHelper().stationName(id));
412 
413  if ( name[1]=='M' && name[2]=='E' ) continue;//exclude BME
414  if ( name[1]=='M' && name[2]=='G' ) continue;//exclude BMG
415 
416  int LargeSmall = 0;
417  if(name[2]=='S' || name[2]=='F' || name[2]=='G' ) LargeSmall = 1;
418  const int sector = (stationPhi-1)*2 + LargeSmall;
419  if(sector_trigger == 99)
420  sector_trigger = sector;
421  else if(sector_trigger != sector)
422  sector_overlap = sector;
423  }
424 
425  const int MDT_tr = (PhysicsSector - 1)*2 + muonRoad.LargeSmall;
426  if (MDT_tr == sector_overlap) {
427  sector_overlap = sector_trigger;
428  sector_trigger = MDT_tr;
429  }
430 
431  muonRoad.MDT_sector_trigger = sector_trigger;
432  muonRoad.MDT_sector_overlap = sector_overlap;
433 
434  if (rpcFitResult.isSuccess) {
435  for (int i_sector=0; i_sector<N_SECTOR; i_sector++) {
436  muonRoad.aw[0][i_sector] = rpcFitResult.slope_inner;
437  muonRoad.bw[0][i_sector] = rpcFitResult.offset_inner;
438  muonRoad.aw[1][i_sector] = rpcFitResult.slope_middle;
439  muonRoad.bw[1][i_sector] = rpcFitResult.offset_middle;
440  muonRoad.aw[2][i_sector] = rpcFitResult.slope_outer;
441  muonRoad.bw[2][i_sector] = rpcFitResult.offset_outer;
442  muonRoad.aw[3][i_sector] = rpcFitResult.slope_inner; // Endcap Inner
443  muonRoad.bw[3][i_sector] = rpcFitResult.offset_inner;
444  muonRoad.aw[9][i_sector] = rpcFitResult.slope_middle;//BME
445  muonRoad.bw[9][i_sector] = rpcFitResult.offset_middle;
446  muonRoad.aw[10][i_sector] = rpcFitResult.slope_middle;//BMG
447  muonRoad.bw[10][i_sector] = rpcFitResult.offset_middle;
448  }
449 
450  } else {
451  const double roiEtaLow = (roiEtaMinLow + roiEtaMaxLow) * 0.5;
452  const double roiEtaHigh = (roiEtaMinHigh + roiEtaMaxHigh) * 0.5;
453  const double thetaLow = std::atan(std::exp(-std::abs(roiEtaLow)))*2.;
454  const double thetaHigh = std::atan(std::exp(-std::abs(roiEtaHigh)))*2.;
455  const double awLow = (std::abs(roiEtaLow) > ZERO_LIMIT)? std::tan(thetaLow)*(std::abs(roiEtaLow)/roiEtaLow): 0.;
456  const double awHigh = (std::abs(roiEtaHigh) > ZERO_LIMIT)? std::tan(thetaHigh)*(std::abs(roiEtaHigh)/roiEtaHigh): 0.;
457 
458  for (int i_station=0; i_station<N_LAYER; i_station++) {
459  for (int i_sector=0; i_sector<N_SECTOR; i_sector++) {
460  muonRoad.aw[i_station][i_sector] = awLow;
461  muonRoad.bw[i_station][i_sector] = 0;
462  if (i_station==2) muonRoad.aw[i_station][i_sector] = awHigh;
463  if (i_station==3) muonRoad.aw[i_station][i_sector] = awLow; //EI
464  if (i_station==4) muonRoad.aw[9][i_sector] = awLow; //BME
465  if (i_station==5) muonRoad.aw[10][i_sector] = awLow; //BMG
466  }
467  }
468  }
469 
470  if (insideOut) {
471  for (int i_sector=0; i_sector<N_SECTOR; i_sector++) {
472  ATH_MSG_DEBUG("Use aw_ftf and bw_ftf as aw and bw");
473  muonRoad.aw[0][i_sector] = muonRoad.aw_ftf[0][0];
474  muonRoad.bw[0][i_sector] = muonRoad.bw_ftf[0][0];
475  muonRoad.aw[1][i_sector] = muonRoad.aw_ftf[1][0];
476  muonRoad.bw[1][i_sector] = muonRoad.bw_ftf[1][0];
477  muonRoad.aw[2][i_sector] = muonRoad.aw_ftf[2][0];
478  muonRoad.bw[2][i_sector] = muonRoad.bw_ftf[2][0];
479  muonRoad.aw[3][i_sector] = muonRoad.aw_ftf[3][0]; // Endcap Inner
480  muonRoad.bw[3][i_sector] = muonRoad.bw_ftf[3][0];
481  muonRoad.aw[9][i_sector] = muonRoad.aw_ftf[9][0];//BME
482  muonRoad.bw[9][i_sector] = muonRoad.bw_ftf[9][0];
483  muonRoad.aw[10][i_sector] = muonRoad.aw_ftf[10][0];//BMG
484  muonRoad.bw[10][i_sector] = muonRoad.bw_ftf[10][0];
485  }
486  }
487  ATH_MSG_DEBUG("muonRoad.phiMiddle: " << muonRoad.phiMiddle);
488 
489  return StatusCode::SUCCESS;
490 }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ f()

float TrigL2MuonSA::RpcRoadDefiner::f ( float  x,
float  c0,
float  c1,
float  c2,
float  c3 
) const
inlineprotected

Definition at line 83 of file RpcRoadDefiner.h.

84  {
85  return c0 + x * (c1 + x * (c2 + x * c3)); // faster
86  }

◆ fp()

float TrigL2MuonSA::RpcRoadDefiner::fp ( float  x,
float  c33,
float  c22,
float  c1 
) const
inlineprotected

Definition at line 90 of file RpcRoadDefiner.h.

91  {
92  return c1 + x * (c22 + x * c33); // faster
93  }

◆ initialize()

StatusCode TrigL2MuonSA::RpcRoadDefiner::initialize ( )
overridevirtual

Definition at line 24 of file RpcRoadDefiner.cxx.

25 {
26  ATH_CHECK(m_idHelperSvc.retrieve());
27 
28  ATH_CHECK(m_regionSelector.retrieve());
29  ATH_MSG_DEBUG("Retrieved the RegionSelector tool ");
30 
31  return StatusCode::SUCCESS;
32 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setRoadWidthForFailure()

void TrigL2MuonSA::RpcRoadDefiner::setRoadWidthForFailure ( double  rWidth_RPC_Failed)
inline

Definition at line 65 of file RpcRoadDefiner.h.

65 { m_rWidth_RPC_Failed = rWidth_RPC_Failed; };

◆ setRpcGeometry()

void TrigL2MuonSA::RpcRoadDefiner::setRpcGeometry ( bool  use_rpc)
inline

Definition at line 66 of file RpcRoadDefiner.h.

66 { m_use_rpc = use_rpc; };

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> TrigL2MuonSA::RpcRoadDefiner::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 77 of file RpcRoadDefiner.h.

◆ m_regionSelector

ToolHandle<IRegSelTool> TrigL2MuonSA::RpcRoadDefiner::m_regionSelector {this, "RegionSelectionTool", "RegSelTool/RegSelTool_MDT", "MDT Region Selector Tool"}
private

Definition at line 76 of file RpcRoadDefiner.h.

◆ m_rWidth_RPC_Failed

double TrigL2MuonSA::RpcRoadDefiner::m_rWidth_RPC_Failed {0}
private

Definition at line 73 of file RpcRoadDefiner.h.

◆ m_use_rpc

bool TrigL2MuonSA::RpcRoadDefiner::m_use_rpc {true}
private

Definition at line 74 of file RpcRoadDefiner.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
TrigL2MuonSA::MuonRoad::MDT_sector_overlap
int MDT_sector_overlap
Definition: MuonRoad.h:87
TrigL2MuonSA::N_SECTOR
constexpr int N_SECTOR
Definition: MuonRoad.h:16
Muon::nsw::STGTPSegments::moduleIDBits::stationPhi
constexpr uint8_t stationPhi
station Phi 1 to 8
Definition: NSWSTGTPDecodeBitmaps.h:129
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TrigL2MuonSA::RpcRoadDefiner::m_rWidth_RPC_Failed
double m_rWidth_RPC_Failed
Definition: RpcRoadDefiner.h:73
TrigL2MuonSA::RpcFitResult::phi
double phi
Definition: RpcFitResult.h:44
TrigL2MuonSA::MuonRoad::phiMiddle
double phiMiddle
Definition: MuonRoad.h:79
TrigL2MuonSA::N_LAYER
constexpr int N_LAYER
Definition: MuonRoad.h:17
TrigL2MuonSA::RpcRoadDefiner::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: RpcRoadDefiner.h:77
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TrigL2MuonSA::RpcFitResult::offset_middle
double offset_middle
Definition: RpcFitResult.h:53
TrigL2MuonSA::RpcRoadDefiner::m_regionSelector
ToolHandle< IRegSelTool > m_regionSelector
Definition: RpcRoadDefiner.h:76
extractSporadic.c1
c1
Definition: extractSporadic.py:134
TrigL2MuonSA::MuonRoad::bw
double bw[N_STATION][N_SECTOR]
Definition: MuonRoad.h:82
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
TrigL2MuonSA::MuonRoad::isEndcap
bool isEndcap
Definition: MuonRoad.h:72
xAOD::MuonRoI_v1::eta
float eta() const
The pseudorapidity ( ) of the muon candidate.
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
xAOD::etaMax
etaMax
Definition: HIEventShape_v2.cxx:46
TrigL2MuonSA::RpcFitResult::offset_inner
double offset_inner
Definition: RpcFitResult.h:49
TrigRoiDescriptor
nope - should be used for standalone also, perhaps need to protect the class def bits #ifndef XAOD_AN...
Definition: TrigRoiDescriptor.h:56
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TrigL2MuonSA::RpcFitResult::offset_outer
double offset_outer
Definition: RpcFitResult.h:57
LVL1::RecMuonRoI::eta
virtual double eta() const
returns eta coord of ROI
Definition: RecMuonRoI.h:117
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
x
#define x
TrigL2MuonSA::MuonRoad::aw
double aw[N_STATION][N_SECTOR]
Definition: MuonRoad.h:81
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
TrigL2MuonSA::MuonRoad::side
int side
Definition: MuonRoad.h:76
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
TrigL2MuonSA::MuonRoad::phiRoI
double phiRoI
Definition: MuonRoad.h:80
compileRPVLLRates_emergingFilterTest.c3
c3
Definition: compileRPVLLRates_emergingFilterTest.py:559
hotSpotInTAG.c0
c0
Definition: hotSpotInTAG.py:192
TrigL2MuonSA::MuonRoad::stationList
std::vector< Identifier > stationList
Definition: MuonRoad.h:100
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TrigL2MuonSA::RpcFitResult::slope_inner
double slope_inner
Definition: RpcFitResult.h:48
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
IRoiDescriptor
Describes the API of the Region of Ineterest geometry.
Definition: IRoiDescriptor.h:23
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TrigL2MuonSA::MuonRoad::MDT_sector_trigger
int MDT_sector_trigger
Definition: MuonRoad.h:86
TrigL2MuonSA::RpcFitResult::slope_middle
double slope_middle
Definition: RpcFitResult.h:52
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LVL1::RecMuonRoI::sectorID
unsigned int sectorID() const
returns sector ID ROI
Definition: RecMuonRoI.h:111
TrigL2MuonSA::RpcFitResult::phi_middle
double phi_middle
Definition: RpcFitResult.h:51
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
ZERO_LIMIT
const float ZERO_LIMIT
Definition: VP1TriggerHandleL2.cxx:37
TrigL2MuonSA::RpcFitResult::phi_outer
double phi_outer
Definition: RpcFitResult.h:55
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
LVL1::RecMuonRoI::phi
virtual double phi() const
returns phi coord of ROI
Definition: RecMuonRoI.h:114
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
TrigL2MuonSA::MuonRoad::bw_ftf
double bw_ftf[N_STATION][N_SECTOR]
Definition: MuonRoad.h:93
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
compileRPVLLRates.c2
c2
Definition: compileRPVLLRates.py:361
TrigL2MuonSA::RpcRoadDefiner::m_use_rpc
bool m_use_rpc
Definition: RpcRoadDefiner.h:74
TMVAToMVAUtils::convert
std::unique_ptr< MVAUtils::BDT > convert(TMVA::MethodBDT *bdt, bool isRegression=true, bool useYesNoLeaf=false)
Definition: TMVAToMVAUtils.h:114
TrigL2MuonSA::MuonRoad::LargeSmall
int LargeSmall
Definition: MuonRoad.h:77
TrigL2MuonSA::RpcFitResult::isSuccess
bool isSuccess
Definition: RpcFitResult.h:38
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
LArCellBinning.etaMin
etaMin
Definition: LArCellBinning.py:84
TrigL2MuonSA::MuonRoad::rWidth
double rWidth[N_STATION][N_LAYER]
Definition: MuonRoad.h:84
h
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
TrigL2MuonSA::MuonRoad::extFtfMiddlePhi
double extFtfMiddlePhi
Definition: MuonRoad.h:91
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
TrigL2MuonSA::RpcFitResult::slope_outer
double slope_outer
Definition: RpcFitResult.h:56
TrigL2MuonSA::MuonRoad::aw_ftf
double aw_ftf[N_STATION][N_SECTOR]
Definition: MuonRoad.h:92
TrigRoiDescriptor
Athena::TPCnvVers::Current TrigRoiDescriptor
Definition: TrigSteeringEventTPCnv.cxx:68
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
TrigL2MuonSA::MuonRoad::Special
int Special
Definition: MuonRoad.h:78
xAOD::MuonRoI_v1::getSectorID
int getSectorID() const
Get the sector ID number.
IdentifierHash
Definition: IdentifierHash.h:38
IdContext
class IdContext
Definition: IdContext.h:34
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
fitman.k
k
Definition: fitman.py:528
xAOD::MuonRoI_v1::phi
float phi() const
The azimuthal angle ( ) of the muon candidate.