|
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 666 of file TRT_SeededTrackFinder.cxx.
670 int nsct1{}, nsct2{}, nsct3{}, nsct4{};
671 int nsctTot1{}, nsctTot2{}, nsctTot3{}, nsctTot4{};
672 int npix1{}, npix2{}, npix3{};
673 int npixTot1{}, npixTot2{}, npixTot3{};
677 for (;
r !=
re ; ++
r){
678 nsct1=nsct2=nsct3=nsct4=0; npix1=npix2=npix3=0;
680 if(!newtsos)
continue;
687 if((40.<=rc)&&(
rc<80.)){npix1++;}
688 if((80.<=rc)&&(
rc<100.)){npix2++;}
689 if((100.<=rc)&&(
rc<150.)){npix3++;}
690 if((280.<=rc)&&(
rc<340.)){nsct1++;}
691 if((340.<=rc)&&(
rc<390.)){nsct2++;}
692 if((390.<=rc)&&(
rc<460.)){nsct3++;}
693 if((460.<=rc)&&(
rc<550.)){nsct4++;}
696 nsctTot1+=nsct1; nsctTot2+=nsct2; nsctTot3+=nsct3; nsctTot4+=nsct4;
697 npixTot1+=npix1; npixTot2+=npix2; npixTot3+=npix3;
699 ATH_MSG_DEBUG(
"Total hits on 1st SCT: "<<nsctTot1<<
" 2nd SCT: "<<nsctTot2<<
" 3rd SCT: "<<nsctTot3<<
" 4th SCT: "<<nsctTot4);
700 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 459 of file TRT_SeededTrackFinder.cxx.
461 out<<
"|-------------------------------------------------------------------"<<std::endl;
462 out<<
"| Investigated :"<<std::endl
465 <<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNTrtSegGood] <<
" TRT Segments after selection"<<std::endl;
467 out<<
"|-------------------------------------------------------------------"<<std::endl;
468 out<<
"| "<<std::setw(7)<<
stat.m_counter[
Stat_t::kNTrtLimit] <<
" TRT segments lost because of processing limit"<<std::endl;
470 out<<
"|-------------------------------------------------------------------"<<std::endl;
475 if (
stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]>0) {
476 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt] <<
" number ot TRT only tracks created"<<std::endl;
479 out<<
"|-------------------------------------------------------------------"<<std::endl;
480 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNTrtExtCalls]<<
" number of times TRT extension is called"<<std::endl
481 <<
"| "<<std::setw(7)<<
stat.m_counter[
Stat_t::kNTrtExt] <<
" number of good TRT extension"<<std::endl;
483 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNTrtExtBad]<<
" number of bad TRT extension"<<std::endl;
485 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNTrtExtFail]<<
" number of failed TRT extension and fallback"<<std::endl;
487 out<<
"|-------------------------------------------------------------------"<<std::endl;
488 out<<
"| "<<std::setw(7)<<
stat.m_counter[Stat_t::Stat_t::kNBckTrkSi] <<
" TRT+Si tracks created of output"<<std::endl;
492 out<<
"|-------------------------------------------------------------------";
◆ dumptools()
MsgStream & InDet::TRT_SeededTrackFinder::dumptools |
( |
MsgStream & |
out | ) |
const |
|
protected |
Definition at line 428 of file TRT_SeededTrackFinder.cxx.
431 std::string
s1;
for(
int i=0;
i<
n; ++
i)
s1.append(
" ");
s1.append(
"|");
433 std::string
s2;
for(
int i=0;
i<
n; ++
i)
s2.append(
" ");
s2.append(
"|");
435 std::string
s3;
for(
int i=0;
i<
n; ++
i)
s3.append(
" ");
s3.append(
"|");
437 std::string
s4;
for(
int i=0;
i<
n; ++
i)
s4.append(
" ");
s4.append(
"|");
439 std::string s5;
for(
int i=0;
i<
n; ++
i) s5.append(
" "); s5.append(
"|");
441 out<<
"|----------------------------------------------------------------------"
442 <<
"-------------------|"
444 out<<
"| Tool for TRT seeded track finding | "<<
m_trackmaker.type() <<
s1<<std::endl;
449 out<<
"|----------------------------------------------------------------------"
450 <<
"-------------------|"
◆ 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;
165 event_data_p =
m_trackmaker->newRegion(ctx, combinatorialData, listOfPixIds, listOfSCTIds);
167 event_data_p =
m_trackmaker->newEvent(ctx, combinatorialData);
170 std::unique_ptr<InDet::ITRT_TrackExtensionTool::IEventData> ext_event_data_p(
m_trtExtension->newEvent(ctx) );
171 std::unique_ptr<TrackCollection> outTracks = std::make_unique<TrackCollection>();
172 std::vector<Trk::Track*> tempTracks;
173 tempTracks.reserve(128);
175 ATH_MSG_DEBUG (
"Begin looping over all TRT segments in the event");
179 for(; iseg != isegEnd; ++ iseg) {
196 ATH_MSG_DEBUG (
"====> Reached maximal number of segments in event, stop !!!");
204 ev_stat.m_counter[Stat_t::Stat_t::kNTrtSegGood]++;
206 std::list<Trk::Track*> trackSi =
m_trackmaker->getTrack(ctx, *event_data_p, *trackTRT);
207 if (trackSi.empty()) {
208 ATH_MSG_DEBUG (
"No Si track candidates associated to the TRT track ");
216 ATH_MSG_DEBUG (
"Failed to make a track out of the TRT segment!");
220 ev_stat.m_counter[
Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]++;
222 outTracks->push_back(trtSeg);
227 ATH_MSG_DEBUG (
"Found " << (trackSi.size()) <<
" Si tracks associated to the TRT track ");
229 std::list<Trk::Track*>::const_iterator itt = trackSi.begin();
230 std::list<Trk::Track*>::const_iterator ittEnd = trackSi.end();
231 for (; itt != ittEnd ; ++itt){
232 tempTracks.push_back(*itt);
244 auto input = (*itt)->trackParameters()->front()->uniqueClone();
262 beamSpotPosition = beamSpotHandle->beamVtx().position();
268 std::unique_ptr<const Trk::TrackParameters> parm =
270 ctx, *
input, perigeeSurface);
271 std::unique_ptr<const Trk::Perigee> extrapolatedPerigee =
nullptr;
273 extrapolatedPerigee.reset(
static_cast<const Trk::Perigee*
>(parm.release()));
275 if (!extrapolatedPerigee) {
276 ATH_MSG_WARNING(
"Extrapolation of perigee failed, this should never happen" );
302 ATH_MSG_DEBUG (
"Try to improve TRT calling extension tool.");
304 ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtCalls]++;
306 std::vector<const Trk::MeasurementBase*>& tn =
307 m_trtExtension->extendTrack(ctx, *(*itt), *ext_event_data_p, map);
310 ATH_MSG_DEBUG (
"No new segment found, use input segment as fallback.");
312 ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtFail]++;
326 std::vector<const Trk::MeasurementBase*>::const_iterator iv, ive=tn.end();
327 for(iv=tn.begin(); iv!=ive; ++iv)
delete (*iv);
336 ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtBad]++;
338 std::vector<const Trk::MeasurementBase*>::const_iterator iv, ive=tn.end();
339 for(iv=tn.begin(); iv!=ive; ++iv)
delete (*iv);
343 ATH_MSG_DEBUG (
"Do not try to extend Si track, merging it with input TRT.");
353 ATH_MSG_DEBUG (
"Failed to make a track out of the TRT segment!");
358 ev_stat.m_counter[
Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]++;
364 outTracks->push_back(trtSeg);
369 ev_stat.m_counter[
Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkSi]++;
375 outTracks->push_back(globalTrackNew);
388 return StatusCode::FAILURE;
392 std::lock_guard<std::mutex> lock(m_statMutex);
393 m_totalStat += ev_stat;
396 for (
auto *
p : tempTracks){
406 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, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, InDet::SiSPGNNTrackMaker, 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 617 of file TRT_SeededTrackFinder.cxx.
624 auto ntsos = std::make_unique<Trk::TrackStates>();
627 for (p_stsos = stsos->
begin(); p_stsos != stsos->
end(); ++p_stsos) {
628 ntsos->push_back((*p_stsos)->clone());
631 for (
auto &
it : tS) {
632 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
635 ntsos->push_back(seg_tsos);
640 std::unique_ptr<Trk::Track> newTrack( std::make_unique<Trk::Track>(
info, std::move(ntsos), std::move(fq)) );
649 const Trk::Perigee* perTrack=newTrack->perigeeParameters();
652 if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
658 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 501 of file TRT_SeededTrackFinder.cxx.
507 auto ntsos = std::make_unique<Trk::TrackStates>();
511 for (p_stsos=stsos->
begin(); p_stsos != stsos->
end(); ++p_stsos) {
512 ntsos->push_back( (*p_stsos)->clone() );
520 ATH_MSG_DEBUG (
"Too few Si hits.Will keep pseudomeasurement...");
522 ntsos->push_back(seg_tsos);
525 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
528 ntsos->push_back(seg_tsos);
535 std::unique_ptr<Trk::Track> newTrack(std::make_unique<Trk::Track>(
info, std::move(ntsos), std::move(fq)));
544 const Trk::Perigee* perTrack=newTrack->perigeeParameters();
547 if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
552 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 559 of file TRT_SeededTrackFinder.cxx.
560 ATH_MSG_DEBUG (
"Transforming the TRT segment into a track...");
565 throw std::logic_error(
"Unhandled surface.");
571 surf->createUniqueParameters<5,
Trk::
Charged>(
572 p(0),
p(1),
p(2),
p(3),
p(4), std::move(ep));
574 ATH_MSG_DEBUG(
"Initial TRT Segment Parameters for refitting " << (*segPar) );
576 ATH_MSG_DEBUG(
"Could not get initial TRT segment parameters! " );
582 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
589 ntsos->push_back(seg_tsos);
593 std::unique_ptr<Trk::Track> newTrack = std::make_unique<Trk::Track>(
info, std::move(ntsos),
nullptr);
605 if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
610 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.