ATLAS Offline Software
StripTdsOfflineTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "GaudiKernel/ConcurrencyFlags.h"
6 
8 
9 namespace NSWL1 {
10 
11  class StripHits {
12  public:
17  : t_id (id),
18  t_strip (p),
20  { }
21  };
22 
23  using STRIP_MAP=std::map < Identifier,std::vector<StripHits> >;
24  using STRIP_MAP_IT=std::map < Identifier,std::vector<StripHits> >::iterator;
25  using STRIP_MAP_ITEM=std::pair< Identifier,std::vector<StripHits> >;
26 
27  StripTdsOfflineTool::StripTdsOfflineTool( const std::string& type, const std::string& name, const IInterface* parent) :
29  m_incidentSvc("IncidentSvc",name),
30  m_detManager(nullptr),
31  m_tree(nullptr)
32  {
33  declareInterface<NSWL1::IStripTdsTool>(this);
34  }
35 
37  ATH_MSG_DEBUG( "initializing " << name() );
38 
39  ATH_MSG_DEBUG( name() << " configuration:");
40  ATH_MSG_DEBUG(" " << std::setw(32) << std::setfill('.') << std::setiosflags(std::ios::left) << m_doNtuple.name() << ((m_doNtuple)? "[True]":"[False]")
41  << std::setfill(' ') << std::setiosflags(std::ios::right) );
42 
45 
46  const IInterface* parent = this->parent();
47  const INamedInterface* pnamed = dynamic_cast<const INamedInterface*>(parent);
48  const std::string& algo_name = pnamed->name();
49 
50  if ( m_doNtuple ) {
51  if (Gaudi::Concurrency::ConcurrencyFlags::numConcurrentEvents() > 1) {
52  ATH_MSG_ERROR("DoNtuple is not possible in multi-threaded mode");
53  return StatusCode::FAILURE;
54  }
55 
56  ATH_CHECK( m_incidentSvc.retrieve() );
57  m_incidentSvc->addListener(this,IncidentType::BeginEvent);
58 
59  if ( algo_name=="NSWL1Simulation" ) {
60  ITHistSvc* tHistSvc;
61  ATH_CHECK(service("THistSvc", tHistSvc));
62  m_tree = 0;
63  std::string ntuple_name = algo_name+"Tree";
64  ATH_CHECK(tHistSvc->getTree(ntuple_name,m_tree));
65  ATH_CHECK(this->book_branches());
66  }
67  }
69  ATH_CHECK(m_idHelperSvc.retrieve());
70  return StatusCode::SUCCESS;
71  }
72 
73  void StripTdsOfflineTool::handle(const Incident& inc) {
74  if( inc.type()==IncidentType::BeginEvent ) {
75  this->clear_ntuple_variables();
76  }
77  }
78 
79 
81  m_nStripHits = 0;
82  m_stripCharge= new std::vector< float >();
83  m_stripCharge_6bit= new std::vector< float >();
84  m_stripCharge_10bit= new std::vector< float >();
85  m_strip_global_X= new std::vector< float >();
86  m_strip_global_Y= new std::vector< float >();
87  m_strip_global_Z= new std::vector< float >();
88  m_strip_local_X= new std::vector< float >();
89  m_strip_local_Y= new std::vector< float >();
90  m_strip_layer= new std::vector< float >();
91  m_strip_isSmall= new std::vector< bool >();
92  m_strip_eta= new std::vector< float >();
93  m_strip_phi= new std::vector< float >();
94  m_strip_readStrip = new std::vector<bool >();
95  m_strip_channel= new std::vector< int >();
96  m_strip_BCID= new std::vector< int >();
97  m_strip_wedge= new std::vector< int >();
98  m_strip_time= new std::vector< float >();
99 
100  if (m_tree) {
101  std::string ToolName = name().substr( name().find("::")+2,std::string::npos );
102  const char* n = ToolName.c_str();
103  m_tree->Branch(TString::Format("%s_nStripHits",n).Data(),&m_nStripHits,TString::Format("%s_nStripHits/i",n).Data());
104  m_tree->Branch(TString::Format("%s_charge",n).Data(),&m_stripCharge);
105  m_tree->Branch(TString::Format("%s_charge_6bit",n).Data(),&m_stripCharge_6bit);
106  m_tree->Branch(TString::Format("%s_charge_10bit",n).Data(),&m_stripCharge_10bit);
107  m_tree->Branch(TString::Format("%s_global_X",n).Data(),&m_strip_global_X);
108  m_tree->Branch(TString::Format("%s_global_Y",n).Data(),&m_strip_global_Y);
109  m_tree->Branch(TString::Format("%s_global_Z",n).Data(),&m_strip_global_Z);
110  m_tree->Branch(TString::Format("%s_local_X",n).Data(),&m_strip_local_X);
111  m_tree->Branch(TString::Format("%s_local_Y",n).Data(),&m_strip_local_Y);
112  m_tree->Branch(TString::Format("%s_layer",n).Data(),&m_strip_layer);
113  m_tree->Branch(TString::Format("%s_isSmall",n).Data(),&m_strip_isSmall);
114  m_tree->Branch(TString::Format("%s_eta",n).Data(),&m_strip_eta);
115  m_tree->Branch(TString::Format("%s_phi",n).Data(),&m_strip_phi);
116  m_tree->Branch(TString::Format("%s_readStrip",n).Data(),&m_strip_readStrip);
117  m_tree->Branch(TString::Format("%s_channel",n).Data(),&m_strip_channel);
118  m_tree->Branch(TString::Format("%s_BCID",n).Data(),&m_strip_BCID);
119  m_tree->Branch(TString::Format("%s_wedge",n).Data(),&m_strip_wedge);
120  m_tree->Branch(TString::Format("%s_time",n).Data(),&m_strip_time);
121  }
122  return StatusCode::SUCCESS;
123  }
124 
125 
127  if(m_tree==0) return;
128  m_nStripHits = 0;
129  m_stripCharge->clear();
130  m_stripCharge_6bit->clear();
131  m_stripCharge_10bit->clear();
132  m_stripCharge->clear();
133  m_stripCharge_6bit->clear();
134  m_stripCharge_10bit->clear();
135  m_strip_global_X->clear();
136  m_strip_global_Y->clear();
137  m_strip_global_Z->clear();
138  m_strip_local_X->clear();
139  m_strip_local_Y->clear();
140  m_strip_layer->clear();
141  m_strip_isSmall->clear();
142  m_strip_eta->clear();
143  m_strip_phi->clear();
144  m_strip_readStrip->clear();
145  m_strip_channel->clear();
146  m_strip_BCID->clear();
147  m_strip_time->clear();
148  m_strip_wedge->clear();
149  }
150 
151  void StripTdsOfflineTool::fill_strip_validation_id(std::vector<std::unique_ptr<StripData>> &strip_cache) const {
152  for (const auto &hit : strip_cache) {
153  m_nStripHits++;
154  ATH_MSG_DEBUG("Hits :" << m_nStripHits << " Cache strip " << hit.get() << " " << strip_cache.size() );
155 
156  m_stripCharge->push_back(hit->strip_charge());
157  m_stripCharge_6bit->push_back(hit->strip_charge_6bit());
158  m_stripCharge_10bit->push_back(hit->strip_charge_10bit());
159  m_strip_readStrip->push_back(hit->readStrip());
160  m_strip_channel->push_back(hit->channelId());
161  m_strip_BCID->push_back(hit->trig_BCID());
162  m_strip_time->push_back(hit->time());
163  m_strip_wedge->push_back(hit->wedge());
164  }
165  }
166 
167 
168  StatusCode StripTdsOfflineTool::gather_strip_data(std::vector<std::unique_ptr<StripData>>& strips, const std::vector<std::unique_ptr<PadTrigger>>& padTriggers) const {
169  ATH_MSG_DEBUG( "gather_strip_data: start gathering all strip htis");
170 
171  std::vector<std::unique_ptr<StripData>> strip_cache;
172  ATH_CHECK(fill_strip_cache(padTriggers, strip_cache));
173 
174  // delivering the required collection
175  for (unsigned int i=0; i< strip_cache.size(); i++) {
176  // Check if a stip should be read according to pad triggers
177  strips.push_back(std::move(strip_cache.at(i)));
178  }
179  strip_cache.clear();
180  ATH_MSG_DEBUG( "Delivered n. " << strips.size() << " STRIP hits." );
181  return StatusCode::SUCCESS;
182  }
183 
184 
185  StatusCode StripTdsOfflineTool::fill_strip_cache( const std::vector<std::unique_ptr<PadTrigger>>& padTriggers, std::vector<std::unique_ptr<StripData>> &strip_cache) const {
186  ATH_MSG_DEBUG( "fill_strip_cache: start filling the cache for STRIP hits" );
187 
188  if(m_isMC){
190  if(!sdo_container.isValid()){
191  ATH_MSG_WARNING("could not retrieve the sTGC SDO container: it will not be possible to associate the MC truth");
192  }
193  }
194 
196  if(!digit_container.isValid()){
197  ATH_MSG_ERROR("could not retrieve the sTGC Digit container: cannot return the STRIP hits");
198  }
199 
200  sTgcDigitContainer::const_iterator it = digit_container->begin();
201  sTgcDigitContainer::const_iterator it_e = digit_container->end();
202 
203  ATH_MSG_DEBUG( "retrieved sTGC Digit Container with " << digit_container->digit_size() << " collection" );
204  int strip_hit_number = 0;
205  for(; it!=it_e; ++it) {
206  const sTgcDigitCollection* coll = *it;
207 
208  ATH_MSG_DEBUG( "processing collection with size " << coll->size() );
209 
210  for (unsigned int item=0; item<coll->size(); item++) {
211  const sTgcDigit* digit = coll->at(item);
212  Identifier Id = digit->identify();
214  int channel_type = m_idHelperSvc->stgcIdHelper().channelType(Id);
215  // process only Strip data
216  if (channel_type!=1) continue;
217 
218  Amg::Vector2D strip_lpos;
219  Amg::Vector3D strip_gpos;
220  rdoEl->stripPosition(Id,strip_lpos);
221  const auto& stripSurface=rdoEl->surface(Id);
222  stripSurface.localToGlobal(strip_lpos, strip_gpos, strip_gpos);
223 
224  std::string stName = m_idHelperSvc->stgcIdHelper().stationNameString(m_idHelperSvc->stgcIdHelper().stationName(Id));
225  int stationEta = m_idHelperSvc->stgcIdHelper().stationEta(Id);
226  int stationPhi = m_idHelperSvc->stgcIdHelper().stationPhi(Id);
227  int wedge = m_idHelperSvc->stgcIdHelper().multilayer(Id);
228  int layer = m_idHelperSvc->stgcIdHelper().gasGap(Id);
229  int channel = m_idHelperSvc->stgcIdHelper().channel(Id);
230  int bctag = digit->bcTag();
231 
232  strip_hit_number++;
233  int strip_eta = 0;
234  int strip_phi = 0;
235 
236  ATH_MSG_DEBUG("sTGC Strip hit " << strip_hit_number << ": Station Name [" << stName << "]"
237  << " Station Eta [" << stationEta << "]"
238  << " Station Phi [" << stationPhi << "]"
239  << " Wedge [" << wedge << "]"
240  << " Layer [" << layer << "]"
241  << " Type [" << channel_type << "]"
242  << " ChNr [" << channel << "]"
243  << " Strip Eta [" << strip_eta << "]"
244  << " Strip Phi [" << strip_phi << "]"
245  << " Strip bcTAg [" << bctag << "]");
246 
247  bool isSmall = m_idHelperSvc->stgcIdHelper().isSmall(Id);
248  int trigger_sector = (isSmall)? stationPhi*2 : stationPhi*2-1;//
249  int cache_index = (stationEta>0)? trigger_sector + 16 : trigger_sector;
250  ATH_MSG_DEBUG("sTGC Strip hit " << strip_hit_number << ": Trigger Sector [" << trigger_sector << "]" << " Cache Index [" << cache_index << "]" );
251 
252  // process STRIP hit time: apply the time delay, set the BC tag for the hit according to the trigger capture window
253  ATH_MSG_DEBUG( "Filling ntuple variables" );
254  if (m_doNtuple) {
255  m_strip_global_X->push_back(strip_gpos.x());
256  m_strip_global_Y->push_back(strip_gpos.y());
257  m_strip_global_Z->push_back(strip_gpos.z());
258  m_strip_local_X->push_back(strip_lpos.x());
259  m_strip_local_Y->push_back(strip_lpos.y());
260  m_strip_layer->push_back(layer);
261  m_strip_isSmall->push_back(isSmall);
262  m_strip_eta->push_back(stationEta);
263  m_strip_phi->push_back(stationPhi);
264  }
265  auto strip=std::make_unique<StripOfflineData>(Id,&m_idHelperSvc->stgcIdHelper(),digit);
266  strip->set_locX(strip_lpos.x());
267  strip->set_locY(strip_lpos.y());
268  int sideid= (stationEta>0) ? 1 : 0;
269  int sectortype= (isSmall==1) ? 0 : 1;
270  int sectorid=stationPhi;
271  int moduleid=std::abs(stationEta);
272  int wedgeid=wedge;
273  int layerid=layer;
274  strip->setSideId(sideid);
275  strip->setSectorType(sectortype);
276  strip->setSectorId(sectorid);
277  strip->setModuleId(moduleid);
278  strip->setWedgeId(wedgeid);
279  strip->setLayerId(layerid);
280  strip->set_globX(strip_gpos.x());
281  strip->set_globY(strip_gpos.y());
282  strip->set_globZ(strip_gpos.z());
283  strip->set_locZ(0);
284 
285  bool read_strip=readStrip(strip.get(),padTriggers);
286  if (read_strip && (strip->bandId() ==-1 || strip->phiId()==-1 ) ) {
287  ATH_MSG_FATAL("StripTdsOfflineTool:NO MATCH ALL " << "\n"
288  << "wedge:" << strip->wedge() << "\n"
289  << "layer:"<< strip->layer() << "\n"
290  << "loc_x:"<< strip->locX()<< "\n");
291  }
292 
293  //set coordinates above ! readStrip needs that variables !
294  strip->set_readStrip(read_strip);
295  strip_cache.push_back(std::move(strip));
296  }//collections
297  }//items
298  if (m_doNtuple) this->fill_strip_validation_id(strip_cache);
299  ATH_MSG_DEBUG( "fill_strip_cache: end of processing" );
300  return StatusCode::SUCCESS;
301  }
302 
303 
304  bool StripTdsOfflineTool::readStrip(StripData* strip,const std::vector<std::unique_ptr<PadTrigger>>& padTriggers) const {
305 
306  if (strip->bandId() !=-1) {
307  ATH_MSG_DEBUG("StripTdsOfflineTool:ReadStrip: BandId already set\n" << "moduleID:" << strip->moduleId() +1 << "\n"
308  << "sectiorID:" << strip->sectorId() + 1 << "\n" << "layer:" << strip->wedge() << "\n");
309  }
310  if (strip->phiId() !=-1) {
311  ATH_MSG_DEBUG("StripTdsOfflineTool:ReadStrip: PhiId already set\n" << "moduleID:"<< strip->moduleId() +1 << "\n"
312  << "sectiorID:" << strip->sectorId() + 1 << "\n" << "layer:" << strip->wedge() << "\n");
313  }
314  for(const std::unique_ptr<PadTrigger>& trig :padTriggers){
315  //std::shared_ptr<PadData> padIn=trig->firstPadInner();
316  for(const std::shared_ptr<PadData>& pad : trig->m_pads){
317  if (strip->sideId()!=pad->sideId() ||
318  strip->isSmall()==pad->sectorType() || //strip returns 1 pad returns 0
319  strip->sectorId()!=pad->sectorId() ||
320  std::abs(strip->etaCenter() )> trig->etaMax() || //use abs / sideC
321  std::abs(strip->etaCenter() ) < trig->etaMin() ||
322  strip->layer()!=pad->gasGapId()
323  ) continue;
324  else {
325  strip->setBandId(trig->bandId());
326  strip->setPhiId(trig->phiId());
327  return true;
328  }
329  }//pad loop
330  }//padtrigger loop
331  return false;
332  }
333 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
NSWL1::StripTdsOfflineTool::m_detManager
const MuonGM::MuonDetectorManager * m_detManager
MuonDetectorManager.
Definition: StripTdsOfflineTool.h:102
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
NSWL1::StripTdsOfflineTool::fill_strip_validation_id
void fill_strip_validation_id(std::vector< std::unique_ptr< StripData >> &strip_cache) const
fill the ntuple branch for the StripTdsOffline
Definition: StripTdsOfflineTool.cxx:151
NSWL1::StripTdsOfflineTool::StripTdsOfflineTool
StripTdsOfflineTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: StripTdsOfflineTool.cxx:27
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
NSWL1::StripTdsOfflineTool::m_sTgcSdoContainer
SG::ReadHandleKey< MuonSimDataCollection > m_sTgcSdoContainer
Definition: StripTdsOfflineTool.h:136
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
NSWL1::StripTdsOfflineTool::handle
virtual void handle(const Incident &inc) override
Definition: StripTdsOfflineTool.cxx:73
NSWL1::StripHits::t_id
Identifier t_id
Definition: StripTdsOfflineTool.cxx:13
NSWL1::StripOfflineData
class modeling the strip hit fragment for the NSW L1 offline simulation
Definition: StripOfflineData.h:34
StripTdsOfflineTool.h
NSWL1::StripHits::t_strip
StripOfflineData * t_strip
Definition: StripTdsOfflineTool.cxx:14
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
Data
@ Data
Definition: BaseObject.h:11
StateLessPT_NewConfig.Format
Format
Definition: StateLessPT_NewConfig.py:146
skel.it
it
Definition: skel.GENtoEVGEN.py:423
NSWL1::StripTdsOfflineTool::initialize
virtual StatusCode initialize() override
Definition: StripTdsOfflineTool.cxx:36
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
MuonGM::MuonClusterReadoutElement::surface
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
Definition: MuonClusterReadoutElement.h:123
NSWL1::StripData
abstract class to interface the data hit fragment output from the Strip TDS
Definition: StripData.h:30
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
MuonGM::sTgcReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position - should be renamed to channel position If the strip number is outside the range of va...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:323
sTgcDigit
Definition: sTgcDigit.h:20
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
sTgcDigitCollection
Definition: sTgcDigitCollection.h:18
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonGM::sTgcReadoutElement
An sTgcReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station c...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:28
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IdentifiableContainerMT::end
const_iterator end() const
return const_iterator for end of container
Definition: IdentifiableContainerMT.h:242
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:82
sTgcDigitContainer::digit_size
size_type digit_size() const
Definition: sTgcDigitContainer.cxx:55
IdentifiableContainerMT::begin
const_iterator begin() const
return const_iterator for first entry
Definition: IdentifiableContainerMT.h:236
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
NSWL1::StripTdsOfflineTool::fill_strip_cache
StatusCode fill_strip_cache(const std::vector< std::unique_ptr< PadTrigger >> &padTriggers, std::vector< std::unique_ptr< StripData >> &strip_cache) const
Definition: StripTdsOfflineTool.cxx:185
NSWL1::StripTdsOfflineTool::m_doNtuple
Gaudi::Property< bool > m_doNtuple
Definition: StripTdsOfflineTool.h:106
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
NSWL1::StripHits::StripHits
StripHits(Identifier id, StripOfflineData *p, int c)
Definition: StripTdsOfflineTool.cxx:16
item
Definition: ItemListSvc.h:43
NSWL1::STRIP_MAP_IT
std::map< Identifier, std::vector< StripHits > >::iterator STRIP_MAP_IT
Definition: StripTdsOfflineTool.cxx:24
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
NSWL1::StripHits
Definition: StripTdsOfflineTool.cxx:11
Muon::nsw::channel_type
channel_type
Definition: NSWDecodeHelper.h:18
NSWL1::STRIP_MAP
std::map< Identifier, std::vector< StripHits > > STRIP_MAP
Definition: StripTdsOfflineTool.cxx:23
NSWL1::StripTdsOfflineTool::m_sTgcDigitContainer
SG::ReadHandleKey< sTgcDigitContainer > m_sTgcDigitContainer
Definition: StripTdsOfflineTool.h:135
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
NSWL1::StripTdsOfflineTool::clear_ntuple_variables
void clear_ntuple_variables()
clear the variables used in the analysis ntuple
Definition: StripTdsOfflineTool.cxx:126
NSWL1::StripTdsOfflineTool::readStrip
bool readStrip(StripData *, const std::vector< std::unique_ptr< PadTrigger >> &) const
Definition: StripTdsOfflineTool.cxx:304
NSWL1::StripTdsOfflineTool::m_incidentSvc
ServiceHandle< IIncidentSvc > m_incidentSvc
Athena/Gaudi incident Service.
Definition: StripTdsOfflineTool.h:101
NSWL1::StripHits::t_cache_index
int t_cache_index
Definition: StripTdsOfflineTool.cxx:15
DataVector::at
const T * at(size_type n) const
Access an element, as an rvalue.
MuonGM::MuonDetectorManager::getsTgcReadoutElement
const sTgcReadoutElement * getsTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:259
NSWL1::STRIP_MAP_ITEM
std::pair< Identifier, std::vector< StripHits > > STRIP_MAP_ITEM
Definition: StripTdsOfflineTool.cxx:25
AthAlgTool
Definition: AthAlgTool.h:26
Trk::PlaneSurface::localToGlobal
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
Specified for PlaneSurface: LocalToGlobal method without dynamic memory allocation.
Definition: PlaneSurface.cxx:204
NSWL1::StripTdsOfflineTool::gather_strip_data
virtual StatusCode gather_strip_data(std::vector< std::unique_ptr< StripData >> &strips, const std::vector< std::unique_ptr< PadTrigger >> &padTriggers) const override
Definition: StripTdsOfflineTool.cxx:168
NSWL1
A trigger trigger candidate for a stgc sector.
Definition: NSWL1Simulation.cxx:9
NSWL1::StripTdsOfflineTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: StripTdsOfflineTool.h:103
python.compressB64.c
def c
Definition: compressB64.py:93
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
NSWL1::StripTdsOfflineTool::m_isMC
Gaudi::Property< bool > m_isMC
Definition: StripTdsOfflineTool.h:109
NSWL1::StripTdsOfflineTool::book_branches
StatusCode book_branches()
book the branches to analyze the StripTds behavior
Definition: StripTdsOfflineTool.cxx:80