ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
NSWL1::StripSegmentTool Class Reference

interface for the StripTDS tools More...

#include <StripSegmentTool.h>

Inheritance diagram for NSWL1::StripSegmentTool:
Collaboration diagram for NSWL1::StripSegmentTool:

Public Member Functions

 StripSegmentTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~StripSegmentTool ()=default
 
virtual StatusCode initialize () override
 
virtual void handle (const Incident &inc) override
 
virtual StatusCode find_segments (std::vector< std::unique_ptr< StripClusterData > > &, const std::unique_ptr< Muon::NSW_TrigRawDataContainer > &) const override
 
StatusCode FetchDetectorEnvelope (Envelope_t &env) const
 
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
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

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

StatusCode book_branches ()
 book the branches to analyze the StripTds behavior More...
 
void clear_ntuple_variables ()
 clear the variables used in the analysis ntuple More...
 
uint8_t findRIdx (const float val, const Envelope_t &env) const
 
uint8_t findDtheta (const float) const
 
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

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
SG::ReadCondHandleKey< IRegSelLUTCondDatam_regSelTableKey {this, "RegSelLUT", "RegSelLUTCondData_sTGC", "sTGC Region Selector lookup table"}
 
ServiceHandle< IIncidentSvc > m_incidentSvc {this, "IncidentSvc", "IncidentSvc"}
 Athena/Gaudi incident Service. More...
 
Gaudi::Property< std::string > m_sTgcSdoContainer {this, "sTGC_SdoContainerName", "sTGC_SDO", "Name of the sTGC SDO digit container"}
 
Gaudi::Property< bool > m_doNtuple {this, "DoNtuple", false, "Input StripTds branches into the analysis ntuple"}
 
Gaudi::Property< int > m_rIndexBits {this, "rIndexBits", 8, "Number bits in R-index calculation"}
 
Gaudi::Property< int > m_dThetaBits {this, "dthetaBits", 5, "Number bits in dTheta calculation"}
 
Gaudi::Property< float > m_dtheta_min {this, "dthetaMin", -15., "Minimum allowed value for dtheta in mrad"}
 
Gaudi::Property< float > m_dtheta_max {this, "dthetaMax", 15., "Maximum allowed value for dtheta in mrad"}
 
Gaudi::Property< int > m_ridxScheme {this, "rIndexScheme", 1, "rIndex slicing scheme/ 0-->R / 1-->eta"}
 
TTree * m_tree {nullptr}
 ntuple for analysis More...
 
std::vector< int > *m_seg_wedge1_size ATLAS_THREAD_SAFE {nullptr}
 theta More...
 
std::vector< int > *m_seg_wedge2_size ATLAS_THREAD_SAFE {nullptr}
 theta More...
 
std::vector< float > *m_seg_theta ATLAS_THREAD_SAFE {nullptr}
 theta More...
 
std::vector< float > *m_seg_dtheta ATLAS_THREAD_SAFE {nullptr}
 delta theta More...
 
std::vector< uint8_t > *m_seg_dtheta_int ATLAS_THREAD_SAFE {nullptr}
 
std::vector< float > *m_seg_eta ATLAS_THREAD_SAFE {nullptr}
 m_seg_eta More...
 
std::vector< float > *m_seg_eta_inf ATLAS_THREAD_SAFE {nullptr}
 
std::vector< float > *m_seg_phi ATLAS_THREAD_SAFE {nullptr}
 
std::vector< int > *m_seg_bandId ATLAS_THREAD_SAFE {nullptr}
 
std::vector< int > *m_seg_phiId ATLAS_THREAD_SAFE {nullptr}
 
std::vector< int > *m_seg_rIdx ATLAS_THREAD_SAFE {nullptr}
 
std::vector< float > *m_seg_global_x ATLAS_THREAD_SAFE {nullptr}
 
std::vector< float > *m_seg_global_y ATLAS_THREAD_SAFE {nullptr}
 
std::vector< float > *m_seg_global_z ATLAS_THREAD_SAFE {nullptr}
 
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

interface for the StripTDS tools

This class implements the Strip Clustering offline simulation. It loops over the hits, readout from the StripTDSOffLineTool

Author
Jacob Searcy jsear.nosp@m.cy@c.nosp@m.ern.c.nosp@m.h

Definition at line 70 of file StripSegmentTool.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

◆ StripSegmentTool()

NSWL1::StripSegmentTool::StripSegmentTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 11 of file StripSegmentTool.cxx.

11  :
13  m_tree(nullptr)
14  {
15  declareInterface<NSWL1::IStripSegmentTool>(this);
16  }

◆ ~StripSegmentTool()

virtual NSWL1::StripSegmentTool::~StripSegmentTool ( )
virtualdefault

Member Function Documentation

◆ book_branches()

StatusCode NSWL1::StripSegmentTool::book_branches ( )
private

book the branches to analyze the StripTds behavior

Definition at line 311 of file StripSegmentTool.cxx.

311  {
312 
313  m_seg_theta = new std::vector< float >();
314  m_seg_dtheta = new std::vector< float >();
315  m_seg_dtheta_int = new std::vector< uint8_t >();
316  m_seg_eta = new std::vector< float >();
317  m_seg_eta_inf=new std::vector< float >();
318  m_seg_phi = new std::vector< float >();
319  m_seg_global_x = new std::vector< float >();
320  m_seg_global_y = new std::vector< float >();
321  m_seg_global_z = new std::vector< float >();
322  m_seg_bandId = new std::vector< int >();
323  m_seg_phiId = new std::vector< int >();
324  m_seg_rIdx=new std::vector< int >();
325  m_seg_wedge1_size = new std::vector< int >();
326  m_seg_wedge2_size = new std::vector< int >();
327 
328  if (m_tree) {
329  std::string ToolName = name().substr( name().find("::")+2,std::string::npos );
330  const char* n = ToolName.c_str();
331  m_tree->Branch(TString::Format("%s_seg_theta",n).Data(),&m_seg_theta);
332  m_tree->Branch(TString::Format("%s_seg_dtheta",n).Data(),&m_seg_dtheta);
333  m_tree->Branch(TString::Format("%s_seg_dtheta_int",n).Data(),&m_seg_dtheta_int);
334  m_tree->Branch(TString::Format("%s_seg_eta",n).Data(),&m_seg_eta);
335  m_tree->Branch(TString::Format("%s_seg_eta_inf",n).Data(),&m_seg_eta_inf);
336  m_tree->Branch(TString::Format("%s_seg_phi",n).Data(),&m_seg_phi);
337  m_tree->Branch(TString::Format("%s_seg_global_x",n).Data(),&m_seg_global_x);
338  m_tree->Branch(TString::Format("%s_seg_global_y",n).Data(),&m_seg_global_y);
339  m_tree->Branch(TString::Format("%s_seg_global_z",n).Data(),&m_seg_global_z);
340  m_tree->Branch(TString::Format("%s_seg_bandId",n).Data(),&m_seg_bandId);
341  m_tree->Branch(TString::Format("%s_seg_phiId",n).Data(),&m_seg_phiId);
342  m_tree->Branch(TString::Format("%s_seg_rIdx",n).Data(),&m_seg_rIdx);
343  m_tree->Branch(TString::Format("%s_seg_wedge1_size",n).Data(),&m_seg_wedge1_size);
344  m_tree->Branch(TString::Format("%s_seg_wedge2_size",n).Data(),&m_seg_wedge2_size);
345  }
346  return StatusCode::SUCCESS;
347  }

◆ clear_ntuple_variables()

void NSWL1::StripSegmentTool::clear_ntuple_variables ( )
private

clear the variables used in the analysis ntuple

Definition at line 349 of file StripSegmentTool.cxx.

349  {
350  if(m_tree==nullptr) return;
351 
352  m_seg_theta->clear();
353  m_seg_dtheta->clear();
354  m_seg_dtheta_int->clear();
355  m_seg_eta->clear();
356  m_seg_eta_inf->clear();
357  m_seg_phi->clear();
358  m_seg_global_x->clear();
359  m_seg_global_y->clear();
360  m_seg_global_z->clear();
361  m_seg_bandId->clear();
362  m_seg_phiId->clear();
363  m_seg_rIdx->clear();
364  m_seg_wedge2_size->clear();
365  m_seg_wedge1_size->clear();
366  }

◆ 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  }

◆ 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

◆ FetchDetectorEnvelope()

StatusCode NSWL1::StripSegmentTool::FetchDetectorEnvelope ( Envelope_t env) const

Definition at line 54 of file StripSegmentTool.cxx.

54  {
55  const MuonGM::MuonDetectorManager* p_det;
56  ATH_CHECK(detStore()->retrieve(p_det));
58  const auto regSelector = dynamic_cast<const RegSelSiLUT*>(rh_stgcLUT->payload());
59  std::vector<const RegSelModule*> moduleList;
60  for(const auto& i : m_idHelperSvc->stgcIdHelper().idVector()) { // all modules
61  IdentifierHash moduleHashId;
62  m_idHelperSvc->stgcIdHelper().get_module_hash(i, moduleHashId);
63  moduleList.push_back(regSelector->Module(moduleHashId));
64  }
65  float etamin=-1;
66  float etamax=-1;
67  float rmin=-1;
68  float rmax=-1;
69  float zmin=-1;
70  float zmax=-1;
71  std::sort(moduleList.begin(),moduleList.end(),[](const auto& M1,const auto& M2){ return std::abs(M1->_etaMin()) < std::abs(M2->_etaMin());} );
72  etamin=moduleList.at(0)->_etaMin();
73  std::sort(moduleList.begin(),moduleList.end(),[](const auto& M1,const auto& M2){ return std::abs(M1->_etaMax()) > std::abs(M2->_etaMax());} );
74  etamax=moduleList.at(0)->_etaMax();
75  std::sort(moduleList.begin(),moduleList.end(),[](const auto& M1,const auto& M2){ return std::abs(M1->rMin()) < std::abs(M2->rMin());} );
76  rmin=moduleList.at(0)->rMin();
77  std::sort(moduleList.begin(),moduleList.end(),[](const auto& M1,const auto& M2){ return std::abs(M1->rMax()) > std::abs(M2->rMax());} );
78  rmax=moduleList.at(0)->rMax();
79  std::sort(moduleList.begin(),moduleList.end(),[](const auto& M1,const auto& M2){ return std::abs(M1->zMin()) < std::abs(M2->zMin());} );
80  zmin=moduleList.at(0)->zMin();
81  std::sort(moduleList.begin(),moduleList.end(),[](const auto& M1,const auto& M2){ return std::abs(M1->zMax()) > std::abs(M2->zMax());} );
82  zmax=moduleList.at(0)->zMax();
83 
84  if(rmin<=0 || rmax<=0) ATH_MSG_WARNING("Unable to fetch NSW r/z boundaries");
85  env.lower_r = rmin;
86  env.upper_r = rmax;
87  env.lower_eta = etamin;
88  env.upper_eta = etamax;
89  env.lower_z = zmin;
90  env.upper_z = zmax;
91  ATH_MSG_DEBUG("rmin=" << rmin << " rmax=" << rmax << " zmin=" << zmin << " zmax=" << zmax << " etamin=" << etamin << " etamax=" << etamax);
92  return StatusCode::SUCCESS;
93  }

◆ find_segments()

StatusCode NSWL1::StripSegmentTool::find_segments ( std::vector< std::unique_ptr< StripClusterData > > &  clusters,
const std::unique_ptr< Muon::NSW_TrigRawDataContainer > &  trgContainer 
) const
overridevirtual

Implements NSWL1::IStripSegmentTool.

Definition at line 127 of file StripSegmentTool.cxx.

128  {
129  Envelope_t envelope;
130  ATH_CHECK(FetchDetectorEnvelope(envelope));
131 
132  if (clusters.empty()) {
133  ATH_MSG_WARNING("Received event with no clusters. Skipping...");
134  return StatusCode::SUCCESS;
135  }
136 
137  std::map<uint32_t, std::vector<std::unique_ptr<StripClusterData>>[2] > cluster_map; // gather clusters by hash_bandid and seperate in wedge
138 
139  int sectorid=-1; // [1,8]
140  int sideid=-1; // sideid==0: C
141  int sectorNumber=-1; // [1,16]
142  int hash=-1; // [1,32]
143 
144  int bandId=-1; // bandId is different for large and small sector type, the same for side / specific sector
145 
146  for(auto& cl : clusters){
147  // combine the side, sectortype, sectorid to form the hash
148  sideid=cl->sideId();
149  sectorid=cl->sectorId();
150  if(cl->isSmall()) sectorNumber=2*sectorid;
151  else sectorNumber=2*sectorid-1;
152  hash=16*sideid+sectorNumber;
153 
154  bandId=cl->bandId();
155 
156 
157  std::string id_str=std::to_string(hash)+"000"+std::to_string(bandId); // [1,32]*1000 + [0,90](could be extended in the future), the 1000 factor promise there's no confusion, such as '1'+'12" and '11'+'2'
158  uint32_t hash_bandid=atoi(id_str.c_str());
159 
160  // use the clusters in 2 wedges, with the same bandId, to form the sector segment
161  /*****************************************************************************************************/
162  auto item =cluster_map.find(hash_bandid);
163  if (item != cluster_map.end()){
164  item->second[cl->wedge()-1].push_back(std::move(cl));
165  }
166  else{
167  cluster_map[hash_bandid][cl->wedge()-1].push_back(std::move(cl));
168  }
169  }
170 
171  ATH_MSG_DEBUG(" Building NSW Segment RDO at hash=" << hash);
172 
173  for(const auto& band : cluster_map){//main band loop
174  int bandId=band.first;
175  if (band.second[0].size() == 0){
176  ATH_MSG_WARNING("Cluster size is zero for inner wedge trg with bandId "<<bandId<<"...skipping");
177  continue;
178  }
179  if(band.second[1].size() == 0){
180  ATH_MSG_WARNING("Cluster size is zero for outer wedge trg with bandId "<<bandId<<"...skipping");
181  continue;
182  }
183  float glx1=0;
184  float gly1=0;
185  float glx2=0;
186  float gly2=0;
187  float glx=0;
188  float gly=0;
189  float charge1=0;
190  float charge2=0;
191 
192  float eta=0;
193  float phi=0;
194  float theta=0;
195  float theta_inf=0;
196  float dtheta=0;
197  float eta_inf=0;
198 
199  // First measurement, corresponding to the inner wedge
200  float z1=0;
201  uint16_t sectorID = 0, bcID = 0;
202  char sectorSide = '-';
203  for( const auto& cl : band.second[0] ){
204  z1+=cl->globZ()*cl->charge();
205  glx1+=cl->globX()*cl->charge();
206  gly1+=cl->globY()*cl->charge();
207  charge1+=cl->charge();
208  sectorID = (cl->isSmall()) ? 2*cl->sectorId()-1 : 2*(cl->sectorId()-1);
209  sectorSide = (cl->sideId() == 0) ? 'C' : 'A';
210  bcID = cl->BCID();
211  }
212  auto trgRawData=std::make_unique< Muon::NSW_TrigRawData>(sectorID, sectorSide, bcID);
213 
214  // Second measurement, corresponding to the outer wedge
215  float z2=0;
216  for( const auto& cl : band.second[1] ){
217  z2+=cl->globZ()*cl->charge();
218  glx2+=cl->globX()*cl->charge();
219  gly2+=cl->globY()*cl->charge();
220  charge2+=cl->charge();
221  sectorID = (cl->isSmall()) ? 2*cl->sectorId()-1 : 2*(cl->sectorId()-1);
222  sectorSide = (cl->sideId() == 0) ? 'C' : 'A';
223  bcID = cl->BCID();
224  if (( sectorID != trgRawData->sectorId() ) ||
225  ( sectorSide != trgRawData->sectorSide() ) ||
226  ( bcID != trgRawData->bcId() )) ATH_MSG_WARNING("Possible mismatch between inner and outer wedge RDO parameters");
227  }
228  if(charge1!=0){
229  z1=z1/charge1;
230  glx1=glx1/charge1;
231  gly1=gly1/charge1;
232  }
233  if(charge2!=0){
234  z2=z2/charge2;
235  glx2=glx2/charge2;
236  gly2=gly2/charge2;
237  }
238 
239  //centroid calc
240  glx=(glx1+glx2)/2.;
241  gly=(gly1+gly2)/2.;
242  float avg_z=(z1+z2)/2.;
243 
244  //segment calc
245  ROOT::Math::XYZVector v3_centr1(glx1,gly1,z1), v3_centr2(glx2,gly2,z2);
246  ROOT::Math::XYZVector v3_segment = v3_centr2 - v3_centr1;
247  phi=v3_segment.Phi();
248  theta=v3_segment.Theta();
249  eta=v3_segment.Eta();
250 
251  //inf momentum track
252  theta_inf=v3_centr1.Theta();
253  eta_inf=v3_centr1.Eta();
254  dtheta=(theta-theta_inf)*1000;//In Milliradian
255 
256  ATH_MSG_DEBUG("StripSegmentTool: phi:" << phi << " theta:" << theta << " eta: " << eta << " theta_inf: " << theta_inf << " eta_inf: " << eta_inf << " dtheta: " << dtheta);
257 
258  //do not get confused. this one is trigger phiId
259  int phiId=band.second[0].at(0)->phiId();
260 
261  float rfar=envelope.upper_z*std::abs(std::tan(theta_inf));
262 
263  if( rfar >= envelope.upper_r || rfar < envelope.lower_r || std::abs(eta_inf) >= envelope.upper_eta || std::abs(eta_inf) < envelope.lower_eta){
264  ATH_MSG_WARNING("measured r/eta is out of detector envelope!");
265  return StatusCode::SUCCESS;
266  }
267 
268  uint8_t rIndex=0;
269  switch(m_ridxScheme) {
270  case 0:
271  rIndex=findRIdx(rfar, envelope);
272  break;
273  case 1:
274  rIndex=findRIdx(std::abs(eta_inf), envelope);
275  break;
276  default:
277  break;
278  }
279 
280  bool phiRes=true;
281  bool lowRes=false;//we do not have a recipe for a singlewedge trigger. so lowres is always false for now
282  uint8_t dtheta_int=findDtheta(dtheta);
283 
284  if (m_doNtuple) {
285  m_seg_wedge1_size->push_back(band.second[0].size());
286  m_seg_wedge2_size->push_back(band.second[1].size());
287  m_seg_bandId->push_back(bandId);
288  m_seg_phiId->push_back(phiId);
289  m_seg_rIdx->push_back(rIndex);
290  m_seg_theta->push_back(theta);
291  m_seg_dtheta->push_back(dtheta);
292  m_seg_dtheta_int->push_back(dtheta_int);
293  m_seg_eta->push_back(eta);
294  m_seg_eta_inf->push_back(eta_inf);
295  m_seg_phi->push_back(phi);
296  m_seg_global_x->push_back(glx);
297  m_seg_global_y->push_back(gly);
298  m_seg_global_z->push_back(avg_z);
299  }
300 
301  //However it needs to be kept an eye on... will be something in between 7 and 15 mrad needs to be decided
302  if(std::abs(dtheta)>15) continue;
303  auto rdo_segment= std::make_unique<Muon::NSW_TrigRawDataSegment>( dtheta_int, (uint8_t)phiId, (rIndex), lowRes, phiRes);
304  trgRawData->push_back(std::move(rdo_segment));
305  trgContainer->push_back(std::move(trgRawData));
306 
307  }//end of clmap loop
308  return StatusCode::SUCCESS;
309  }

◆ findDtheta()

uint8_t NSWL1::StripSegmentTool::findDtheta ( const float  val) const
private

Definition at line 118 of file StripSegmentTool.cxx.

118  {
119  uint8_t nbins_dtheta=1<<m_dThetaBits;
120  float step_dtheta=(m_dtheta_max-m_dtheta_min)/nbins_dtheta;
121  for(uint8_t i=0;i<nbins_dtheta;++i) {
122  if(val<m_dtheta_min+i*step_dtheta) return i;
123  }
124  return 0;
125  }

◆ findRIdx()

uint8_t NSWL1::StripSegmentTool::findRIdx ( const float  val,
const Envelope_t env 
) const
private

Definition at line 95 of file StripSegmentTool.cxx.

95  {
96  unsigned int nSlices=(1<<m_rIndexBits); //256
97  std::pair<float,float> range;
98  switch(m_ridxScheme){
99  case 0:
100  range=std::make_pair(env.lower_r, env.upper_r);
101  break;
102  case 1:
103  range=std::make_pair(env.lower_eta, env.upper_eta);
104  break;
105  default:
106  break;
107  }
108  float step=(range.second-range.first)/nSlices;
109 
110  // the cases with val<=range.first or val>=range.second have been abandoned before
111  for(uint8_t i=0;i<nSlices;i++) {
112  if(range.first+i*step <= val && val < range.first+(i+1)*step) return i;
113  }
114  ATH_MSG_ERROR( "StripSegmentTool: findRIdx failed!");
115  return 0;
116  }

◆ handle()

void NSWL1::StripSegmentTool::handle ( const Incident &  inc)
overridevirtual

Definition at line 48 of file StripSegmentTool.cxx.

48  {
49  if( inc.type()==IncidentType::BeginEvent ) {
50  this->clear_ntuple_variables();
51  }
52  }

◆ initialize()

StatusCode NSWL1::StripSegmentTool::initialize ( )
overridevirtual

Definition at line 18 of file StripSegmentTool.cxx.

18  {
19  ATH_MSG_DEBUG("initializing " << name() );
20  ATH_MSG_DEBUG(name() << " configuration:");
21  const IInterface* parent = this->parent();
22  const INamedInterface* pnamed = dynamic_cast<const INamedInterface*>(parent);
23  const std::string& algo_name = pnamed->name();
24  if ( m_doNtuple ) {
25  if (Gaudi::Concurrency::ConcurrencyFlags::numConcurrentEvents() > 1) {
26  ATH_MSG_ERROR("DoNtuple is not possible in multi-threaded mode");
27  return StatusCode::FAILURE;
28  }
29 
30  ATH_CHECK( m_incidentSvc.retrieve() );
31  m_incidentSvc->addListener(this,IncidentType::BeginEvent);
32 
33  if ( algo_name=="NSWL1Simulation" ) {
34  ITHistSvc* tHistSvc;
35  ATH_CHECK(service("THistSvc", tHistSvc));
36  std::string ntuple_name = algo_name+"Tree";
37  m_tree = nullptr;
38  ATH_CHECK(tHistSvc->getTree(ntuple_name,m_tree));
39  ATH_CHECK(this->book_branches());
40  }
41  }
42 
43  ATH_CHECK(m_idHelperSvc.retrieve());
44  ATH_CHECK(m_regSelTableKey.initialize());
45  return StatusCode::SUCCESS;
46  }

◆ 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.

◆ interfaceID()

static const InterfaceID& NSWL1::IStripSegmentTool::interfaceID ( )
inlinestaticinherited

Definition at line 37 of file IStripSegmentTool.h.

37  {
38  static const InterfaceID IID_IStripSegmentTool("NSWL1::IStripSegmentTool", 1 ,0);
39  return IID_IStripSegmentTool;
40  }

◆ 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  }

◆ 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

◆ ATLAS_THREAD_SAFE [1/14]

std::vector<int>* m_seg_wedge1_size NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

theta

Definition at line 106 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [2/14]

std::vector<int>* m_seg_wedge2_size NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

theta

Definition at line 107 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [3/14]

std::vector<float>* m_seg_theta NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

theta

Definition at line 108 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [4/14]

std::vector<float>* m_seg_dtheta NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

delta theta

Definition at line 109 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [5/14]

std::vector<uint8_t>* m_seg_dtheta_int NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 110 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [6/14]

std::vector<float>* m_seg_eta NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

m_seg_eta

Definition at line 111 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [7/14]

std::vector<float>* m_seg_eta_inf NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 112 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [8/14]

std::vector<float>* m_seg_phi NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 113 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [9/14]

std::vector<int>* m_seg_bandId NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 114 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [10/14]

std::vector<int>* m_seg_phiId NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 115 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [11/14]

std::vector<int>* m_seg_rIdx NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 116 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [12/14]

std::vector<float>* m_seg_global_x NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 117 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [13/14]

std::vector<float>* m_seg_global_y NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 118 of file StripSegmentTool.h.

◆ ATLAS_THREAD_SAFE [14/14]

std::vector<float>* m_seg_global_z NSWL1::StripSegmentTool::ATLAS_THREAD_SAFE {nullptr}
private

Definition at line 119 of file StripSegmentTool.h.

◆ 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_doNtuple

Gaudi::Property<bool> NSWL1::StripSegmentTool::m_doNtuple {this, "DoNtuple", false, "Input StripTds branches into the analysis ntuple"}
private

Definition at line 95 of file StripSegmentTool.h.

◆ m_dtheta_max

Gaudi::Property<float> NSWL1::StripSegmentTool::m_dtheta_max {this, "dthetaMax", 15., "Maximum allowed value for dtheta in mrad"}
private

Definition at line 99 of file StripSegmentTool.h.

◆ m_dtheta_min

Gaudi::Property<float> NSWL1::StripSegmentTool::m_dtheta_min {this, "dthetaMin", -15., "Minimum allowed value for dtheta in mrad"}
private

Definition at line 98 of file StripSegmentTool.h.

◆ m_dThetaBits

Gaudi::Property<int> NSWL1::StripSegmentTool::m_dThetaBits {this, "dthetaBits", 5, "Number bits in dTheta calculation"}
private

Definition at line 97 of file StripSegmentTool.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> NSWL1::StripSegmentTool::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 85 of file StripSegmentTool.h.

◆ m_incidentSvc

ServiceHandle<IIncidentSvc> NSWL1::StripSegmentTool::m_incidentSvc {this, "IncidentSvc", "IncidentSvc"}
private

Athena/Gaudi incident Service.

Definition at line 93 of file StripSegmentTool.h.

◆ m_regSelTableKey

SG::ReadCondHandleKey<IRegSelLUTCondData> NSWL1::StripSegmentTool::m_regSelTableKey {this, "RegSelLUT", "RegSelLUTCondData_sTGC", "sTGC Region Selector lookup table"}
private

Definition at line 86 of file StripSegmentTool.h.

◆ m_ridxScheme

Gaudi::Property<int> NSWL1::StripSegmentTool::m_ridxScheme {this, "rIndexScheme", 1, "rIndex slicing scheme/ 0-->R / 1-->eta"}
private

Definition at line 100 of file StripSegmentTool.h.

◆ m_rIndexBits

Gaudi::Property<int> NSWL1::StripSegmentTool::m_rIndexBits {this, "rIndexBits", 8, "Number bits in R-index calculation"}
private

Definition at line 96 of file StripSegmentTool.h.

◆ m_sTgcSdoContainer

Gaudi::Property<std::string> NSWL1::StripSegmentTool::m_sTgcSdoContainer {this, "sTGC_SdoContainerName", "sTGC_SDO", "Name of the sTGC SDO digit container"}
private

Definition at line 94 of file StripSegmentTool.h.

◆ m_tree

TTree* NSWL1::StripSegmentTool::m_tree {nullptr}
private

ntuple for analysis

Definition at line 105 of file StripSegmentTool.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:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
NSWL1::eta
float eta(float x, float y, float z)
Definition: GeoUtils.cxx:9
NSWL1::StripSegmentTool::findRIdx
uint8_t findRIdx(const float val, const Envelope_t &env) const
Definition: StripSegmentTool.cxx:95
NSWL1::StripSegmentTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: StripSegmentTool.h:85
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
PixelAthClusterMonAlgCfg.zmin
zmin
Definition: PixelAthClusterMonAlgCfg.py:176
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Data
@ Data
Definition: BaseObject.h:11
NSWL1::StripSegmentTool::m_ridxScheme
Gaudi::Property< int > m_ridxScheme
Definition: StripSegmentTool.h:100
StateLessPT_NewConfig.Format
Format
Definition: StateLessPT_NewConfig.py:146
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
NSWL1::StripSegmentTool::clear_ntuple_variables
void clear_ntuple_variables()
clear the variables used in the analysis ntuple
Definition: StripSegmentTool.cxx:349
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
NSWL1::StripSegmentTool::m_dtheta_max
Gaudi::Property< float > m_dtheta_max
Definition: StripSegmentTool.h:99
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
NSWL1::StripSegmentTool::m_incidentSvc
ServiceHandle< IIncidentSvc > m_incidentSvc
Athena/Gaudi incident Service.
Definition: StripSegmentTool.h:93
Envelope_t::upper_r
float upper_r
Definition: StripSegmentTool.h:48
NSWL1::StripSegmentTool::m_doNtuple
Gaudi::Property< bool > m_doNtuple
Definition: StripSegmentTool.h:95
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
NSWL1::StripSegmentTool::FetchDetectorEnvelope
StatusCode FetchDetectorEnvelope(Envelope_t &env) const
Definition: StripSegmentTool.cxx:54
Muon::nsw::STGTPSegments::MergedSegmentProperty::phiRes
@ phiRes
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
NSWL1::StripSegmentTool::m_rIndexBits
Gaudi::Property< int > m_rIndexBits
Definition: StripSegmentTool.h:96
lumiFormat.i
int i
Definition: lumiFormat.py:92
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
PixelAthClusterMonAlgCfg.zmax
zmax
Definition: PixelAthClusterMonAlgCfg.py:176
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Envelope_t::upper_z
float upper_z
Definition: StripSegmentTool.h:52
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:
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
NSWL1::StripSegmentTool::m_dThetaBits
Gaudi::Property< int > m_dThetaBits
Definition: StripSegmentTool.h:97
Envelope_t::lower_r
float lower_r
Definition: StripSegmentTool.h:47
NSWL1::StripSegmentTool::m_dtheta_min
Gaudi::Property< float > m_dtheta_min
Definition: StripSegmentTool.h:98
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
item
Definition: ItemListSvc.h:43
NSWL1::StripSegmentTool::findDtheta
uint8_t findDtheta(const float) const
Definition: StripSegmentTool.cxx:118
Envelope_t::upper_eta
float upper_eta
Definition: StripSegmentTool.h:50
a
TList * a
Definition: liststreamerinfos.cxx:10
h
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:49
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
NSWL1::StripSegmentTool::m_tree
TTree * m_tree
ntuple for analysis
Definition: StripSegmentTool.h:105
Envelope_t::lower_eta
float lower_eta
Definition: StripSegmentTool.h:49
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
RegSelSiLUT
Definition: RegSelSiLUT.h:41
LArCellBinning.step
step
Definition: LArCellBinning.py:158
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
Envelope_t
Definition: StripSegmentTool.h:46
NSWL1::StripSegmentTool::book_branches
StatusCode book_branches()
book the branches to analyze the StripTds behavior
Definition: StripSegmentTool.cxx:311
IdentifierHash
Definition: IdentifierHash.h:38
python.DataFormatRates.env
env
Definition: DataFormatRates.py:32
NSWL1::phi
float phi(float x, float y, float z)
Definition: GeoUtils.cxx:14
LArCellBinning.etamin
etamin
Definition: LArCellBinning.py:137
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
NSWL1::StripSegmentTool::m_regSelTableKey
SG::ReadCondHandleKey< IRegSelLUTCondData > m_regSelTableKey
Definition: StripSegmentTool.h:86
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Muon::nsw::STGTPSegments::MergedSegmentProperty::lowRes
@ lowRes
WriteBchToCool.moduleList
moduleList
Definition: WriteBchToCool.py:72
fitman.k
k
Definition: fitman.py:528
Muon::nsw::STGTPSegments::MergedSegmentProperty::rIndex
@ rIndex