![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
10 #ifndef ANALYSISASSOCIATION_ASSOCFILTER_H
11 #define ANALYSISASSOCIATION_ASSOCFILTER_H 1
26 #include "GaudiKernel/MsgStream.h"
43 template<
typename OBJ,
typename ASSO>
79 const ASSO * associated )
const;
207 const double deltaThetaMax );
212 const double deltaCosThetaMax );
275 template<
typename OBJ,
typename ASSO>
291 template<
typename OBJ,
typename ASSO>
294 m_deltaPx( rhs.m_deltaPx ),
295 m_deltaPy( rhs.m_deltaPy ),
296 m_deltaPz( rhs.m_deltaPz ),
297 m_deltaEne( rhs.m_deltaEne ),
298 m_deltaEta( rhs.m_deltaEta ),
299 m_deltaPhi( rhs.m_deltaPhi ),
300 m_deltaMass( rhs.m_deltaMass ),
301 m_deltaPt( rhs.m_deltaPt ),
302 m_deltaR( rhs.m_deltaR ),
303 m_deltaTheta( rhs.m_deltaTheta ),
304 m_deltaCosTheta( rhs.m_deltaCosTheta )
307 template<
typename OBJ,
typename ASSO>
311 if (
this != &rhs ) {
328 template<
typename OBJ,
typename ASSO>
334 template<
typename OBJ,
typename ASSO>
336 const ASSO * associated )
const
340 if ( m_deltaPx.isActive() ) {
342 m_deltaPx.isInRange( std::fabs(
object->px() - associated->px() ) );
345 if ( m_deltaPy.isActive() ) {
347 m_deltaPy.isInRange( std::fabs(
object->py() - associated->py() ) );
350 if ( m_deltaPz.isActive() ) {
352 m_deltaPz.isInRange( std::fabs(
object->pz() - associated->pz() ) );
355 if ( m_deltaEne.isActive() ) {
357 m_deltaEne.isInRange( std::fabs(
object->e() - associated->e() ) );
360 if ( m_deltaEta.isActive() ) {
362 m_deltaEta.isInRange( std::fabs(
object->eta() - associated->eta()) );
365 if ( m_deltaPhi.isActive() ) {
370 if ( m_deltaMass.isActive() ) {
372 m_deltaMass.isInRange( std::fabs(
object->m() - associated->m() ) );
375 if ( m_deltaPt.isActive() ) {
377 m_deltaPt.isInRange ( std::fabs(
object->pt() - associated->pt() ) );
380 if ( m_deltaR.isActive() ) {
400 template<
typename OBJ,
typename ASSO>
403 return m_deltaPx.lower();
406 template<
typename OBJ,
typename ASSO>
409 return m_deltaPx.upper();
412 template<
typename OBJ,
typename ASSO>
415 return m_deltaPy.lower();
418 template<
typename OBJ,
typename ASSO>
421 return m_deltaPy.upper();
424 template<
typename OBJ,
typename ASSO>
427 return m_deltaPz.lower();
430 template<
typename OBJ,
typename ASSO>
433 return m_deltaPz.upper();
436 template<
typename OBJ,
typename ASSO>
439 return m_deltaEne.lower();
442 template<
typename OBJ,
typename ASSO>
445 return m_deltaEne.upper();
448 template<
typename OBJ,
typename ASSO>
451 return m_deltaEta.lower();
454 template<
typename OBJ,
typename ASSO>
457 return m_deltaEta.upper();
460 template<
typename OBJ,
typename ASSO>
463 return m_deltaPhi.lower();
466 template<
typename OBJ,
typename ASSO>
469 return m_deltaPhi.upper();
472 template<
typename OBJ,
typename ASSO>
475 return m_deltaMass.lower();
478 template<
typename OBJ,
typename ASSO>
481 return m_deltaMass.upper();
484 template<
typename OBJ,
typename ASSO>
487 return m_deltaPt.lower();
490 template<
typename OBJ,
typename ASSO>
493 return m_deltaPt.upper();
496 template<
typename OBJ,
typename ASSO>
499 return m_deltaR.lower();
502 template<
typename OBJ,
typename ASSO>
505 return m_deltaR.upper();
511 template<
typename OBJ,
typename ASSO>
514 m_deltaR.includeAll();
515 m_deltaPx.includeAll();
516 m_deltaPy.includeAll();
517 m_deltaPz.includeAll();
518 m_deltaEne.includeAll();
519 m_deltaEta.includeAll();
520 m_deltaPhi.includeAll();
521 m_deltaMass.includeAll();
522 m_deltaPt.includeAll();
523 m_deltaTheta.includeAll();
524 m_deltaCosTheta.includeAll();
527 template<
typename OBJ,
typename ASSO>
549 <<
"Can't dynamic_cast " << ifilter <<
" to an AssocFilter"
556 template<
typename OBJ,
typename ASSO>
559 m_deltaPx.setMin( deltaPxMin );
562 template<
typename OBJ,
typename ASSO>
565 m_deltaPx.setMax( deltaPxMax );
568 template<
typename OBJ,
typename ASSO>
570 const double deltaPxMax )
572 m_deltaPx.setRange( deltaPxMin, deltaPxMax );
575 template<
typename OBJ,
typename ASSO>
578 m_deltaPy.setMin( deltaPyMin );
581 template<
typename OBJ,
typename ASSO>
584 m_deltaPy.setMax( deltaPyMax );
587 template<
typename OBJ,
typename ASSO>
589 const double deltaPyMax )
591 m_deltaPy.setRange( deltaPyMin, deltaPyMax );
594 template<
typename OBJ,
typename ASSO>
597 m_deltaPz.setMin( deltaPzMin );
600 template<
typename OBJ,
typename ASSO>
603 m_deltaPz.setMax( deltaPzMax );
606 template<
typename OBJ,
typename ASSO>
608 const double deltaPzMax )
610 m_deltaPz.setRange( deltaPzMin, deltaPzMax );
614 template<
typename OBJ,
typename ASSO>
617 m_deltaEne.setMin( deltaEneMin );
620 template<
typename OBJ,
typename ASSO>
623 m_deltaEne.setMax( deltaEneMax );
626 template<
typename OBJ,
typename ASSO>
628 const double deltaEneMax )
630 m_deltaEne.setRange( deltaEneMin, deltaEneMax );
633 template<
typename OBJ,
typename ASSO>
636 m_deltaEta.setMin(deltaEtaMin);
639 template<
typename OBJ,
typename ASSO>
642 m_deltaEta.setMax(deltaEtaMax);
645 template<
typename OBJ,
typename ASSO>
647 const double deltaEtaMax )
649 m_deltaEta.setRange( deltaEtaMin, deltaEtaMax );
652 template<
typename OBJ,
typename ASSO>
655 m_deltaPhi.setMin(deltaPhiMin);
658 template<
typename OBJ,
typename ASSO>
661 m_deltaPhi.setMax(deltaPhiMax);
664 template<
typename OBJ,
typename ASSO>
666 const double deltaPhiMax )
668 m_deltaPhi.setRange( deltaPhiMin, deltaPhiMax );
671 template<
typename OBJ,
typename ASSO>
674 m_deltaMass.setMin(deltaMassMin);
677 template<
typename OBJ,
typename ASSO>
680 m_deltaMass.setMax(deltaMassMax);
683 template<
typename OBJ,
typename ASSO>
685 const double deltaMassMax )
687 m_deltaMass.setRange( deltaMassMin, deltaMassMax );
690 template<
typename OBJ,
typename ASSO>
693 m_deltaPt.setMin(deltaPtMin);
696 template<
typename OBJ,
typename ASSO>
699 m_deltaPt.setMax(deltaPtMax);
702 template<
typename OBJ,
typename ASSO>
704 const double deltaPtMax )
706 m_deltaPt.setRange( deltaPtMin, deltaPtMax );
709 template<
typename OBJ,
typename ASSO>
712 m_deltaR.setMin( deltaRMin );
715 template<
typename OBJ,
typename ASSO>
718 m_deltaR.setMax( deltaRMax );
721 template<
typename OBJ,
typename ASSO>
723 const double deltaRMax )
725 m_deltaR.setRange( deltaRMin, deltaRMax );
728 template<
typename OBJ,
typename ASSO>
731 m_deltaTheta.setMin( deltaThetaMin );
734 template<
typename OBJ,
typename ASSO>
737 m_deltaTheta.setMax( deltaThetaMax );
740 template<
typename OBJ,
typename ASSO>
742 const double deltaThetaMax )
744 m_deltaTheta.setRange( deltaThetaMin, deltaThetaMax );
747 template<
typename OBJ,
typename ASSO>
750 m_deltaCosTheta.setMin( deltaCosThetaMin );
753 template<
typename OBJ,
typename ASSO>
756 m_deltaCosTheta.setMax( deltaCosThetaMax );
759 template<
typename OBJ,
typename ASSO>
761 const double deltaCosThetaMax )
763 m_deltaCosTheta.setRange( deltaCosThetaMin, deltaCosThetaMax );
767 #endif //> ANALYSISASSOCIATION_ASSOCFILTER_H
void setDeltaEneMax(const double deltaEneMax)
void setDeltaCosThetaMin(const double deltaCosThetaMin)
virtual void setFilter(const IFilterCuts *ifilter)
Copies the IFilterCuts properties of the given object to the current IFilterCuts object (ie: it copie...
FilterRange m_deltaTheta
Required range in theta (min/max)
double deltaPxMin() const
Returns the minimum px required by the filter.
singleton-like access to IMessageSvc via open function and helper
void setDeltaPt(const double deltaPtMin, const double deltaPtMax)
FilterRange m_deltaEne
Required range in energy (min/max)
void setDeltaCosTheta(const double deltaCosThetaMin, const double deltaCosThetaMax)
void setDeltaEne(const double deltaEneMin, const double deltaEneMax)
void setDeltaPhiMin(const double deltaPhiMin)
void setDeltaPhiMax(const double deltaPhiMax)
void setDeltaPyMin(const double deltaPyMin)
FilterRange implements the range (ie: [min, max]) the filters will use to take their filtering decisi...
FilterRange m_deltaEta
Required range in eta (min/max)
void setDeltaPzMax(const double deltaPzMax)
void setDeltaRMax(const double deltaRMax)
AssocFilter()
Default constructor:
FilterRange m_deltaPx
Required range in px (min/max)
double deltaPzMax() const
Returns the maximum pz required by the filter.
PhiFilterRange implements the range (ie: [min, max]) the filters will use to take their filtering dec...
void setDeltaEtaMax(const double deltaEtaMax)
void setDeltaR(const double deltaRMin, const double deltaRMax)
double deltaPtMin() const
Returns the minimum pt required by the filter.
PhiFilterRange m_deltaPhi
Required range in phi (min/max)
void setDeltaThetaMin(const double deltaThetaMin)
IMessageSvc * getMessageSvc(bool quiet=false)
double deltaPyMin() const
Returns the minimum py required by the filter.
AssocFilter(const AssocFilter &rhs)
Copy constructor:
double deltaPhiMax() const
Returns the maximum phi required by the filter.
virtual ~AssocFilter()
Destructor:
double deltaRMin() const
Returns the minimum deltaR required by the filter.
double deltaPzMin() const
Returns the minimum pz required by the filter.
double deltaMassMax() const
Returns the maximum mass required by the filter.
void setDeltaTheta(const double deltaThetaMin, const double deltaThetaMax)
double deltaEtaMin() const
Returns the minimum eta required by the filter.
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
void setDeltaPhi(const double deltaPhiMin, const double deltaPhiMax)
void setDeltaPtMax(const double deltaPtMax)
void setDeltaEta(const double deltaEtaMin, const double deltaEtaMax)
bool isAccepted(int matchInfo)
double deltaEtaMax() const
Returns the maximum eta required by the filter.
void setDeltaMassMax(const double massMax)
FilterRange m_deltaR
Required range in deltaR (min/max)
double deltaR(const I4Momentum &p4, double eta, double phi)
from 1 I4Momentum
void setDeltaRMin(const double deltaRMin)
void setDeltaPz(const double deltaPzMin, const double deltaPzMax)
double deltaPtMax() const
Returns the maximum pt required by the filter.
void setDeltaMass(const double deltaMassMin, const double deltaMassMax)
virtual bool isAccepted(const OBJ *object, const ASSO *associated) const
Main filter method.
FilterRange m_deltaPy
Required range in py (min/max)
void setDeltaMassMin(const double massMin)
FilterRange m_deltaCosTheta
Required range in cos(theta) (min/max)
void setDeltaPtMin(const double deltaPtMin)
double deltaPyMax() const
Returns the maximum py required by the filter.
virtual void reset()
Reset the range cuts for the internal variables (px,py,...) After calling this method,...
void setDeltaPzMin(const double deltaPzMin)
void setDeltaPx(const double deltaPxMin, const double deltaPxMax)
void setDeltaEtaMin(const double deltaEtaMin)
double deltaPhiMin() const
Returns the minimum phi required by the filter.
AssocFilter & operator=(const AssocFilter &rhs)
Assignment operator:
double deltaRMax() const
Returns the maximum deltaR required by the filter.
double deltaMassMin() const
Returns the minimum mass required by the filter.
double deltaEneMax() const
Returns the maximum energy required by the filter.
IAssocFilter & operator=(const IAssocFilter< OBJ, ASSO > &rhs)
Assignment operator:
FilterRange m_deltaPz
Required range in pz (min/max)
IFilterCuts is a class which is used internally by the filters to copy their cut properties one to ...
void setDeltaPxMax(const double deltaPxMax)
FilterRange m_deltaPt
Required range in pt (min/max)
void setDeltaPyMax(const double deltaPyMax)
void setDeltaPxMin(const double deltaPxMin)
void setDeltaPy(const double deltaPyMin, const double deltaPyMax)
void setDeltaCosThetaMax(const double deltaCosThetaMax)
double deltaEneMin() const
Returns the minimum energy required by the filter.
void setDeltaThetaMax(const double deltaThetaMax)
double deltaPxMax() const
Returns the maximum px required by the filter.
FilterRange m_deltaMass
Required range in mass (min/max)
void setDeltaEneMin(const double deltaEneMin)