|
ATLAS Offline Software
|
#include <TRT_SeededTrackFinder.h>
|
struct | Stat_t |
| Global Counters for final algorithm statistics. More...
|
|
|
| TRT_SeededTrackFinder (const std::string &name, ISvcLocator *pSvcLocator) |
| Standard Algorithm methods
More...
|
|
virtual | ~TRT_SeededTrackFinder () |
|
StatusCode | initialize () override |
|
StatusCode | execute (const EventContext &ctx) const override |
|
StatusCode | finalize () override |
|
MsgStream & | dump (MsgStream &out) const |
| Print internal tool parameters and status
More...
|
|
std::ostream & | dump (std::ostream &out) const |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) 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 | 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 |
|
|
BooleanProperty | m_doRefit {this, "FinalRefit", false, "Do a final careful refit of tracks"} |
|
BooleanProperty | m_doExtension {this, "TrtExtension", false, "Find the TRT extension of the track"} |
|
BooleanProperty | m_rejectShortExten {this, "RejectShortExtension", false, "Reject short extensions"} |
|
BooleanProperty | m_doStat {this, "FinalStatistics", false, "Statistics of final tracks"} |
|
BooleanProperty | m_saveTRT {this, "OutputSegments", true, "Save stand-alone TRT segments"} |
|
IntegerProperty | m_MaxSegNum |
|
UnsignedIntegerProperty | m_minTRTonSegment {this, "MinTRTonSegment", 10, "Minimum Number of TRT Hits on segment"} |
|
UnsignedIntegerProperty | m_minTRTonly {this, "MinTRTonly", 15, "Minimum number of TRT hits on TRT only"} |
|
ToolHandle< ITRT_SeededTrackFinder > | m_trackmaker |
|
ToolHandle< Trk::ITrackFitter > | m_fitterTool |
|
ToolHandle< ITRT_TrackExtensionTool > | m_trtExtension |
|
SG::ReadHandleKey< Trk::SegmentCollection > | m_SegmentsKey {this, "InputSegmentsLocation", "TRTSegments", "TRT segments to use"} |
|
SG::WriteHandleKey< TrackCollection > | m_outTracksKey |
|
SG::ReadHandleKey< Trk::PRDtoTrackMap > | m_prdToTrackMap {this, "PRDtoTrackMap", "" } |
|
ToolHandle< Trk::IExtendedTrackSummaryTool > | m_trackSummaryTool {this, "TrackSummaryTool", "InDetTrackSummaryToolNoHoleSearch"} |
|
ToolHandle< Trk::IExtrapolator > | m_extrapolator {this, "Extrapolator", ""} |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"} |
|
BooleanProperty | m_SiExtensionCuts {this, "SiExtensionCuts", false, "enable cuts after Si segment finding"} |
|
DoubleProperty | m_minPt {this, "minPt", 500., "minimal Pt cut"} |
|
DoubleProperty | m_maxEta {this, "maxEta", 2.7, "maximal Eta cut"} |
|
DoubleProperty | m_maxRPhiImp {this, "maxRPhiImp", 10., "maximal RPhi impact parameter cut"} |
|
DoubleProperty | m_maxZImp {this, "maxZImp", 250., "maximal z impact parameter cut"} |
|
BooleanProperty | m_caloSeededRoI {this, "CaloSeededRoI", false} |
|
SG::ReadHandleKey< ROIPhiRZContainer > | m_caloClusterROIKey |
|
ToolHandle< IRegSelTool > | m_regionSelector |
|
FloatProperty | m_deltaEta {this, "dEtaCaloRoI", 0.1, "delta Eta used for RoI creation"} |
|
FloatProperty | m_deltaPhi {this, "dPhiCaloRoI", 0.25, "delta Phi used for RoI creation"} |
|
FloatProperty | m_deltaZ {this, "dZCaloRoI", 300., "delta Z used for RoI creation"} |
|
std::mutex m_statMutex | ATLAS_THREAD_SAFE |
|
Stat_t m_totalStat | ATLAS_THREAD_SAFE |
|
InDet::TRT_SeededTrackFinde is an algorithm which produces tracks moving outside-in in the Inner Detector.
Definition at line 54 of file TRT_SeededTrackFinder.h.
◆ StoreGateSvc_t
◆ TRT_SeededTrackFinder()
InDet::TRT_SeededTrackFinder::TRT_SeededTrackFinder |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~TRT_SeededTrackFinder()
virtual InDet::TRT_SeededTrackFinder::~TRT_SeededTrackFinder |
( |
| ) |
|
|
inlinevirtual |
◆ Analyze()
Do some statistics analysis at the end of each event.
Loop over tracks in track collection
Concentrate on the Si component of the track
Definition at line 668 of file TRT_SeededTrackFinder.cxx.
672 int nsct1{}, nsct2{}, nsct3{}, nsct4{};
673 int nsctTot1{}, nsctTot2{}, nsctTot3{}, nsctTot4{};
674 int npix1{}, npix2{}, npix3{};
675 int npixTot1{}, npixTot2{}, npixTot3{};
679 for (;
r !=
re ; ++
r){
680 nsct1=nsct2=nsct3=nsct4=0; npix1=npix2=npix3=0;
682 if(!newtsos)
continue;
689 if((40.<=rc)&&(
rc<80.)){npix1++;}
690 if((80.<=rc)&&(
rc<100.)){npix2++;}
691 if((100.<=rc)&&(
rc<150.)){npix3++;}
692 if((280.<=rc)&&(
rc<340.)){nsct1++;}
693 if((340.<=rc)&&(
rc<390.)){nsct2++;}
694 if((390.<=rc)&&(
rc<460.)){nsct3++;}
695 if((460.<=rc)&&(
rc<550.)){nsct4++;}
698 nsctTot1+=nsct1; nsctTot2+=nsct2; nsctTot3+=nsct3; nsctTot4+=nsct4;
699 npixTot1+=npix1; npixTot2+=npix2; npixTot3+=npix3;
701 ATH_MSG_DEBUG(
"Total hits on 1st SCT: "<<nsctTot1<<
" 2nd SCT: "<<nsctTot2<<
" 3rd SCT: "<<nsctTot3<<
" 4th SCT: "<<nsctTot4);
702 ATH_MSG_DEBUG(
"Total hits on 1st Pixel: "<<npixTot1<<
" 2nd Pixel: "<<npixTot2<<
" 3rd Pixel: "<<npixTot3);
◆ cardinality()
unsigned int AthReentrantAlgorithm::cardinality |
( |
| ) |
const |
|
overridevirtualinherited |
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 55 of file AthReentrantAlgorithm.cxx.
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ dump() [1/2]
MsgStream& InDet::TRT_SeededTrackFinder::dump |
( |
MsgStream & |
out | ) |
const |
Print internal tool parameters and status
◆ dump() [2/2]
std::ostream& InDet::TRT_SeededTrackFinder::dump |
( |
std::ostream & |
out | ) |
const |
◆ dumpevent()
Definition at line 461 of file TRT_SeededTrackFinder.cxx.
463 out<<
"|-------------------------------------------------------------------"<<std::endl;
464 out<<
"| Investigated :"<<std::endl
467 <<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNTrtSegGood] <<
" TRT Segments after selection"<<std::endl;
469 out<<
"|-------------------------------------------------------------------"<<std::endl;
470 out<<
"| "<<std::setw(7)<<
stat.m_counter[
Stat_t::kNTrtLimit] <<
" TRT segments lost because of processing limit"<<std::endl;
472 out<<
"|-------------------------------------------------------------------"<<std::endl;
477 if (
stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]>0) {
478 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt] <<
" number ot TRT only tracks created"<<std::endl;
481 out<<
"|-------------------------------------------------------------------"<<std::endl;
482 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNTrtExtCalls]<<
" number of times TRT extension is called"<<std::endl
483 <<
"| "<<std::setw(7)<<
stat.m_counter[
Stat_t::kNTrtExt] <<
" number of good TRT extension"<<std::endl;
485 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNTrtExtBad]<<
" number of bad TRT extension"<<std::endl;
487 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNTrtExtFail]<<
" number of failed TRT extension and fallback"<<std::endl;
489 out<<
"|-------------------------------------------------------------------"<<std::endl;
490 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNBckTrkSi] <<
" TRT+Si tracks created of output"<<std::endl;
494 out<<
"|-------------------------------------------------------------------";
◆ dumptools()
MsgStream & InDet::TRT_SeededTrackFinder::dumptools |
( |
MsgStream & |
out | ) |
const |
|
protected |
Definition at line 430 of file TRT_SeededTrackFinder.cxx.
433 std::string
s1;
for(
int i=0;
i<
n; ++
i)
s1.append(
" ");
s1.append(
"|");
435 std::string
s2;
for(
int i=0;
i<
n; ++
i)
s2.append(
" ");
s2.append(
"|");
437 std::string
s3;
for(
int i=0;
i<
n; ++
i)
s3.append(
" ");
s3.append(
"|");
439 std::string
s4;
for(
int i=0;
i<
n; ++
i)
s4.append(
" ");
s4.append(
"|");
441 std::string s5;
for(
int i=0;
i<
n; ++
i) s5.append(
" "); s5.append(
"|");
443 out<<
"|----------------------------------------------------------------------"
444 <<
"-------------------|"
446 out<<
"| Tool for TRT seeded track finding | "<<
m_trackmaker.type() <<
s1<<std::endl;
451 out<<
"|----------------------------------------------------------------------"
452 <<
"-------------------|"
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode InDet::TRT_SeededTrackFinder::execute |
( |
const EventContext & |
ctx | ) |
const |
|
override |
Transform the original TRT segment into a track
Definition at line 118 of file TRT_SeededTrackFinder.cxx.
124 if(!segments.isValid()){
125 ATH_MSG_FATAL (
"No segment with name " << segments.name() <<
" found in StoreGate!");
126 return StatusCode::FAILURE;
128 ATH_MSG_DEBUG (
"Found segments collection " << segments.name() <<
" in StoreGate!");
134 ATH_MSG_DEBUG (
"TRT track container size huge; will process event partially if number of max segments reached !!!");
138 std::unique_ptr<InDet::ITRT_SeededTrackFinder::IEventData> event_data_p;
141 std::unique_ptr<RoiDescriptor> roiComp = std::make_unique<RoiDescriptor>(
true);
142 if (calo_rois.isValid()) {
145 double beamZ = beamSpotHandle->beamVtx().position().z();
148 for (
const ROIPhiRZ &the_roi : *calo_rois) {
149 double eta = the_roi.eta();
150 double phi = the_roi.phi();
157 roi =
new RoiDescriptor(
eta, roiEtaMin, roiEtaMax,
phi, roiPhiMin ,roiPhiMax, beamZ, roiZMin,roiZMax);
162 std::vector<IdentifierHash> listOfSCTIds;
163 std::vector<IdentifierHash> listOfPixIds;
167 event_data_p =
m_trackmaker->newRegion(ctx, combinatorialData, listOfPixIds, listOfSCTIds);
169 event_data_p =
m_trackmaker->newEvent(ctx, combinatorialData);
172 std::unique_ptr<InDet::ITRT_TrackExtensionTool::IEventData> ext_event_data_p(
m_trtExtension->newEvent(ctx) );
173 std::unique_ptr<TrackCollection> outTracks = std::make_unique<TrackCollection>();
174 std::vector<Trk::Track*> tempTracks;
175 tempTracks.reserve(128);
177 ATH_MSG_DEBUG (
"Begin looping over all TRT segments in the event");
181 for(; iseg != isegEnd; ++ iseg) {
198 ATH_MSG_DEBUG (
"====> Reached maximal number of segments in event, stop !!!");
206 ev_stat.m_counter[Stat_t::Stat_t::kNTrtSegGood]++;
208 std::list<Trk::Track*> trackSi =
m_trackmaker->getTrack(ctx, *event_data_p, *trackTRT);
209 if (trackSi.empty()) {
210 ATH_MSG_DEBUG (
"No Si track candidates associated to the TRT track ");
218 ATH_MSG_DEBUG (
"Failed to make a track out of the TRT segment!");
222 ev_stat.m_counter[
Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]++;
224 outTracks->push_back(trtSeg);
229 ATH_MSG_DEBUG (
"Found " << (trackSi.size()) <<
" Si tracks associated to the TRT track ");
231 std::list<Trk::Track*>::const_iterator itt = trackSi.begin();
232 std::list<Trk::Track*>::const_iterator ittEnd = trackSi.end();
233 for (; itt != ittEnd ; ++itt){
234 tempTracks.push_back(*itt);
246 auto input = (*itt)->trackParameters()->front()->uniqueClone();
264 beamSpotPosition = beamSpotHandle->beamVtx().position();
270 std::unique_ptr<const Trk::TrackParameters> parm =
272 ctx, *
input, perigeeSurface);
273 std::unique_ptr<const Trk::Perigee> extrapolatedPerigee =
nullptr;
275 extrapolatedPerigee.reset(
static_cast<const Trk::Perigee*
>(parm.release()));
277 if (!extrapolatedPerigee) {
278 ATH_MSG_WARNING(
"Extrapolation of perigee failed, this should never happen" );
304 ATH_MSG_DEBUG (
"Try to improve TRT calling extension tool.");
306 ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtCalls]++;
308 std::vector<const Trk::MeasurementBase*>& tn =
309 m_trtExtension->extendTrack(ctx, *(*itt), *ext_event_data_p, map);
312 ATH_MSG_DEBUG (
"No new segment found, use input segment as fallback.");
314 ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtFail]++;
328 std::vector<const Trk::MeasurementBase*>::const_iterator iv, ive=tn.end();
329 for(iv=tn.begin(); iv!=ive; ++iv)
delete (*iv);
338 ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtBad]++;
340 std::vector<const Trk::MeasurementBase*>::const_iterator iv, ive=tn.end();
341 for(iv=tn.begin(); iv!=ive; ++iv)
delete (*iv);
345 ATH_MSG_DEBUG (
"Do not try to extend Si track, merging it with input TRT.");
355 ATH_MSG_DEBUG (
"Failed to make a track out of the TRT segment!");
360 ev_stat.m_counter[
Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]++;
366 outTracks->push_back(trtSeg);
371 ev_stat.m_counter[
Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkSi]++;
377 outTracks->push_back(globalTrackNew);
390 return StatusCode::FAILURE;
394 std::lock_guard<std::mutex> lock(m_statMutex);
395 m_totalStat += ev_stat;
398 for (
auto *
p : tempTracks){
408 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
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
◆ extraOutputDeps()
const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ finalize()
StatusCode InDet::TRT_SeededTrackFinder::finalize |
( |
| ) |
|
|
override |
◆ initialize()
StatusCode InDet::TRT_SeededTrackFinder::initialize |
( |
| ) |
|
|
override |
◆ inputHandles()
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.
◆ isClonable()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, InDet::SiSPGNNTrackMaker, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ mergeExtension()
Merge a TRT track extension and a Si track component into one global ID track.
Construct the new track
Definition at line 619 of file TRT_SeededTrackFinder.cxx.
626 auto ntsos = std::make_unique<Trk::TrackStates>();
629 for (p_stsos = stsos->
begin(); p_stsos != stsos->
end(); ++p_stsos) {
630 ntsos->push_back((*p_stsos)->clone());
633 for (
auto &
it : tS) {
634 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
637 ntsos->push_back(seg_tsos);
642 std::unique_ptr<Trk::Track> newTrack( std::make_unique<Trk::Track>(
info, std::move(ntsos), std::move(fq)) );
651 const Trk::Perigee* perTrack=newTrack->perigeeParameters();
654 if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
660 return newTrack.release();
◆ mergeSegments()
Protected methods
Merge a TRT track segment and a Si track component into one global ID track
Construct the new track
Definition at line 503 of file TRT_SeededTrackFinder.cxx.
509 auto ntsos = std::make_unique<Trk::TrackStates>();
513 for (p_stsos=stsos->
begin(); p_stsos != stsos->
end(); ++p_stsos) {
514 ntsos->push_back( (*p_stsos)->clone() );
522 ATH_MSG_DEBUG (
"Too few Si hits.Will keep pseudomeasurement...");
524 ntsos->push_back(seg_tsos);
527 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
530 ntsos->push_back(seg_tsos);
537 std::unique_ptr<Trk::Track> newTrack(std::make_unique<Trk::Track>(
info, std::move(ntsos), std::move(fq)));
546 const Trk::Perigee* perTrack=newTrack->perigeeParameters();
549 if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
554 return newTrack.release();
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
◆ renounceArray()
◆ segToTrack()
Transform a TRT track segment into a track
Definition at line 561 of file TRT_SeededTrackFinder.cxx.
562 ATH_MSG_DEBUG (
"Transforming the TRT segment into a track...");
567 throw std::logic_error(
"Unhandled surface.");
573 surf->createUniqueParameters<5,
Trk::
Charged>(
574 p(0),
p(1),
p(2),
p(3),
p(4), std::move(ep));
576 ATH_MSG_DEBUG(
"Initial TRT Segment Parameters for refitting " << (*segPar) );
578 ATH_MSG_DEBUG(
"Could not get initial TRT segment parameters! " );
584 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
591 ntsos->push_back(seg_tsos);
595 std::unique_ptr<Trk::Track> newTrack = std::make_unique<Trk::Track>(
info, std::move(ntsos),
nullptr);
607 if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
612 return newTrack.release();
◆ setFilterPassed()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ sysExecute()
StatusCode AthReentrantAlgorithm::sysExecute |
( |
const EventContext & |
ctx | ) |
|
|
overridevirtualinherited |
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ sysInitialize()
StatusCode AthReentrantAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ ATLAS_THREAD_SAFE [1/2]
std::mutex m_statMutex InDet::TRT_SeededTrackFinder::ATLAS_THREAD_SAFE |
|
mutableprotected |
◆ ATLAS_THREAD_SAFE [2/2]
Stat_t m_totalStat InDet::TRT_SeededTrackFinder::ATLAS_THREAD_SAFE |
|
mutableprotected |
◆ m_beamSpotKey
◆ m_caloClusterROIKey
Initial value:{this, "EMROIPhiRZContainer", "",
"Name of the calo cluster ROIs in Phi,R,Z parameterization"}
Definition at line 137 of file TRT_SeededTrackFinder.h.
◆ m_caloSeededRoI
BooleanProperty InDet::TRT_SeededTrackFinder::m_caloSeededRoI {this, "CaloSeededRoI", false} |
|
protected |
◆ m_deltaEta
FloatProperty InDet::TRT_SeededTrackFinder::m_deltaEta {this, "dEtaCaloRoI", 0.1, "delta Eta used for RoI creation"} |
|
protected |
◆ m_deltaPhi
FloatProperty InDet::TRT_SeededTrackFinder::m_deltaPhi {this, "dPhiCaloRoI", 0.25, "delta Phi used for RoI creation"} |
|
protected |
◆ m_deltaZ
FloatProperty InDet::TRT_SeededTrackFinder::m_deltaZ {this, "dZCaloRoI", 300., "delta Z used for RoI creation"} |
|
protected |
◆ m_detStore
◆ m_doExtension
BooleanProperty InDet::TRT_SeededTrackFinder::m_doExtension {this, "TrtExtension", false, "Find the TRT extension of the track"} |
|
protected |
◆ m_doRefit
BooleanProperty InDet::TRT_SeededTrackFinder::m_doRefit {this, "FinalRefit", false, "Do a final careful refit of tracks"} |
|
protected |
◆ m_doStat
BooleanProperty InDet::TRT_SeededTrackFinder::m_doStat {this, "FinalStatistics", false, "Statistics of final tracks"} |
|
protected |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.h.
◆ m_extrapolator
ToolHandle<Trk::IExtrapolator> InDet::TRT_SeededTrackFinder::m_extrapolator {this, "Extrapolator", ""} |
|
protected |
◆ m_fitterTool
Initial value:{this, "RefitterTool", "Trk::GlobalChi2Fitter/InDetTrackFitter",
"Track refit tool"}
Definition at line 105 of file TRT_SeededTrackFinder.h.
◆ m_maxEta
DoubleProperty InDet::TRT_SeededTrackFinder::m_maxEta {this, "maxEta", 2.7, "maximal Eta cut"} |
|
protected |
◆ m_maxRPhiImp
DoubleProperty InDet::TRT_SeededTrackFinder::m_maxRPhiImp {this, "maxRPhiImp", 10., "maximal RPhi impact parameter cut"} |
|
protected |
◆ m_MaxSegNum
IntegerProperty InDet::TRT_SeededTrackFinder::m_MaxSegNum |
|
protected |
Initial value:{this, "MaxNumberSegments", 5000,
"Maximum number of segments to be handled"}
Definition at line 94 of file TRT_SeededTrackFinder.h.
◆ m_maxZImp
DoubleProperty InDet::TRT_SeededTrackFinder::m_maxZImp {this, "maxZImp", 250., "maximal z impact parameter cut"} |
|
protected |
◆ m_minPt
DoubleProperty InDet::TRT_SeededTrackFinder::m_minPt {this, "minPt", 500., "minimal Pt cut"} |
|
protected |
◆ m_minTRTonly
UnsignedIntegerProperty InDet::TRT_SeededTrackFinder::m_minTRTonly {this, "MinTRTonly", 15, "Minimum number of TRT hits on TRT only"} |
|
protected |
◆ m_minTRTonSegment
UnsignedIntegerProperty InDet::TRT_SeededTrackFinder::m_minTRTonSegment {this, "MinTRTonSegment", 10, "Minimum Number of TRT Hits on segment"} |
|
protected |
◆ m_outTracksKey
Initial value:{this, "OutputTracksLocation", "TRTSeededTracks",
"Output track collection"}
Definition at line 114 of file TRT_SeededTrackFinder.h.
◆ m_prdToTrackMap
◆ m_regionSelector
ToolHandle<IRegSelTool> InDet::TRT_SeededTrackFinder::m_regionSelector |
|
protected |
Initial value:{this, "RegSelTool", "RegSelTool/RegSel_SCT",
"Region selector service instance"}
Definition at line 141 of file TRT_SeededTrackFinder.h.
◆ m_rejectShortExten
BooleanProperty InDet::TRT_SeededTrackFinder::m_rejectShortExten {this, "RejectShortExtension", false, "Reject short extensions"} |
|
protected |
◆ m_saveTRT
BooleanProperty InDet::TRT_SeededTrackFinder::m_saveTRT {this, "OutputSegments", true, "Save stand-alone TRT segments"} |
|
protected |
◆ m_SegmentsKey
◆ m_SiExtensionCuts
BooleanProperty InDet::TRT_SeededTrackFinder::m_SiExtensionCuts {this, "SiExtensionCuts", false, "enable cuts after Si segment finding"} |
|
protected |
◆ m_trackmaker
Initial value:{this, "TrackTool", "InDet::TRT_SeededTrackFinderTool",
"Back tracking tool"}
Definition at line 102 of file TRT_SeededTrackFinder.h.
◆ m_trackSummaryTool
ToolHandle<Trk::IExtendedTrackSummaryTool> InDet::TRT_SeededTrackFinder::m_trackSummaryTool {this, "TrackSummaryTool", "InDetTrackSummaryToolNoHoleSearch"} |
|
protected |
◆ m_trtExtension
Initial value:{this, "TrackExtensionTool", "InDet::TRT_TrackExtensionTool_xk",
"TRT track extension tool "}
Definition at line 108 of file TRT_SeededTrackFinder.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
@ kNTrtNoSiExt
Number of TRT segments lost in busy events.
Trk::Track * mergeExtension(const Trk::Track &, std::vector< const Trk::MeasurementBase * > &) const
Merge a TRT track extension and a Si track component into one global ID track.
SG::ReadHandleKey< Trk::SegmentCollection > m_SegmentsKey
Contains information about the 'fitter' of this track.
Const iterator class for DataVector/DataList.
const FitQuality * fitQuality() const
return a pointer to the fit quality const-overload
SG::WriteHandleKey< TrackCollection > m_outTracksKey
Scalar phi() const
phi method
Scalar eta() const
pseudorapidity method
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
BooleanProperty m_doRefit
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)
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
BooleanProperty m_doExtension
std::vector< SG::VarHandleKeyArray * > m_vhka
@ kNTrtLimit
Number of TRT segments that will be investigated per event
ToolHandle< Trk::IExtrapolator > m_extrapolator
bool msgLvl(const MSG::Level lvl) const
@ kNExtCut
Number of TRT segments not extended in Si.
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
BooleanProperty m_caloSeededRoI
#define AmgSymMatrix(dim)
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)
TrackParameters_v1 TrackParameters
virtual void setOwner(IDataHandleHolder *o)=0
IntegerProperty m_MaxSegNum
Class to handle pseudo-measurements in fitters and on track objects.
BooleanProperty m_saveTRT
virtual const Amg::Vector3D & globalPosition() const override
returns global position (gathered through Surface constraint)
void Analyze(TrackCollection *) const
Do some statistics analysis at the end of each event.
AthReentrantAlgorithm()
Default constructor:
void push_back(const IRoiDescriptor *roi)
add a RoiDescriptor
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
DataVector< const Trk::TrackStateOnSurface > TrackStates
@ kNBckTrk
Number of back tracks found with Si extension per event.
std::unique_ptr< MeasurementBase > uniqueClone() const
NVI Clone giving up unique pointer.
::StatusCode StatusCode
StatusCode definition for legacy code.
Trk::Track * mergeSegments(const Trk::Track &, const Trk::TrackSegment &) const
Protected methods
ToolHandle< Trk::ITrackFitter > m_fitterTool
ToolHandle< IRegSelTool > m_regionSelector
ToolHandle< ITRT_TrackExtensionTool > m_trtExtension
const MeasurementBase * measurement(unsigned int) const
returns the Trk::MeasurementBase objects depending on the integer
void clear()
clear the vector
Describes the Region of Ineterest geometry It has basically 9 parameters.
@ kNTrtExt
Number of times the TRT extension is called.
const Surface & associatedSurface() const override final
returns the surface for the local to global transformation
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
@ kNTrtFailSel
Number of TRT segments to be investigated per event
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
@ kNBckTrkSi
Number of failed TRT extensions.
const Perigee * perigeeParameters() const
return Perigee.
Ensure that the ATLAS eigen extensions are properly loaded.
BooleanProperty m_SiExtensionCuts
represents the track state (measurement, material, fit parameters and quality) at a surface.
DoubleProperty m_maxRPhiImp
MsgStream & dumpevent(MsgStream &out, const InDet::TRT_SeededTrackFinder::Stat_t &stat) const
std::unique_ptr< FitQuality > uniqueClone() const
NVI uniqueClone.
ToolHandle< ITRT_SeededTrackFinder > m_trackmaker
virtual StatusCode sysInitialize() override
Override sysInitialize.
@ TRTSeededTrackFinder
Tracks from TRT Seeded Track finder.
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
Trk::Track * segToTrack(const EventContext &, const Trk::TrackSegment &) const
Transform a TRT track segment into a track
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
MsgStream & dumptools(MsgStream &out) const
#define ATH_MSG_WARNING(x)
const boost::regex re(r_e)
UnsignedIntegerProperty m_minTRTonSegment
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
BooleanProperty m_rejectShortExten
void setComposite(bool b=true)
std::array< std::vector< std::vector< Used_t > >, 3 > TRT_DetElemUsedMap
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
SG::ReadHandleKey< ROIPhiRZContainer > m_caloClusterROIKey
size_type size() const noexcept
Returns the number of elements in the collection.
UnsignedIntegerProperty m_minTRTonly
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
constexpr virtual SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.