22#include "GaudiKernel/MsgStream.h"
31 std::unique_ptr<TrigMuonEFInfoTrackContainer> tracks)
52 std::unique_ptr<TrigMuonEFInfoTrackContainer> tracks,
53 std::unique_ptr<TrigMuonEFTrack> spectrometerTrack,
54 std::unique_ptr<TrigMuonEFTrack> extrapolatedTrack,
55 std::unique_ptr<TrigMuonEFCbTrack> combinedTrack)
150 if (
this != &rhs ) {
191 if (
this != &rhs ) {
280 track->setSpectrometerTrack(theTrack);
302 track->setExtrapolatedTrack(theTrack);
325 track->setCombinedTrack(theTrack);
400 std::stringstream
ss;
401 ss <<
"RoI index: " << d.RoINum()
402 <<
"; NSegments: " << d.NSegments()
403 <<
"; NMdtHits: " << d.NMdtHits()
404 <<
"; NRpcHits: " << d.NRpcHits()
405 <<
"; NTgcHits: " << d.NTgcHits()
406 <<
"; NCscHits: " << d.NCscHits()
407 <<
"; hasTrack: " << d.hasTrack() << std::endl;
415 ss <<
"; muon type: " << dd->MuonType();
417 if (dd->hasSpectrometerTrack())
418 ss <<
"; spectrometer track: " << dd->SpectrometerTrack()
419 <<
" : " << *(dd->SpectrometerTrack());
421 if (dd->hasExtrapolatedTrack())
422 ss <<
"; extrapolated track: " << dd->ExtrapolatedTrack()
423 <<
" : " << *(dd->ExtrapolatedTrack());
425 if (dd->hasCombinedTrack())
426 ss <<
"; combined track: " << dd->CombinedTrack()
427 <<
" : " << *(dd->CombinedTrack());
436 return ( m <<
str( d ) );
441 if (
a.RoINum() != b.RoINum() )
443 if (
a.hasTrack() != b.hasTrack() )
445 if (
a.hasTrack() && b.hasTrack() ) {
447 if (
a.TrackContainer()->size() != b.TrackContainer()->size() )
461 *tmpContB = *(b.TrackContainer());
464 TrkItrA !=
a.TrackContainer()->end();
470 while ( TrkItrB != tmpContB->
end() ) {
471 if (*(*TrkItrB)==*(*TrkItrA)) {
473 tmpContB->
erase(TrkItrB);
487 if (
a.hasLegacyTrack() && b.hasLegacyTrack()) {
488 if( !(*(
a.legacySpectrometerTrack() ) == *( b.legacySpectrometerTrack() ) ) )
490 if( !(*(
a.legacyExtrapolatedTrack() ) == *( b.legacyExtrapolatedTrack() ) ) )
492 if( !(*(
a.legacyCombinedTrack() ) == *( b.legacyCombinedTrack() ) ) )
500 std::map<std::string, double>& variableChange ) {
502 if(
a.RoINum() != b.RoINum() ) {
503 variableChange[
"RoINum" ] =
static_cast< double >(
a.RoINum() - b.RoINum() );
505 if(
a.NSegments() != b.NSegments() ) {
506 variableChange[
"NSegments" ] =
static_cast< double >(
a.NSegments() -
509 if(
a.NMdtHits() != b.NMdtHits() ) {
510 variableChange[
"NMdtHits" ] =
static_cast< double >(
a.NMdtHits() -
513 if(
a.NRpcHits() != b.NRpcHits() ) {
514 variableChange[
"NRpcHits" ] =
static_cast< double >(
a.NRpcHits() -
517 if(
a.NCscHits() != b.NCscHits() ) {
518 variableChange[
"NCscHits" ] =
static_cast< double >(
a.NCscHits() -
521 if(
a.NTgcHits() != b.NTgcHits() ) {
522 variableChange[
"NTgcHits" ] =
static_cast< double >(
a.NTgcHits() -
525 if(
a.EtaPreviousLevel() != b.EtaPreviousLevel() ) {
526 variableChange[
"EtaPreviousLevel" ] =
static_cast< double >(
a.EtaPreviousLevel() -
527 b.EtaPreviousLevel() );
529 if(
a.PhiPreviousLevel() != b.PhiPreviousLevel() ) {
530 variableChange[
"PhiPreviousLevel" ] =
static_cast< double >(
a.PhiPreviousLevel() -
531 b.PhiPreviousLevel() );
535 (
a.hasTrack() && b.hasTrack())
537 (
a.TrackContainer()->size() != b.TrackContainer()->size())
539 variableChange[
"NTracks" ] =
static_cast< double >(
a.TrackContainer()->size() -
540 b.TrackContainer()->size() );
545 *tmpContB = *(b.TrackContainer());
549 TrkItrA !=
a.TrackContainer()->end();
555 while ( TrkItrB != tmpContB->
end() ) {
557 if (*(*TrkItrB)==*(*TrkItrA)) {
559 diff( *( (*TrkItrA)->SpectrometerTrack() ), *( (*TrkItrB)->SpectrometerTrack() ), variableChange );
560 diff( *( (*TrkItrA)->ExtrapolatedTrack() ), *( (*TrkItrB)->ExtrapolatedTrack() ), variableChange );
561 diff( *( (*TrkItrA)->CombinedTrack() ), *( (*TrkItrB)->CombinedTrack() ), variableChange );
562 tmpContB->
erase(TrkItrB);
571 if (
a.hasLegacyTrack() && b.hasLegacyTrack()) {
572 diff( *(
a.legacySpectrometerTrack() ), *( b.legacySpectrometerTrack() ), variableChange );
573 diff( *(
a.legacyExtrapolatedTrack() ), *( b.legacyExtrapolatedTrack() ), variableChange );
574 diff( *(
a.legacyCombinedTrack() ), *( b.legacyCombinedTrack() ), variableChange );
MsgStream & operator<<(MsgStream &m, const TrigMuonEFInfo &d)
Helper operator for printing the object.
void diff(const TrigMuonEFInfo &a, const TrigMuonEFInfo &b, std::map< std::string, double > &variableChange)
Comparison with feedback.
bool operator==(const TrigMuonEFInfo &a, const TrigMuonEFInfo &b)
Operator comparing two TrigMuonEFInfo objects for equality.
DataModel_detail::const_iterator< DataVector > const_iterator
DataModel_detail::iterator< DataVector > iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
iterator erase(iterator position)
Remove element at a given position.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
bool empty() const noexcept
Returns true if the collection is empty.
void setNMdtHits(unsigned short int theNMdtHits)
TrigMuonEFCbTrack * CombinedTrack()
bool hasExtrapolatedTrack() const
void setExtrapolatedTrack(TrigMuonEFTrack *track)
void addTrack(TrigMuonEFInfoTrack *track)
void setNRpcHits(unsigned short int theNRpcHits)
TrigMuonEFTrack * SpectrometerTrack()
void setRoINum(unsigned short int theRoINum)
bool hasSpectrometerTrack() const
~TrigMuonEFInfo()
Destructor.
bool hasLegacyTrack() const
TrigMuonEFCbTrack * m_combinedTrack
void setPhiPreviousLevel(double thePhiPreviousLevel)
TrigMuonEFInfo & operator=(const TrigMuonEFInfo &rhs)
Assignment operator.
void setNSegments(unsigned short int theNSegments)
unsigned short int m_nRpcHits
double m_etaPreviousLevel
void setEtaPreviousLevel(double theEtaPreviousLevel)
bool hasCombinedTrack() const
unsigned short int m_nCscHits
TrigMuonEFTrack * m_extrapolatedTrack
unsigned short int m_nMdtHits
void setCombinedTrack(TrigMuonEFCbTrack *track)
void setNTgcHits(unsigned short int theNTgcHits)
unsigned short int m_nSegments
TrigMuonEFInfoTrackContainer * m_trackContainer
TrigMuonEFTrack * m_spectrometerTrack
unsigned short int m_nTgcHits
void setNCscHits(unsigned short int theNCscHits)
double m_phiPreviousLevel
TrigMuonEFInfo()
Default constructor.
void setSpectrometerTrack(TrigMuonEFTrack *track)
TrigMuonEFTrack * ExtrapolatedTrack()
static std::string release
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
void swap(ElementLinkVector< DOBJ > &lhs, ElementLinkVector< DOBJ > &rhs)