ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::TRT_TrackSegmentsMaker_ATLxk Class Reference

#include <TRT_TrackSegmentsMaker_ATLxk.h>

Inheritance diagram for InDet::TRT_TrackSegmentsMaker_ATLxk:
Collaboration diagram for InDet::TRT_TrackSegmentsMaker_ATLxk:

Classes

class  EventData

Public Member Functions

 TRT_TrackSegmentsMaker_ATLxk (const std::string &, const std::string &, const IInterface *)
virtual ~TRT_TrackSegmentsMaker_ATLxk ()
virtual StatusCode initialize () override
virtual StatusCode finalize () override
virtual std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventDatanewEvent (const EventContext &ctx) const override
virtual std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventDatanewRegion (const EventContext &ctx, const std::vector< IdentifierHash > &) const override
void endEvent (InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override
virtual void find (const EventContext &ctx, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const override
virtual Trk::TrackSegmentnext (InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override
virtual MsgStream & dump (MsgStream &out) const override
virtual std::ostream & dump (std::ostream &out) const override
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

const TRT_TrackSegmentsToolCondData_xkgetConditionsData () const
void magneticFieldInit ()
void eraseHistogramm (TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
void fillHistogramm (float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
void analyseHistogramm (unsigned char &, unsigned int &, float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
unsigned int localMaximum (unsigned int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
void findLocaly (const EventContext &ctx, unsigned int, const Trk::PRDtoTrackMap *prd_to_track_map, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const
MsgStream & dumpConditions (MsgStream &out) const
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Static Protected Member Functions

static void segmentsPreparation (TRT_TrackSegmentsMaker_ATLxk::EventData &event_data)
static MsgStream & dumpEvent (MsgStream &out, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data)

Protected Attributes

StringProperty m_fieldmode
ToolHandle< ITRT_TrackExtensionToolm_extensionTool {this, "TrackExtensionTool", "InDet::TRT_TrackExtensionTool_xk"}
Trk::MagneticFieldProperties m_fieldprop
const TRT_IDm_trtid {}
SG::ReadHandleKey< InDet::TRT_DriftCircleContainer > m_trtname {this,"TRT_ClustersContainer","TRT_DriftCircles","RHK to retrieve TRT_DriftCircles"}
SG::ReadCondHandleKey< InDet::TRT_TrackSegmentsToolCondData_xkm_condDataKey {this, "CondDataKey","TRT_TrackSegmentsToolCondData_xk", "Key of TRT_TrackSegmentsToolCondData"}
SG::ReadHandleKey< Trk::PRDtoTrackMapm_prdToTrackMap {this,"PRDtoTrackMap",""}
BooleanProperty m_removeNoise {this, "RemoveNoiseDriftCircles", true}
IntegerProperty m_clustersCut {this, "MinNumberDriftCircles", 10}
FloatProperty m_pTmin {this, "pTmin", 500.}
FloatProperty m_sharedfrac {this, "sharedFrac", 0.3}
IntegerProperty m_nPhi
IntegerProperty m_nMom
int m_outputlevel {}
int m_Ts {}
int m_Ns128 {}
float m_Psi {}
float m_Psi128 {}
float m_A {}
float m_Ai {}
int m_histsize {}

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 44 of file TRT_TrackSegmentsMaker_ATLxk.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

◆ TRT_TrackSegmentsMaker_ATLxk()

InDet::TRT_TrackSegmentsMaker_ATLxk::TRT_TrackSegmentsMaker_ATLxk ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 31 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

33 : AthAlgTool(t,n,p)
34{
35 declareInterface<ITRT_TrackSegmentsMaker>(this);
36}
AthAlgTool()
Default constructor:

◆ ~TRT_TrackSegmentsMaker_ATLxk()

InDet::TRT_TrackSegmentsMaker_ATLxk::~TRT_TrackSegmentsMaker_ATLxk ( )
virtualdefault

Member Function Documentation

◆ analyseHistogramm()

void InDet::TRT_TrackSegmentsMaker_ATLxk::analyseHistogramm ( unsigned char & max,
unsigned int & maxbin,
float Fs,
int s,
TRT_TrackSegmentsMaker_ATLxk::EventData & event_data ) const
protected

Definition at line 568 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

570{
571 const TRT_TrackSegmentsToolCondData_xk &condData = *getConditionsData();
572
573 int s0 = condData.m_ndzdr[s]*m_Ts;
574 int f = int((Fs*m_A-condData.m_slope[s])*128.); if(f<0) f+=m_Ns128;
575 int sf = condData.m_islope[s];
576
577 // Loop through all momentum slopes
578 //
579 for(int i=s0; i!=s0+m_Ts; i+=m_nPhi) {
580 int k =(f>>7); f+=sf; if(k>=m_nPhi) k-=m_nPhi;
581 if(event_data.m_U.H[k+i] > max) max = event_data.m_U.H[maxbin = k+i];
582 }
583}
static Double_t s0
#define max(a, b)
Definition cfImp.cxx:41
const TRT_TrackSegmentsToolCondData_xk * getConditionsData() const

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

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

◆ dump() [1/2]

MsgStream & InDet::TRT_TrackSegmentsMaker_ATLxk::dump ( MsgStream & out) const
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 393 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

394{
395 out<<std::endl;
396 return dumpConditions(out);
397}
MsgStream & dumpConditions(MsgStream &out) const

◆ dump() [2/2]

std::ostream & InDet::TRT_TrackSegmentsMaker_ATLxk::dump ( std::ostream & out) const
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 516 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

517{
518 return out;
519}

◆ dumpConditions()

MsgStream & InDet::TRT_TrackSegmentsMaker_ATLxk::dumpConditions ( MsgStream & out) const
protected

Definition at line 403 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

404{
405
406 const TRT_TrackSegmentsToolCondData_xk &condData = *getConditionsData();
407
408 std::string fieldmode[9] ={"NoField" ,"ConstantField","SolenoidalField",
409 "ToroidalField" ,"Grid3DField" ,"RealisticField" ,
410 "UndefinedField","AthenaField" , "?????" };
411
412 int mode = m_fieldprop.magneticFieldMode();
413 if(mode<0 || mode>8 ) mode = 8;
414
415 int n = 62-fieldmode[mode].size();
416 std::string s3; for(int i=0; i<n; ++i) s3.append(" "); s3.append("|");
417
418 n = 62-m_trtname.key().size();
419 std::string s4; for(int i=0; i<n; ++i) s4.append(" "); s4.append("|");
420
421 n = 62-m_extensionTool.type().size();
422 std::string s7; for(int i=0; i<n; ++i) s7.append(" "); s7.append("|");
423
424
425 out<<"|----------------------------------------------------------------------"
426 <<"-------------------|"
427 <<std::endl;
428 out<<"| Tool tracks extension | "<<m_extensionTool.type()<<s7<<std::endl;
429 out<<"| Magnetic field mode | "<<fieldmode[mode] <<s3<<std::endl;
430 out<<"| TRT container | "<<m_trtname.key().size() <<s4<<std::endl;
431 out<<"| Min. number straws | "
432 <<std::setw(12)<<m_clustersCut
433 <<" |"<<std::endl;
434 out<<"| Number neg. bar. layers | "
435 <<std::setw(12)<<condData.m_nlayers[1]
436 <<" |"<<std::endl;
437 out<<"| Number pos. bar. layers | "
438 <<std::setw(12)<<condData.m_nlayers[2]
439 <<" |"<<std::endl;
440 out<<"| Number neg. end. layers | "
441 <<std::setw(12)<<condData.m_nlayers[0]
442 <<" |"<<std::endl;
443 out<<"| Number pos. end. layers | "
444 <<std::setw(12)<<condData.m_nlayers[3]
445 <<" |"<<std::endl;
446 out<<"| Number neg. bar. straws | "
447 <<std::setw(12)<<condData.m_nstraws[1]
448 <<" |"<<std::endl;
449 out<<"| Number pos. bar. straws | "
450 <<std::setw(12)<<condData.m_nstraws[2]
451 <<" |"<<std::endl;
452 out<<"| Number neg. end. straws | "
453 <<std::setw(12)<<condData.m_nstraws[0]
454 <<" |"<<std::endl;
455 out<<"| Number pos. end. straws | "
456 <<std::setw(12)<<condData.m_nstraws[3]
457 <<" |"<<std::endl;
458 out<<"| Number azimut. channels | "
459 <<std::setw(12)<<m_nPhi
460 <<" |"<<std::endl;
461 out<<"| Number moment. channels | "
462 <<std::setw(12)<<m_nMom
463 <<" |"<<std::endl;
464 out<<"| Number histog. channels | "
465 <<std::setw(12)<<m_histsize
466 <<" |"<<std::endl;
467 out<<"| Number cluster links | "
468 <<std::setw(12)<<condData.m_cirsize
469 <<" |"<<std::endl;
470 out<<"| Use PRD-to-track assoc.?| "
471 <<std::setw(12)<< (!m_prdToTrackMap.key().empty() ? "yes" : "no ")
472 <<" |"<<std::endl;
473 out<<"| Remove noise ? | "
474 <<std::setw(12)<<m_removeNoise
475 <<" |"<<std::endl;
476 out<<"|----------------------------------------------------------------------"
477 <<"-------------------|"
478 <<std::endl;
479 return out;
480}
static const Attributes_t empty
ToolHandle< ITRT_TrackExtensionTool > m_extensionTool
SG::ReadHandleKey< InDet::TRT_DriftCircleContainer > m_trtname
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap

◆ dumpEvent()

MsgStream & InDet::TRT_TrackSegmentsMaker_ATLxk::dumpEvent ( MsgStream & out,
InDet::ITRT_TrackSegmentsMaker::IEventData & event_data )
staticprotected

Definition at line 486 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

488{
489 TRT_TrackSegmentsMaker_ATLxk::EventData &
491 out<<"|----------------------------------------------------------------------"
492 <<"-------------------|"
493 <<std::endl;
494 out<<"| Number drift circles | "
495 <<std::setw(12)<<event_data.m_clusters
496 <<" |"<<std::endl;
497 out<<"| Number local calls | "
498 <<std::setw(12)<<event_data.m_nlocal
499 <<" |"<<std::endl;
500 out<<"| Number found segments | "
501 <<std::setw(12)<<event_data.m_nsegments
502 <<" |"<<std::endl;
503 out<<"| Number save segments | "
504 <<std::setw(12)<<event_data.m_segments.size()
505 <<" |"<<std::endl;
506 out<<"|----------------------------------------------------------------------"
507 <<"-------------------|"
508 <<std::endl;
509 return out;
510}
static EventData & getPrivateEventData(InDet::ITRT_TrackSegmentsMaker::IEventData &virt_event_data)

◆ endEvent()

void InDet::TRT_TrackSegmentsMaker_ATLxk::endEvent ( InDet::ITRT_TrackSegmentsMaker::IEventData & event_data) const
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 281 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

282{
283 if (msgLvl(MSG::DEBUG)) {
284 TRT_TrackSegmentsMaker_ATLxk::EventData &
286 dumpEvent(msg(MSG::DEBUG),event_data);
287 dumpConditions(msg(MSG::DEBUG));
288 msg(MSG::DEBUG) << endmsg;
289 }
290}
#define endmsg
bool msgLvl(const MSG::Level lvl) const
MsgStream & msg() const
static MsgStream & dumpEvent(MsgStream &out, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data)

◆ eraseHistogramm()

void InDet::TRT_TrackSegmentsMaker_ATLxk::eraseHistogramm ( TRT_TrackSegmentsMaker_ATLxk::EventData & event_data) const
protected

Definition at line 525 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

526{
527 for(int i=0; i!=m_histsize; i+=10) {
528
529 event_data.m_U.H4[i ]=0;
530
531 event_data.m_U.H4[i+1]=0;
532 event_data.m_U.H4[i+2]=0;
533 event_data.m_U.H4[i+3]=0;
534 event_data.m_U.H4[i+4]=0;
535 event_data.m_U.H4[i+5]=0;
536 event_data.m_U.H4[i+6]=0;
537 event_data.m_U.H4[i+7]=0;
538 event_data.m_U.H4[i+8]=0;
539 event_data.m_U.H4[i+9]=0;
540 }
541}

◆ evtStore()

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.

◆ 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

◆ fillHistogramm()

void InDet::TRT_TrackSegmentsMaker_ATLxk::fillHistogramm ( float Fs,
int s,
TRT_TrackSegmentsMaker_ATLxk::EventData & event_data ) const
protected

Definition at line 547 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

549{
550 const TRT_TrackSegmentsToolCondData_xk &condData = *getConditionsData();
551
552 int s0 = condData.m_ndzdr[s]*m_Ts;
553 int f = int((Fs*m_A-condData.m_slope[s])*128.); if(f<0) f+=m_Ns128;
554 int sf = condData.m_islope[s];
555
556 // Loop through all momentum slopes
557 //
558 for(int i=s0; i!=s0+m_Ts; i+=m_nPhi) {
559 int k =(f>>7); f+=sf; k<m_nPhi ? ++event_data.m_U.H[k+i] : ++event_data.m_U.H[k+i-m_nPhi];
560 }
561}

◆ finalize()

StatusCode InDet::TRT_TrackSegmentsMaker_ATLxk::finalize ( )
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 99 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

100{
101 StatusCode sc = AlgTool::finalize(); return sc;
102}
static Double_t sc
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ find()

void InDet::TRT_TrackSegmentsMaker_ATLxk::find ( const EventContext & ctx,
InDet::ITRT_TrackSegmentsMaker::IEventData & event_data,
InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap & used ) const
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 295 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

298{
299 TRT_TrackSegmentsMaker_ATLxk::EventData &
301
302 event_data.m_sizebin_iterator = event_data.m_sizebin.rbegin();
303
304 if(event_data.m_clusters<m_clustersCut) return;
305
306 const TRT_TrackSegmentsToolCondData_xk &condData = *getConditionsData();
307
308 event_data.m_clusterSegment.clear();
309 event_data.m_qualitySegment.clear();
310
311 unsigned int mc = event_data.m_clusters;
312
313 for(unsigned int n=0; n!=mc; ++n) {
314
315 unsigned int b = event_data.m_circles[n].buffer();
316 unsigned int l = event_data.m_circles[n].layer ();
317 unsigned int sb = condData.m_begin[b][l];
318 unsigned int se = condData.m_end [b][l];
319
320 // Loop through all dz/dr for given cluster
321 //
322 unsigned char max = 0;
323 unsigned int maxbin = 0;
324
325 for(unsigned int s=sb; s<=se; ++s) {
326 analyseHistogramm(max,maxbin,event_data.m_circles[n].phi(),s,event_data);
327 }
328
329 if(int(max) > m_clustersCut) {
330 event_data.m_bincluster.insert(std::make_pair(localMaximum(maxbin,event_data),n));
331 }
332 }
333
334 std::multimap<unsigned int,unsigned int>::iterator
335 bc,bce =event_data.m_bincluster.end();
336
337 unsigned int nbins = 0 ;
338 unsigned int fbin = 99999999;
339 for(bc = event_data.m_bincluster.begin(); bc!=bce; ++bc) {
340
341 if((*bc).first==fbin) ++nbins;
342 else {
343 if(fbin!=99999999 && nbins>=5) event_data.m_sizebin.insert(std::make_pair(nbins,fbin));
344 fbin=(*bc).first; nbins = 1;
345 }
346 }
347 if(fbin!=99999999 && nbins>=5) event_data.m_sizebin.insert(std::make_pair(nbins,fbin));
348 event_data.m_sizebin_iterator = event_data.m_sizebin.rbegin();
349
350 // @TODO add to event data
351 SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
352 const Trk::PRDtoTrackMap *prd_to_track_map_cptr = nullptr;
353 if (!m_prdToTrackMap.key().empty()) {
354 prd_to_track_map=SG::ReadHandle<Trk::PRDtoTrackMap>(m_prdToTrackMap, ctx);
355 if (!prd_to_track_map.isValid()) {
356 ATH_MSG_ERROR("Failed to read PRD to track association map: " << m_prdToTrackMap.key());
357 }
358 prd_to_track_map_cptr = prd_to_track_map.cptr();
359 }
360
361 // Local reconstruction and track segments production
362 //
363 while(event_data.m_sizebin_iterator!=event_data.m_sizebin.rend()) {
364
365 unsigned int bin =(*event_data.m_sizebin_iterator++).second;
366 findLocaly(ctx, bin,prd_to_track_map_cptr, event_data, used);
367 }
368
369 // Final segments preparation
370 //
371 segmentsPreparation(event_data);
372
373 event_data.m_segiterator = event_data.m_segments.begin();
374}
#define ATH_MSG_ERROR(x)
void findLocaly(const EventContext &ctx, unsigned int, const Trk::PRDtoTrackMap *prd_to_track_map, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const
void analyseHistogramm(unsigned char &, unsigned int &, float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
unsigned int localMaximum(unsigned int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
static void segmentsPreparation(TRT_TrackSegmentsMaker_ATLxk::EventData &event_data)
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
l
Printing final latex table to .tex output file.

◆ findLocaly()

void InDet::TRT_TrackSegmentsMaker_ATLxk::findLocaly ( const EventContext & ctx,
unsigned int bin,
const Trk::PRDtoTrackMap * prd_to_track_map,
TRT_TrackSegmentsMaker_ATLxk::EventData & event_data,
InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap & used ) const
protected

Definition at line 589 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

594{
595 const TRT_TrackSegmentsToolCondData_xk &condData = *getConditionsData();
596
597 const double pi=M_PI, pi2 = 2.*M_PI;
598
599 std::multimap<const InDet::TRT_DriftCircle*,Trk::TrackSegment*>::const_iterator
600 cse = event_data.m_clusterSegment.end();
601
602 std::multimap<unsigned int,unsigned int>::iterator
603 bc ,
604 bcb = event_data.m_bincluster.find(bin),
605 bce = event_data.m_bincluster.end() ;
606 int nfree = 0;
607 for(bc=bcb; bc!=bce; ++bc) {
608
609 if((*bc).first!=bin) break;
610 if(event_data.m_clusterSegment.find(event_data.m_circles[(*bc).second].circle())==cse) ++nfree;
611 }
612 if(nfree<5) return;
613 unsigned int ndzdr = bin/m_Ts;
614 unsigned int b = bin-ndzdr*m_Ts;
615 unsigned int m = b/m_nPhi;
616 float c0 = (1.-float(m)*m_Psi)*m_Ai;
617
618 bce=bc;
619 float fm = 0. ;
620 float Fo = 0. ;
621 bool first = false;
622 for(bc=bcb; bc!=bce; ++bc) {
623
624 unsigned int n = (*bc).second;
625
626 unsigned int b = event_data.m_circles[n].buffer();
627 unsigned int l = event_data.m_circles[n].layer ();
628 unsigned int s = condData.m_begin[b][l];
629 unsigned int se = condData.m_end [b][l];
630
631 for(; s<= se; ++s) {if(condData.m_ndzdr[s]==ndzdr) break;}
632 if(s>se) continue;
633 float F = event_data.m_circles[n].phi()-condData.m_slope[s]*c0;
634
635 if(!first) {
636 Fo = F; first = true;
637 }
638 else {
639 float df = F-Fo;
640 if (df > pi) df-=pi2;
641 else if(df <-pi) df+=pi2;
642 fm+=df;
643 }
644 }
645 fm = Fo+fm/float(nfree);
646
647 if (fm > pi) fm = fmod(fm+pi,pi2)-pi;
648 else if(fm <-pi) fm = fmod(fm-pi,pi2)+pi;
649
650 double pT = m_pTmin/(double(m)*m_Psi-1.);
651
652 double pin = 1./(pT*std::sqrt((1.+condData.m_dzdr[ndzdr]*condData.m_dzdr[ndzdr])));
653
654 Amg::Vector3D PSV(0.,0.,0.); Trk::PerigeeSurface PS(PSV);
655 auto Tp = PS.createUniqueTrackParameters(
656 0., 0., fm, std::atan2(1., condData.m_dzdr[ndzdr]), pin, std::nullopt);
657 ++event_data.m_nlocal;
658
659 Trk::TrackSegment* seg = m_extensionTool->findSegment(ctx, Tp.get(), *(event_data.m_extEventData),used);
660 if(!seg) return;
661
662 // Momentum cut
663 //
664 double T = seg->localParameters().get(Trk::theta );
665 double iP = seg->localParameters().get(Trk::qOverP);
666
667 // ME: let's not use a soft cut here
668 if(std::sin(T) < 0.9*m_pTmin*std::abs(iP)) {delete seg; return;}
669
670
671 ++event_data.m_nsegments;
672
673 bool isbarrel=false;
674 const Trk::MeasurementBase *lastmeas=seg->containedMeasurements().back();
675 if (std::abs(lastmeas->globalPosition().z())<750.) isbarrel=true;
676 // Number drift circles test
677 //
678 unsigned int size = isbarrel ? seg->numberOfMeasurementBases()-1 : seg->numberOfMeasurementBases()-2;
679
680 if(int(size) < m_clustersCut) {delete seg; return;}
681
682 std::vector<const Trk::MeasurementBase*>::const_iterator
683 s = seg->containedMeasurements().begin(), se = seg->containedMeasurements().end();
684
685 if(prd_to_track_map) {
686
687 // Test number unused drift circles
688 //
689 int nu = 0, ntot = 0;
690 for(++s; s!=se; ++s) {
691
692 const Trk::RIO_OnTrack* rio = dynamic_cast<const Trk::RIO_OnTrack*>(*s);
693 if(rio) {
694 ++ntot;
695 if (prd_to_track_map->isUsed(*rio->prepRawData())) ++nu;
696 }
697 }
698 // ME: use fraction cut
699 if( nu > int(ntot*m_sharedfrac)) {delete seg; return;}
700 }
701
702 // Save information about qiality and segment
703 //
704 int quality = size;
705 double Xi2 = seg->fitQuality()->chiSquared()/double(seg->fitQuality()->numberDoF());
706
707 if(Xi2 > .5) {
708 if (Xi2 > 6) quality-=9;
709 else if(Xi2 > 5.) quality-=7;
710 else if(Xi2 > 3.) quality-=5;
711 else if(Xi2 > 2.) quality-=3;
712 else if(Xi2 > 1.) quality-=1;
713 }
714
715 event_data.m_qualitySegment.insert(std::make_pair(quality,seg));
716
717 s = seg->containedMeasurements().begin();
718
719 // Save information about TRT clusters and segments
720 //
721 for(++s; s!=se; ++s) {
722 const Trk::RIO_OnTrack* rio = dynamic_cast<const Trk::RIO_OnTrack*>(*s);
723 if (!rio) continue;
724 const InDet::TRT_DriftCircleOnTrack* trt = static_cast<const InDet::TRT_DriftCircleOnTrack*>(*s);
725 const InDet::TRT_DriftCircle* dc = trt->prepRawData();
726 if(dc) event_data.m_clusterSegment.insert(std::make_pair(dc,seg));
727 }
728}
#define M_PI
static Double_t Tp(Double_t *t, Double_t *par)
#define F(x, y, z)
Definition MD5.cxx:112
#define pi
virtual const TRT_DriftCircle * prepRawData() const override final
returns the PrepRawData - is a TRT_DriftCircle in this scope
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Definition FitQuality.h:60
double chiSquared() const
returns the of the overall track fit
Definition FitQuality.h:56
double get(ParamDefs par) const
Retrieve specified parameter (const version).
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
virtual const Amg::Vector3D & globalPosition() const =0
Interface method to get the global Position.
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
const FitQuality * fitQuality() const
return the FitQuality object, returns NULL if no FitQuality is defined
const std::vector< const Trk::MeasurementBase * > & containedMeasurements() const
returns the vector of Trk::MeasurementBase objects
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)
Eigen::Matrix< double, 3, 1 > Vector3D
bool first
Definition DeMoScan.py:534
df
Printing table to screen.
unsigned long long T
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67

◆ getConditionsData()

const TRT_TrackSegmentsToolCondData_xk * InDet::TRT_TrackSegmentsMaker_ATLxk::getConditionsData ( ) const
inlineprotected

Definition at line 174 of file TRT_TrackSegmentsMaker_ATLxk.h.

174 {
175 SG::ReadCondHandle<TRT_TrackSegmentsToolCondData_xk> condDataHandle(m_condDataKey);
176 if (not condDataHandle.isValid()) {
177 ATH_MSG_FATAL("Failed to get " << m_condDataKey.key());
178 }
179 return *condDataHandle;
180 }
#define ATH_MSG_FATAL(x)
SG::ReadCondHandleKey< InDet::TRT_TrackSegmentsToolCondData_xk > m_condDataKey

◆ initialize()

StatusCode InDet::TRT_TrackSegmentsMaker_ATLxk::initialize ( )
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 50 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

51{
52 StatusCode sc = AlgTool::initialize();
53
54 // Initiate magnetic field properties
55 //
57
58 // Initialize ReadHandle
59 //
60 ATH_CHECK(m_trtname.initialize());
61
62 // Get tool for track extension to TRT
63 //
64 if(m_extensionTool.retrieve().isFailure()) {
65 ATH_MSG_FATAL("Failed to retrieve tool "<< m_extensionTool);
66 return StatusCode::FAILURE;
67 }
68 ATH_MSG_DEBUG("Retrieved tool " << m_extensionTool);
69
70 // PRD-to-track association (optional)
71 ATH_CHECK( m_prdToTrackMap.initialize( !m_prdToTrackMap.key().empty()));
72 ATH_CHECK( m_condDataKey.initialize());
73
74 // TRT
75 if (detStore()->retrieve(m_trtid, "TRT_ID").isFailure()) {
76 ATH_MSG_FATAL("Could not get TRT ID helper");
77 return StatusCode::FAILURE;
78 }
79
80 //Define set of private variables
82 m_Psi = 2./float(m_nMom-1) ;
83 m_Psi128 = m_Psi*128. ;
84 m_Ns128 = m_nPhi*128 ;
85 m_A = float(m_nPhi)/(2.*M_PI) ;
86 m_Ai = 1./m_A ;
87 m_histsize = (m_nPhi*m_nMom*26/4) ;
88
89 // Get output print level
90 //
91 m_outputlevel = msg().level()-MSG::DEBUG;
92 return sc;
93}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
const ServiceHandle< StoreGateSvc > & detStore() const
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ 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()

const InterfaceID & InDet::ITRT_TrackSegmentsMaker::interfaceID ( )
inlinestaticinherited

Definition at line 110 of file ITRT_TrackSegmentsMaker.h.

111 {
113 }
static const InterfaceID IID_ITRT_TrackSegmentsMaker("InDet::ITRT_TrackSegmentsMaker", 1, 0)

◆ localMaximum()

unsigned int InDet::TRT_TrackSegmentsMaker_ATLxk::localMaximum ( unsigned int bin,
TRT_TrackSegmentsMaker_ATLxk::EventData & event_data ) const
protected

Definition at line 763 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

765{
766 int b = bin-(bin/m_Ts)*m_Ts ;
767 int m = b/m_nPhi ;
768 int f = b-m*m_nPhi ;
769 unsigned int maxb = bin ;
770 unsigned char max = event_data.m_U.H[bin];
771
772 int a1 = bin-1; if(f== 0 ) a1+=m_nPhi; if(event_data.m_U.H[a1]>max) {max=event_data.m_U.H[a1]; maxb=a1;}
773 int a2 = bin+1; if(f==m_nPhi-1) a2-=m_nPhi; if(event_data.m_U.H[a2]>max) {max=event_data.m_U.H[a2]; maxb=a2;}
774
775 if ( m < m_nMom-1) {
776
777 int a = bin+m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
778 a = a1 +m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
779 a = a2 +m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
780
781 }
782 if ( m > 0 ) {
783
784 int a = bin-m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
785 a = a1 -m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
786 a = a2 -m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
787 }
788 return maxb;
789}
static Double_t a

◆ magneticFieldInit()

void InDet::TRT_TrackSegmentsMaker_ATLxk::magneticFieldInit ( )
protected

Definition at line 791 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

792{
793 // Build MagneticFieldProperties
794 //
795 if (m_fieldmode == "NoField" ) m_fieldprop = Trk::MagneticFieldProperties(Trk::NoField );
796 else if(m_fieldmode == "MapSolenoid") m_fieldprop = Trk::MagneticFieldProperties(Trk::FastField);
797 else m_fieldprop = Trk::MagneticFieldProperties(Trk::FullField);
798}
@ FastField
call the fast field access method of the FieldSvc
@ NoField
Field is set to 0., 0., 0.,.
@ FullField
Field is set to be realistic, but within a given Volume.

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

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

◆ newEvent()

std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventData > InDet::TRT_TrackSegmentsMaker_ATLxk::newEvent ( const EventContext & ctx) const
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 109 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

110{
111
112 const float pi2 = 2.*M_PI;
113
114 const TRT_TrackSegmentsToolCondData_xk &condData = *getConditionsData();
115
116 // Get drift circles collection
117 //
118 SG::ReadHandle<InDet::TRT_DriftCircleContainer> trtcontainer(m_trtname, ctx);
119 if(not trtcontainer.isValid()) {
120 std::stringstream msg;
121 msg << name() << " Missing TRT_DriftCircleContainer " << m_trtname.key();
122 throw std::runtime_error(msg.str());
123 }
124
125 SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
126 const Trk::PRDtoTrackMap *prd_to_track_map_cptr = nullptr;
127 if (!m_prdToTrackMap.key().empty()) {
128 prd_to_track_map=SG::ReadHandle<Trk::PRDtoTrackMap>(m_prdToTrackMap, ctx);
129 if (!prd_to_track_map.isValid()) {
130 ATH_MSG_ERROR("Failed to read PRD to track association map: " << m_prdToTrackMap.key());
131 }
132 prd_to_track_map_cptr = prd_to_track_map.cptr();
133 }
134
135
136 std::unique_ptr<TRT_TrackSegmentsMaker_ATLxk::EventData>
137 event_data = std::make_unique<TRT_TrackSegmentsMaker_ATLxk::EventData>(trtcontainer.cptr(), condData.m_cirsize);
138
139 // Initiate extension tool
140 //
141 event_data->m_extEventData = m_extensionTool->newEvent(ctx);
142
143 InDet::TRT_DriftCircleContainer::const_iterator
144 w = trtcontainer->begin(),we = trtcontainer->end();
145 int n = 0;
146 if(w!=we) {
147
148 eraseHistogramm(*event_data);
149
150 for(; w!=we; ++w) {
151
152 if(n >= condData.m_cirsize) break;
153
154 Identifier ID = (*w)->identify();
155 int be = m_trtid->barrel_ec (ID);
156 int lw = m_trtid->layer_or_wheel(ID);
157 int sl = m_trtid->straw_layer (ID);
158
159 int b; be < 0 ? b = be+2 : b = be+1;
160 int l = condData.m_flayers[b][lw]+sl;
161 unsigned int sb = condData.m_begin[b][l];
162 unsigned int se = condData.m_end [b][l];
163 unsigned int ad = 1000*b+l;
164
165 // Loop through all clusters from given detector element
166 //
167 InDet::TRT_DriftCircleCollection::const_iterator
168 c = (*w)->begin(), ce = (*w)->end();
169 for(; c!=ce; ++c) {
170
171 if(prd_to_track_map_cptr && prd_to_track_map_cptr->isUsed(*(*c))) continue;
172 if(m_removeNoise && (*c)->isNoise() ) continue;
173
174 if(n >= condData.m_cirsize) break;
175
176 int ns = m_trtid->straw((*c)->identify());
177 const Amg::Vector3D& sc = (*c)->detectorElement()->strawCenter(ns);
178 float Fs = std::atan2(sc.y(),sc.x()); if(Fs<0.) Fs+=pi2;
179 event_data->m_circles[n].set((*c),Fs,ad);
180
181 // Loop through all dz/dr for given cluster
182 //
183 for(unsigned int s=sb; s<=se; ++s) fillHistogramm (Fs,s,*event_data);
184 ++n;
185 }
186 }
187 }
188 event_data->m_clusters = n;
189 return std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>(event_data.release());
190}
std::vector< Identifier > ID
void eraseHistogramm(TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
void fillHistogramm(float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const

◆ newRegion()

std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventData > InDet::TRT_TrackSegmentsMaker_ATLxk::newRegion ( const EventContext & ctx,
const std::vector< IdentifierHash > & vTRT ) const
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 197 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

199{
200 const float pi2 = 2.*M_PI;
201
202 const TRT_TrackSegmentsToolCondData_xk &condData = *getConditionsData();
203
204 // Get drift cilrcles collection
205 //
206 SG::ReadHandle<InDet::TRT_DriftCircleContainer> trtcontainer(m_trtname, ctx);
207 if(not trtcontainer.isValid()) {
208 ATH_MSG_DEBUG("Could not get TRT_DriftCircleContainer");
209 }
210
211 SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
212 const Trk::PRDtoTrackMap *prd_to_track_map_cptr = nullptr;
213 if (!m_prdToTrackMap.key().empty()) {
214 prd_to_track_map=SG::ReadHandle<Trk::PRDtoTrackMap>(m_prdToTrackMap, ctx);
215 if (!prd_to_track_map.isValid()) {
216 ATH_MSG_ERROR("Failed to read PRD to track association map: " << m_prdToTrackMap.key());
217 }
218 prd_to_track_map_cptr = prd_to_track_map.cptr();
219 }
220
221 std::unique_ptr<TRT_TrackSegmentsMaker_ATLxk::EventData>
222 event_data = std::make_unique<TRT_TrackSegmentsMaker_ATLxk::EventData>(trtcontainer.cptr(), condData.m_cirsize);
223
224 if(trtcontainer.isValid()) {
225 // Initiate extension tool
226 //
227 event_data->m_extEventData = m_extensionTool->newEvent(ctx);
228
229 eraseHistogramm(*event_data);
230
231 std::vector<IdentifierHash>::const_iterator d=vTRT.begin(),de=vTRT.end();
232 int n = 0;
233 for(; d!=de; ++d) {
234
235 const auto *w = trtcontainer->indexFindPtr((*d));
236
237 if(w!=nullptr) {
238
239 Identifier ID = w->identify();
240 int be = m_trtid->barrel_ec (ID);
241 int lw = m_trtid->layer_or_wheel(ID);
242 int sl = m_trtid->straw_layer (ID);
243
244 int b; be < 0 ? b = be+2 : b = be+1;
245 int l = condData.m_flayers[b][lw]+sl;
246 unsigned int sb = condData.m_begin[b][l];
247 unsigned int se = condData.m_end [b][l];
248 unsigned int ad = 1000*b+l;
249
250 InDet::TRT_DriftCircleCollection::const_iterator
251 c = w->begin(), ce = w->end();
252
253 for(; c!=ce; ++c) {
254
255 if(prd_to_track_map_cptr && prd_to_track_map_cptr->isUsed(*(*c))) continue;
256 if(m_removeNoise && (*c)->isNoise() ) continue;
257
258 if(n >= condData.m_cirsize) break;
259
260 int ns = m_trtid->straw((*c)->identify());
261 const Amg::Vector3D& sc = (*c)->detectorElement()->strawCenter(ns);
262 float Fs = std::atan2(sc.y(),sc.x()); if(Fs<0.) Fs+=pi2;
263 event_data->m_circles[n].set((*c),Fs,ad);
264
265 // Loop through all dz/dr for given cluster
266 //
267 for(unsigned int s=sb; s<=se; ++s) fillHistogramm (Fs,s,*event_data);
268 ++n;
269 }
270 }
271 }
272 event_data->m_clusters = n;
273 }
274 return std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>( event_data.release() );
275}

◆ next()

Trk::TrackSegment * InDet::TRT_TrackSegmentsMaker_ATLxk::next ( InDet::ITRT_TrackSegmentsMaker::IEventData & event_data) const
overridevirtual

Implements InDet::ITRT_TrackSegmentsMaker.

Definition at line 380 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

381{
382 TRT_TrackSegmentsMaker_ATLxk::EventData &
384
385 if(event_data.m_segiterator!=event_data.m_segments.end()) return (*event_data.m_segiterator++);
386 return nullptr;
387}

◆ 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();
384 }
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)

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

◆ segmentsPreparation()

void InDet::TRT_TrackSegmentsMaker_ATLxk::segmentsPreparation ( TRT_TrackSegmentsMaker_ATLxk::EventData & event_data)
staticprotected

Definition at line 734 of file TRT_TrackSegmentsMaker_ATLxk.cxx.

735{
736 std::multimap<int,Trk::TrackSegment*>::reverse_iterator
737 qs = event_data.m_qualitySegment.rbegin();
738
739 for(; qs!=event_data.m_qualitySegment.rend(); ++qs) {
740
741 int nfree = 0;
742
743 std::vector<const Trk::MeasurementBase*>::const_iterator
744 s =(*qs).second->containedMeasurements().begin(),
745 se =(*qs).second->containedMeasurements().end ();
746
747 for(++s; s!=se; ++s) {
748 const Trk::RIO_OnTrack* rio = dynamic_cast<const Trk::RIO_OnTrack*>(*s);
749 if (!rio) continue;
750 const InDet::TRT_DriftCircleOnTrack* trt = static_cast<const InDet::TRT_DriftCircleOnTrack*>(*s);
751 const InDet::TRT_DriftCircle* dc = trt->prepRawData();
752 if(dc && event_data.m_clusterSegment.erase(dc)) ++nfree;
753 }
754 if(nfree >= 7) event_data.m_segments.push_back((*qs).second);
755 else delete (*qs).second;
756 }
757}

◆ 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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_A

float InDet::TRT_TrackSegmentsMaker_ATLxk::m_A {}
protected

Definition at line 164 of file TRT_TrackSegmentsMaker_ATLxk.h.

164{} ;

◆ m_Ai

float InDet::TRT_TrackSegmentsMaker_ATLxk::m_Ai {}
protected

Definition at line 165 of file TRT_TrackSegmentsMaker_ATLxk.h.

165{} ;

◆ m_clustersCut

IntegerProperty InDet::TRT_TrackSegmentsMaker_ATLxk::m_clustersCut {this, "MinNumberDriftCircles", 10}
protected

Definition at line 151 of file TRT_TrackSegmentsMaker_ATLxk.h.

151{this, "MinNumberDriftCircles", 10};

◆ m_condDataKey

SG::ReadCondHandleKey<InDet::TRT_TrackSegmentsToolCondData_xk> InDet::TRT_TrackSegmentsMaker_ATLxk::m_condDataKey {this, "CondDataKey","TRT_TrackSegmentsToolCondData_xk", "Key of TRT_TrackSegmentsToolCondData"}
protected

Definition at line 146 of file TRT_TrackSegmentsMaker_ATLxk.h.

146{this, "CondDataKey","TRT_TrackSegmentsToolCondData_xk", "Key of TRT_TrackSegmentsToolCondData"};

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

ToolHandle<ITRT_TrackExtensionTool> InDet::TRT_TrackSegmentsMaker_ATLxk::m_extensionTool {this, "TrackExtensionTool", "InDet::TRT_TrackExtensionTool_xk"}
protected

Definition at line 140 of file TRT_TrackSegmentsMaker_ATLxk.h.

141{this, "TrackExtensionTool", "InDet::TRT_TrackExtensionTool_xk"} ; // TRT track extension tool

◆ m_fieldmode

StringProperty InDet::TRT_TrackSegmentsMaker_ATLxk::m_fieldmode
protected
Initial value:
{this, "MagneticFieldMode", "MapSolenoid",
"Mode of magnetic field"}

Definition at line 138 of file TRT_TrackSegmentsMaker_ATLxk.h.

138 {this, "MagneticFieldMode", "MapSolenoid",
139 "Mode of magnetic field"};

◆ m_fieldprop

Trk::MagneticFieldProperties InDet::TRT_TrackSegmentsMaker_ATLxk::m_fieldprop
protected

Definition at line 143 of file TRT_TrackSegmentsMaker_ATLxk.h.

◆ m_histsize

int InDet::TRT_TrackSegmentsMaker_ATLxk::m_histsize {}
protected

Definition at line 166 of file TRT_TrackSegmentsMaker_ATLxk.h.

166{} ; // histogram size

◆ m_nMom

IntegerProperty InDet::TRT_TrackSegmentsMaker_ATLxk::m_nMom
protected
Initial value:
{this, "NumberMomentumChannel", 70,
"number momentum channel"}

Definition at line 156 of file TRT_TrackSegmentsMaker_ATLxk.h.

156 {this, "NumberMomentumChannel", 70,
157 "number momentum channel"};

◆ m_nPhi

IntegerProperty InDet::TRT_TrackSegmentsMaker_ATLxk::m_nPhi
protected
Initial value:
{this, "NumberAzimuthalChannel", 500,
"number azimuthal channel"}

Definition at line 154 of file TRT_TrackSegmentsMaker_ATLxk.h.

154 {this, "NumberAzimuthalChannel", 500,
155 "number azimuthal channel"};

◆ m_Ns128

int InDet::TRT_TrackSegmentsMaker_ATLxk::m_Ns128 {}
protected

Definition at line 161 of file TRT_TrackSegmentsMaker_ATLxk.h.

161{} ;

◆ m_outputlevel

int InDet::TRT_TrackSegmentsMaker_ATLxk::m_outputlevel {}
protected

Definition at line 159 of file TRT_TrackSegmentsMaker_ATLxk.h.

159{} ;

◆ m_prdToTrackMap

SG::ReadHandleKey<Trk::PRDtoTrackMap> InDet::TRT_TrackSegmentsMaker_ATLxk::m_prdToTrackMap {this,"PRDtoTrackMap",""}
protected

Definition at line 147 of file TRT_TrackSegmentsMaker_ATLxk.h.

148{this,"PRDtoTrackMap",""};

◆ m_Psi

float InDet::TRT_TrackSegmentsMaker_ATLxk::m_Psi {}
protected

Definition at line 162 of file TRT_TrackSegmentsMaker_ATLxk.h.

162{} ;

◆ m_Psi128

float InDet::TRT_TrackSegmentsMaker_ATLxk::m_Psi128 {}
protected

Definition at line 163 of file TRT_TrackSegmentsMaker_ATLxk.h.

163{} ;

◆ m_pTmin

FloatProperty InDet::TRT_TrackSegmentsMaker_ATLxk::m_pTmin {this, "pTmin", 500.}
protected

Definition at line 152 of file TRT_TrackSegmentsMaker_ATLxk.h.

152{this, "pTmin", 500.};

◆ m_removeNoise

BooleanProperty InDet::TRT_TrackSegmentsMaker_ATLxk::m_removeNoise {this, "RemoveNoiseDriftCircles", true}
protected

Definition at line 150 of file TRT_TrackSegmentsMaker_ATLxk.h.

150{this, "RemoveNoiseDriftCircles", true};

◆ m_sharedfrac

FloatProperty InDet::TRT_TrackSegmentsMaker_ATLxk::m_sharedfrac {this, "sharedFrac", 0.3}
protected

Definition at line 153 of file TRT_TrackSegmentsMaker_ATLxk.h.

153{this, "sharedFrac", 0.3};

◆ m_trtid

const TRT_ID* InDet::TRT_TrackSegmentsMaker_ATLxk::m_trtid {}
protected

Definition at line 144 of file TRT_TrackSegmentsMaker_ATLxk.h.

144{} ;

◆ m_trtname

SG::ReadHandleKey<InDet::TRT_DriftCircleContainer> InDet::TRT_TrackSegmentsMaker_ATLxk::m_trtname {this,"TRT_ClustersContainer","TRT_DriftCircles","RHK to retrieve TRT_DriftCircles"}
protected

Definition at line 145 of file TRT_TrackSegmentsMaker_ATLxk.h.

145{this,"TRT_ClustersContainer","TRT_DriftCircles","RHK to retrieve TRT_DriftCircles"}; // TRTs container ; // Name TRT container

◆ m_Ts

int InDet::TRT_TrackSegmentsMaker_ATLxk::m_Ts {}
protected

Definition at line 160 of file TRT_TrackSegmentsMaker_ATLxk.h.

160{} ;

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