ATLAS Offline Software
ParticleSigStateImpl.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // ParticleSigStateImpl.h
8 // Header file for class ParticleSigStateImpl
9 // Author : Pier-Olivier DeViveiros
10 // Inspired by Sebastien Binet's ParticleImpl
11 // Date : November 2009
13 #ifndef PARTICLEEVENT_PARTICLESIGSTATEIMPL_H
14 #define PARTICLEEVENT_PARTICLESIGSTATEIMPL_H 1
15 
19 // STL includes
20 #include <ostream>
21 
22 // boost
23 #include <any> // for navigable stuff
24 
25 #include "AthLinks/ElementLink.h"
26 
27 // EventKernel includes
28 #include "EventKernel/IParticle.h"
30 
31 // Navigation includes
32 #include "Navigation/NavWrapper.h"
33 
34 // ParticleEvent includes
35 #include "ParticleEvent/Lib/Base.h"
37 
38 template< class INavigable_t,
39  class I4Momentum_t,
40  class IParticle_t = ParticleEvent::Base >
42 {
43 
45  // Public typedefs:
47 public:
48 
51  typedef INavigable_t navigable_type;
52 
55  typedef I4Momentum_t momentum_type;
56 
59  typedef IParticle_t particle_type;
60 
63  typedef ParticleSigStateImpl<INavigable_t,
64  I4Momentum_t,
65  IParticle_t> self_type;
66 
68 
70  // Public methods:
72 public:
73 
76  ParticleSigStateImpl( int nStates = 1 , state_t defaultState = state_t(0) );
77 
81 
85 
89 
91  // Const methods:
93 
96  const navigable_type& navigableBase() const;
97 
101  const momentum_type& momentumBase( ) const;
102 
105  const particle_type& particleBase() const;
106 
109  virtual
110  void fillToken( INavigationToken & thisToken ) const;
111  virtual
112  void fillToken( INavigationToken & thisToken,
113  const std::any& weight ) const;
114 
122  //Comparing & Versioning Control
123  bool hasSameAthenaBarCode(const IAthenaBarCode &/*obj*/) const;
126  void newVersion();
128  // std::ostream& dump(std::ostream& out) const;
129 
142  virtual double px() const;
143  virtual double px(state_t s) const;
144 
146  virtual double py() const;
147  virtual double py(state_t s) const;
148 
150  virtual double pz() const;
151  virtual double pz(state_t s) const;
152 
154  virtual double m() const;
155  virtual double m(state_t s) const;
156 
158  virtual double m2() const;
159  virtual double m2(state_t s) const;
160 
162  virtual double p() const;
163  virtual double p(state_t s) const;
164 
166  virtual double p2() const;
167  virtual double p2(state_t s) const;
168 
170  virtual double rapidity() const;
171  virtual double rapidity(state_t s) const;
172 
174  virtual double eta() const;
175  virtual double eta(state_t s) const;
176 
178  virtual double phi() const;
179  virtual double phi(state_t s) const;
180 
182  virtual double e() const;
183  virtual double e(state_t s) const;
184 
186  virtual double et() const;
187  virtual double et(state_t s) const;
188 
190  virtual double pt() const;
191  virtual double pt(state_t s) const;
192 
194  virtual double iPt() const;
195  virtual double iPt(state_t s) const;
196 
198  virtual double cosPhi() const;
199  virtual double cosPhi(state_t s) const;
200 
202  virtual double sinPhi() const;
203  virtual double sinPhi(state_t s) const;
204 
206  virtual double tanTh() const;
207  virtual double tanTh(state_t s) const;
208 
210  virtual double cosTh() const;
211  virtual double cosTh(state_t s) const;
212 
214  virtual double sinTh() const;
215  virtual double sinTh(state_t s) const;
216 
218  virtual double cotTh() const;
219  virtual double cotTh(state_t s) const;
220 
222  virtual CLHEP::HepLorentzVector hlv() const;
223  virtual CLHEP::HepLorentzVector hlv(state_t s) const;
224 
225  virtual const I4MomentumError* errors() const;
226  virtual const I4MomentumError* errors(state_t s) const;
227 
229  virtual I4Momentum::Kind kind() const;
230 
232  virtual std::ostream& dump( std::ostream& out ) const;
233 
240  virtual
242 
244  virtual
245  const Trk::RecVertex* origin() const;
246 
248  virtual
250 
252  virtual
253  bool hasCharge() const;
254 
258  virtual
260 
262  virtual
263  bool hasPdgId() const;
264 
266  virtual
267  int pdgId() const;
268 
272  // Non-const methods:
275 
279 
284 
288 
289 
290  // Set functions (for I4Momentum)
291  virtual void set4Mom( const I4Momentum& p4 );
292  virtual void set4Mom( const I4Momentum * const p4 );
293  virtual void set4Mom( const CLHEP::HepLorentzVector& hlv );
294  virtual void set4Mom( const I4Momentum& p4, state_t s );
295  virtual void set4Mom( const I4Momentum * const p4, state_t s );
296  virtual void set4Mom( const CLHEP::HepLorentzVector& hlv, state_t s );
297 
298  // Set functions (for IParticle)
300  virtual void set_charge( ChargeType x );
301  virtual void set_pdgId ( int x );
302  virtual void set_origin( const VxContainer* theContainer, int index );
303  virtual void set_origin( const VxContainer* theContainer,
304  const Trk::VxCandidate * vertex );
306 
307  // ISignalState methods
308 
310  virtual state_t signalState() const;
311 
313  virtual bool hasSignalState(state_t s) const;
314 
316  virtual bool isAtSignalState(state_t s) const;
317 
319  // Protected accessors:
321  protected:
322 
324  virtual bool setSignalState(state_t s);
325 
327  virtual void resetSignalState();
328 
330  std::vector<I4Momentum_t>& momentumVector(){return m_mom;}
331 
333  int nStates(){return m_nStates;}
334  void setNStates(int n){m_nStates = n;}
335 
337  // Private data:
339  private:
340 
342  INavigable_t m_nav;
343 
348  std::vector<I4Momentum_t> m_mom;
349 
351  IParticle_t m_part;
352 
355 
358 
359 };
360 
364 
365 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
366 inline
367 ParticleSigStateImpl<INavigable_t,
368  I4Momentum_t,
369  IParticle_t>::ParticleSigStateImpl(int nStates, state_t defaultState) :
370  IAthenaBarCode ( ), // FIXME should be removed
371  INavigable ( ), // FIXME should be removed
372  I4Momentum ( ), // FIXME should be removed
373  INavigable4Momentum ( ), // FIXME should be removed
374  IParticle ( ),
375  ISignalState ( ),
376  m_nav ( ),
377  m_mom ( ),
378  m_part ( ),
379  m_nStates ( nStates ),
380  m_currentState( defaultState )
381 
382 {
383  // Need at least 1 Signal State!
384  if( m_nStates < 1 )
385  m_nStates = 1;
386  // Re-size the 4-vector holder
387  // Initialize it in the first SignalState
388  m_mom.resize(nStates);
389 }
390 
391 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
392 inline ParticleSigStateImpl<INavigable_t,
393  I4Momentum_t,
394  IParticle_t>::ParticleSigStateImpl( const ParticleSigStateImpl& rhs ) :
395  IAthenaBarCode ( rhs ), // FIXME should be removed
396  INavigable ( rhs ), // FIXME should be removed
397  I4Momentum ( rhs ), // FIXME should be removed
398  INavigable4Momentum ( rhs ), // FIXME should be removed
399  IParticle ( rhs ),
400  ISignalState ( rhs ),
401  m_nav ( rhs.m_nav ),
402  m_mom ( rhs.m_mom ),
403  m_part ( rhs.m_part ),
404  m_nStates ( rhs.m_nStates ),
405  m_currentState( rhs.m_currentState )
406 {}
407 
408 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
410 ParticleSigStateImpl<INavigable_t,
411  I4Momentum_t,
412  IParticle_t>::operator=( const ParticleSigStateImpl& rhs )
413 {
414  if ( this != &rhs ) {
415  IAthenaBarCode::operator=(rhs); // FIXME should be removed
416  INavigable::operator=(rhs); // FIXME should be removed
417  I4Momentum::operator=(rhs); // FIXME should be removed
418  INavigable4Momentum::operator=(rhs); // FIXME should be removed
419  IParticle::operator=( rhs );
420  m_nav = rhs.m_nav;
421  m_mom = rhs.m_mom;
422  m_part = rhs.m_part;
423  m_nStates = rhs.m_nStates;
424  m_currentState = rhs.m_currentState;
425  }
426  return *this;
427 }
428 
429 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
430 //inline
431 ParticleSigStateImpl<INavigable_t,
432  I4Momentum_t,
433  IParticle_t>::~ParticleSigStateImpl()
434 {}
435 
436 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
437 inline const INavigable_t& ParticleSigStateImpl<INavigable_t,
438  I4Momentum_t,
439  IParticle_t>::navigableBase() const
440 {
441  return m_nav;
442 }
443 
444 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
445 inline const I4Momentum_t& ParticleSigStateImpl<INavigable_t,
446  I4Momentum_t,
447  IParticle_t>::momentumBase(state_t s) const
448 {
449  if(hasSignalState(s))
450  return m_mom[int(s)];
451  else
452  return m_mom[0];
453 }
454 
455 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
456 inline const I4Momentum_t& ParticleSigStateImpl<INavigable_t,
457  I4Momentum_t,
458  IParticle_t>::momentumBase() const
459 {
460  if(hasSignalState(m_currentState))
461  return m_mom[int(m_currentState)];
462  else
463  return m_mom[0];
464 }
465 
466 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
467 inline const IParticle_t& ParticleSigStateImpl<INavigable_t,
468  I4Momentum_t,
469  IParticle_t>::particleBase() const
470 {
471  return m_part;
472 }
473 
474 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
475 inline void ParticleSigStateImpl<INavigable_t,
476  I4Momentum_t,
477  IParticle_t>::fillToken( INavigationToken& thisToken ) const
478 {
479  m_nav.fillToken( thisToken );
480 }
481 
482 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
483 inline void ParticleSigStateImpl<INavigable_t,
484  I4Momentum_t,
485  IParticle_t>::fillToken( INavigationToken & thisToken,
486  const std::any& weight ) const
487 {
488  m_nav.fillToken( thisToken, weight );
489 }
490 
491 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
492 inline double ParticleSigStateImpl<INavigable_t,
493  I4Momentum_t,
494  IParticle_t>::px(state_t s) const
495 {
496  return momentumBase(s).px();
497 }
498 
499 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
500 inline double ParticleSigStateImpl<INavigable_t,
501  I4Momentum_t,
502  IParticle_t>::py(state_t s) const
503 {
504  return momentumBase(s).py();
505 }
506 
507 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
508 inline double ParticleSigStateImpl<INavigable_t,
509  I4Momentum_t,
510  IParticle_t>::pz(state_t s) const
511 {
512  return momentumBase(s).pz();
513 }
514 
515 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
516 inline double ParticleSigStateImpl<INavigable_t,
517  I4Momentum_t,
518  IParticle_t>::m(state_t s) const
519 {
520  return momentumBase(s).m();
521 }
522 
523 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
524 inline double ParticleSigStateImpl<INavigable_t,
525  I4Momentum_t,
526  IParticle_t>::m2(state_t s) const
527 {
528  return momentumBase(s).m2();
529 }
530 
531 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
532 inline double ParticleSigStateImpl<INavigable_t,
533  I4Momentum_t,
534  IParticle_t>::p(state_t s) const
535 {
536  return momentumBase(s).p();
537 }
538 
539 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
540 inline double ParticleSigStateImpl<INavigable_t,
541  I4Momentum_t,
542  IParticle_t>::p2(state_t s) const
543 {
544  return momentumBase(s).p2();
545 }
546 
547 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
548 inline double ParticleSigStateImpl<INavigable_t,
549  I4Momentum_t,
550  IParticle_t>::rapidity(state_t s) const
551 {
552  return momentumBase(s).rapidity();
553 }
554 
555 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
556 inline double ParticleSigStateImpl<INavigable_t,
557  I4Momentum_t,
558  IParticle_t>::eta(state_t s) const
559 {
560  return momentumBase(s).eta();
561 }
562 
563 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
564 inline double ParticleSigStateImpl<INavigable_t,
565  I4Momentum_t,
566  IParticle_t>::phi(state_t s) const
567 {
568  return momentumBase(s).phi();
569 }
570 
571 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
572 inline double ParticleSigStateImpl<INavigable_t,
573  I4Momentum_t,
574  IParticle_t>::e(state_t s) const
575 {
576  return momentumBase(s).e();
577 }
578 
579 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
580 inline double ParticleSigStateImpl<INavigable_t,
581  I4Momentum_t,
582  IParticle_t>::et(state_t s) const
583 {
584  return momentumBase(s).et();
585 }
586 
587 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
588 inline double ParticleSigStateImpl<INavigable_t,
589  I4Momentum_t,
590  IParticle_t>::pt(state_t s) const
591 {
592  return momentumBase(s).pt();
593 }
594 
595 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
596 inline double ParticleSigStateImpl<INavigable_t,
597  I4Momentum_t,
598  IParticle_t>::iPt(state_t s) const
599 {
600  return momentumBase(s).iPt();
601 }
602 
603 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
604 inline double ParticleSigStateImpl<INavigable_t,
605  I4Momentum_t,
606  IParticle_t>::cosPhi(state_t s) const
607 {
608  return momentumBase(s).cosPhi();
609 }
610 
611 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
612 inline double ParticleSigStateImpl<INavigable_t,
613  I4Momentum_t,
614  IParticle_t>::sinPhi(state_t s) const
615 {
616  return momentumBase(s).sinPhi();
617 }
618 
619 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
620 inline double ParticleSigStateImpl<INavigable_t,
621  I4Momentum_t,
622  IParticle_t>::tanTh(state_t s) const
623 {
624  return momentumBase(s).tanTh();
625 }
626 
627 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
628 inline double ParticleSigStateImpl<INavigable_t,
629  I4Momentum_t,
630  IParticle_t>::cosTh(state_t s) const
631 {
632  return momentumBase(s).cosTh();
633 }
634 
635 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
636 inline double ParticleSigStateImpl<INavigable_t,
637  I4Momentum_t,
638  IParticle_t>::sinTh(state_t s) const
639 {
640  return momentumBase(s).sinTh();
641 }
642 
643 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
644 inline double ParticleSigStateImpl<INavigable_t,
645  I4Momentum_t,
646  IParticle_t>::cotTh(state_t s) const
647 {
648  return momentumBase(s).cotTh();
649 }
650 
651 
652 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
653 inline CLHEP::HepLorentzVector ParticleSigStateImpl<INavigable_t,
654  I4Momentum_t,
655  IParticle_t>::hlv(state_t s) const
656 {
657  return momentumBase(s).hlv();
658 }
659 
660 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
661 inline const I4MomentumError* ParticleSigStateImpl<INavigable_t,
662  I4Momentum_t,
663  IParticle_t>::errors(state_t s) const
664 {
665  return momentumBase(s).errors();
666 }
667 
668 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
669 inline double ParticleSigStateImpl<INavigable_t,
670  I4Momentum_t,
671  IParticle_t>::px() const
672 {
673  return momentumBase().px();
674 }
675 
676 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
677 inline double ParticleSigStateImpl<INavigable_t,
678  I4Momentum_t,
679  IParticle_t>::py() const
680 {
681  return momentumBase().py();
682 }
683 
684 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
685 inline double ParticleSigStateImpl<INavigable_t,
686  I4Momentum_t,
687  IParticle_t>::pz() const
688 {
689  return momentumBase().pz();
690 }
691 
692 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
693 inline double ParticleSigStateImpl<INavigable_t,
694  I4Momentum_t,
695  IParticle_t>::m() const
696 {
697  return momentumBase().m();
698 }
699 
700 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
701 inline double ParticleSigStateImpl<INavigable_t,
702  I4Momentum_t,
703  IParticle_t>::m2() const
704 {
705  return momentumBase().m2();
706 }
707 
708 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
709 inline double ParticleSigStateImpl<INavigable_t,
710  I4Momentum_t,
711  IParticle_t>::p() const
712 {
713  return momentumBase().p();
714 }
715 
716 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
717 inline double ParticleSigStateImpl<INavigable_t,
718  I4Momentum_t,
719  IParticle_t>::p2() const
720 {
721  return momentumBase().p2();
722 }
723 
724 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
725 inline double ParticleSigStateImpl<INavigable_t,
726  I4Momentum_t,
727  IParticle_t>::rapidity() const
728 {
729  return momentumBase().rapidity();
730 }
731 
732 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
733 inline double ParticleSigStateImpl<INavigable_t,
734  I4Momentum_t,
735  IParticle_t>::eta() const
736 {
737  return momentumBase().eta();
738 }
739 
740 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
741 inline double ParticleSigStateImpl<INavigable_t,
742  I4Momentum_t,
743  IParticle_t>::phi() const
744 {
745  return momentumBase().phi();
746 }
747 
748 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
749 inline double ParticleSigStateImpl<INavigable_t,
750  I4Momentum_t,
751  IParticle_t>::e() const
752 {
753  return momentumBase().e();
754 }
755 
756 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
757 inline double ParticleSigStateImpl<INavigable_t,
758  I4Momentum_t,
759  IParticle_t>::et() const
760 {
761  return momentumBase().et();
762 }
763 
764 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
765 inline double ParticleSigStateImpl<INavigable_t,
766  I4Momentum_t,
767  IParticle_t>::pt() const
768 {
769  return momentumBase().pt();
770 }
771 
772 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
773 inline double ParticleSigStateImpl<INavigable_t,
774  I4Momentum_t,
775  IParticle_t>::iPt() const
776 {
777  return momentumBase().iPt();
778 }
779 
780 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
781 inline double ParticleSigStateImpl<INavigable_t,
782  I4Momentum_t,
783  IParticle_t>::cosPhi() const
784 {
785  return momentumBase().cosPhi();
786 }
787 
788 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
789 inline double ParticleSigStateImpl<INavigable_t,
790  I4Momentum_t,
791  IParticle_t>::sinPhi() const
792 {
793  return momentumBase().sinPhi();
794 }
795 
796 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
797 inline double ParticleSigStateImpl<INavigable_t,
798  I4Momentum_t,
799  IParticle_t>::tanTh() const
800 {
801  return momentumBase().tanTh();
802 }
803 
804 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
805 inline double ParticleSigStateImpl<INavigable_t,
806  I4Momentum_t,
807  IParticle_t>::cosTh() const
808 {
809  return momentumBase().cosTh();
810 }
811 
812 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
813 inline double ParticleSigStateImpl<INavigable_t,
814  I4Momentum_t,
815  IParticle_t>::sinTh() const
816 {
817  return momentumBase().sinTh();
818 }
819 
820 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
821 inline double ParticleSigStateImpl<INavigable_t,
822  I4Momentum_t,
823  IParticle_t>::cotTh() const
824 {
825  return momentumBase().cotTh();
826 }
827 
828 
829 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
830 inline CLHEP::HepLorentzVector ParticleSigStateImpl<INavigable_t,
831  I4Momentum_t,
832  IParticle_t>::hlv() const
833 {
834  return momentumBase().hlv();
835 }
836 
837 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
838 inline const I4MomentumError* ParticleSigStateImpl<INavigable_t,
839  I4Momentum_t,
840  IParticle_t>::errors() const
841 {
842  return momentumBase().errors();
843 }
844 
845 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
846 inline I4Momentum::Kind ParticleSigStateImpl<INavigable_t,
847  I4Momentum_t,
848  IParticle_t>::kind() const
849 {
850  return momentumBase().kind();
851 }
852 
853 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
854 inline std::ostream& ParticleSigStateImpl<INavigable_t,
855  I4Momentum_t,
856  IParticle_t>::dump( std::ostream& out ) const
857 {
858  momentumBase().dump ( out );
859  out << "\n";
860  m_part.dump( out );
861  return out;
862 }
863 
864 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
866  I4Momentum_t,
867  IParticle_t>::dataType() const
868 {
869  return m_part.dataType();
870 }
871 
872 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
873 inline const Trk::RecVertex* ParticleSigStateImpl<INavigable_t,
874  I4Momentum_t,
875  IParticle_t>::origin() const
876 {
877  return m_part.origin();
878 }
879 
880 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
881 inline const ElementLink< VxContainer >& ParticleSigStateImpl<INavigable_t,
882  I4Momentum_t,
883  IParticle_t>::originLink() const
884 {
885  return m_part.originLink();
886 }
887 
888 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
889 inline bool ParticleSigStateImpl<INavigable_t,
890  I4Momentum_t,
891  IParticle_t>::hasCharge() const
892 {
893  return m_part.hasCharge();
894 }
895 
896 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
897 inline ChargeType ParticleSigStateImpl<INavigable_t,
898  I4Momentum_t,
899  IParticle_t>::charge() const
900 {
901  return m_part.charge();
902 }
903 
904 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
905 inline bool ParticleSigStateImpl<INavigable_t,
906  I4Momentum_t,
907  IParticle_t>::hasPdgId() const
908 {
909  return m_part.hasPdgId();
910 }
911 
912 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
913 inline int ParticleSigStateImpl<INavigable_t,
914  I4Momentum_t,
915  IParticle_t>::pdgId() const
916 {
917  return m_part.pdgId();
918 }
919 
921 // Passing all interface of IAthenaBarCode Here
922 // Through particleBase()
924 
925 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
926 inline AthenaBarCode_t ParticleSigStateImpl<INavigable_t,
927  I4Momentum_t,
928  IParticle_t>::getAthenaBarCode() const
929 {
930  return particleBase().getAthenaBarCodeImpl().getAthenaBarCode();
931 }
932 
933 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
934 inline void ParticleSigStateImpl<INavigable_t,
935  I4Momentum_t,
936  IParticle_t>::setAthenaBarCode(AthenaBarCode_t id)
937 {
938  particleBase().getAthenaBarCodeImpl().setAthenaBarCode(id);
939 }
940 
941 //Comparing & Versioning Control
942 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
943 inline bool ParticleSigStateImpl<INavigable_t,
944  I4Momentum_t,
945  IParticle_t>::hasSameAthenaBarCode(const IAthenaBarCode &bc) const
946 {
947  return particleBase().getAthenaBarCodeImpl().hasSameAthenaBarCode(bc);
948 }
949 
950 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
951 inline bool ParticleSigStateImpl<INavigable_t,
952  I4Momentum_t,
953  IParticle_t>::hasSameAthenaBarCodeExceptVersion(const IAthenaBarCode &bc) const
954 {
955  return particleBase().getAthenaBarCodeImpl().hasSameAthenaBarCodeExceptVersion(bc);
956 }
957 
958 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
959 inline AthenaBarCodeVersion_t ParticleSigStateImpl<INavigable_t,
960  I4Momentum_t,
961  IParticle_t>::getVersion() const
962 {
963  return particleBase().getAthenaBarCodeImpl().getVersion();
964 }
965 
966 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
967 inline void ParticleSigStateImpl<INavigable_t,
968  I4Momentum_t,
969  IParticle_t>::newVersion()
970 {
971  particleBase().getAthenaBarCodeImpl().newVersion();
972 }
973 
974 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
975 inline void ParticleSigStateImpl<INavigable_t,
976  I4Momentum_t,
977  IParticle_t>::setVersion(AthenaBarCodeVersion_t newversion)
978 {
979  particleBase().getAthenaBarCodeImpl().setVersion(newversion);
980 }
981 
983 // Finished Passing all interface of IAthenaBarCode
985 
986 // --------------------
987 // non-const interface
988 // --------------------
989 
990 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
991 inline INavigable_t& ParticleSigStateImpl<INavigable_t,
992  I4Momentum_t,
993  IParticle_t>::navigableBase()
994 {
995  return m_nav;
996 }
997 
998 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
999 inline I4Momentum_t& ParticleSigStateImpl<INavigable_t,
1000  I4Momentum_t,
1001  IParticle_t>::momentumBase(state_t s)
1002 {
1003  if(hasSignalState(s))
1004  return m_mom[int(s)];
1005  else
1006  return m_mom[0];
1007 }
1008 
1009 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1010 inline I4Momentum_t& ParticleSigStateImpl<INavigable_t,
1011  I4Momentum_t,
1012  IParticle_t>::momentumBase()
1013 {
1014  if(hasSignalState(m_currentState))
1015  return m_mom[int(m_currentState)];
1016  else
1017  return m_mom[0];
1018 }
1019 
1020 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1021 inline IParticle_t& ParticleSigStateImpl<INavigable_t,
1022  I4Momentum_t,
1023  IParticle_t>::particleBase()
1024 {
1025  return m_part;
1026 }
1027 
1028 
1029 // setters
1030 
1031 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1032 inline void ParticleSigStateImpl<INavigable_t,
1033  I4Momentum_t,
1034  IParticle_t>::set4Mom( const I4Momentum& p4, state_t s )
1035 {
1036  return momentumBase(s).set4Mom( p4 );
1037 }
1038 
1039 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1040 inline void ParticleSigStateImpl<INavigable_t,
1041  I4Momentum_t,
1042  IParticle_t>::set4Mom( const I4Momentum * const p4, state_t s )
1043 {
1044  return momentumBase(s).set4Mom( p4 );
1045 }
1046 
1047 
1048 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1049 inline void ParticleSigStateImpl<INavigable_t,
1050  I4Momentum_t,
1051  IParticle_t>::set4Mom( const CLHEP::HepLorentzVector& hlv, state_t s )
1052 {
1053  return momentumBase(s).set4Mom( hlv );
1054 }
1055 
1056 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1057 inline void ParticleSigStateImpl<INavigable_t,
1058  I4Momentum_t,
1059  IParticle_t>::set4Mom( const I4Momentum& p4 )
1060 {
1061  return momentumBase().set4Mom( p4 );
1062 }
1063 
1064 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1065 inline void ParticleSigStateImpl<INavigable_t,
1066  I4Momentum_t,
1067  IParticle_t>::set4Mom( const I4Momentum * const p4 )
1068 {
1069  return momentumBase().set4Mom( p4 );
1070 }
1071 
1072 
1073 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1074 inline void ParticleSigStateImpl<INavigable_t,
1075  I4Momentum_t,
1076  IParticle_t>::set4Mom( const CLHEP::HepLorentzVector& hlv )
1077 {
1078  return momentumBase().set4Mom( hlv );
1079 }
1080 
1081 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1082 inline void ParticleSigStateImpl<INavigable_t,
1083  I4Momentum_t,
1084  IParticle_t>::set_dataType( ParticleDataType::DataType x )
1085 {
1086  m_part.set_dataType(x);
1087 }
1088 
1089 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1090 inline void ParticleSigStateImpl<INavigable_t,
1091  I4Momentum_t,
1092  IParticle_t>::set_charge( ChargeType x )
1093 {
1094  m_part.set_charge(x);
1095 }
1096 
1097 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1098 inline void ParticleSigStateImpl<INavigable_t,
1099  I4Momentum_t,
1100  IParticle_t>::set_pdgId( int x )
1101 {
1102  m_part.set_pdgId(x);
1103 }
1104 
1105 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1106 inline void ParticleSigStateImpl<INavigable_t,
1107  I4Momentum_t,
1108  IParticle_t>::set_origin( const VxContainer* theContainer,
1109  int index )
1110 {
1111  m_part.set_origin(theContainer, index);
1112 }
1113 
1114 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1115 inline void ParticleSigStateImpl<INavigable_t,
1116  I4Momentum_t,
1117  IParticle_t>::set_origin( const VxContainer* theContainer,
1118  const Trk::VxCandidate * vertex )
1119 {
1120  m_part.set_origin(theContainer, vertex);
1121 }
1122 
1123 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1124 inline void ParticleSigStateImpl<INavigable_t,
1125  I4Momentum_t,
1126  IParticle_t>::set_origin( const ElementLink<VxContainer>& origin )
1127 {
1128  m_part.set_origin(origin);
1129 }
1130 
1131 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1132 std::ostream& operator<< (std::ostream& out,
1133  const ParticleSigStateImpl<INavigable_t,
1134  I4Momentum_t,
1135  IParticle_t>& p4);
1136 
1137 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1138 inline std::ostream& operator<< (std::ostream& out,
1139  const ParticleSigStateImpl<INavigable_t,
1140  I4Momentum_t,
1141  IParticle_t>& p4)
1142 {
1143  return p4.dump( out );
1144 }
1145 
1146 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1147 inline P4SignalState::State ParticleSigStateImpl<INavigable_t,
1148  I4Momentum_t,
1149  IParticle_t>::signalState() const
1150 {
1151  return m_currentState;
1152 }
1153 
1154 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1155 inline bool ParticleSigStateImpl<INavigable_t,
1156  I4Momentum_t,
1157  IParticle_t>::setSignalState(state_t s)
1158 {
1159  if(!hasSignalState(s))
1160  {
1161  return false;
1162  } else {
1163  m_currentState = s;
1164  return true;
1165  }
1166 }
1167 
1168 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1169 inline bool ParticleSigStateImpl<INavigable_t,
1170  I4Momentum_t,
1171  IParticle_t>::hasSignalState(state_t s) const
1172 {
1173  // UNKNOWN is not an actual SignalState!
1174  if(int(s)<0)
1175  return false;
1176 
1177  return (int(s) < m_nStates);
1178 }
1179 
1180 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1181 inline bool ParticleSigStateImpl<INavigable_t,
1182  I4Momentum_t,
1183  IParticle_t>::isAtSignalState(state_t s) const
1184 {
1185  return (s == m_currentState);
1186 }
1187 
1188 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
1189 inline void ParticleSigStateImpl<INavigable_t,
1190  I4Momentum_t,
1191  IParticle_t>::resetSignalState()
1192 {
1193  m_currentState = state_t(0);
1194 }
1195 
1196 
1197 
1198 #endif //> PARTICLEEVENT_PARTICLEIMPL_H
ParticleSigStateImpl::sinTh
virtual double sinTh(state_t s) const
Definition: ParticleSigStateImpl.h:638
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
ParticleSigStateImpl::m_mom
std::vector< I4Momentum_t > m_mom
The 4-momentum part Eventually, perhaps we can use a set since not all intermediate Signal States wil...
Definition: ParticleSigStateImpl.h:348
ParticleSigStateImpl::py
virtual double py(state_t s) const
Definition: ParticleSigStateImpl.h:502
ParticleSigStateImpl::~ParticleSigStateImpl
virtual ~ParticleSigStateImpl()
Default destructor:
Definition: ParticleSigStateImpl.h:433
ParticleSigStateImpl::py
virtual double py() const
y component of momentum
Definition: ParticleSigStateImpl.h:679
ParticleSigStateImpl::signalState
virtual state_t signalState() const
Retrieve current signal state.
Definition: ParticleSigStateImpl.h:1149
ParticleSigStateImpl::momentumBase
const momentum_type & momentumBase() const
Definition: ParticleSigStateImpl.h:458
I4Momentum
Definition: I4Momentum.h:31
ParticleSigStateImpl::hlv
virtual CLHEP::HepLorentzVector hlv() const
CLHEP HepLorentzVector.
Definition: ParticleSigStateImpl.h:832
ParticleSigStateImpl::hasSameAthenaBarCode
bool hasSameAthenaBarCode(const IAthenaBarCode &) const
Definition: ParticleSigStateImpl.h:945
ParticleSigStateImpl::m_nStates
int m_nStates
Number of Signal States.
Definition: ParticleSigStateImpl.h:354
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
ParticleSigStateImpl::hasSameAthenaBarCodeExceptVersion
bool hasSameAthenaBarCodeExceptVersion(const IAthenaBarCode &) const
Definition: ParticleSigStateImpl.h:953
test_pyathena.px
px
Definition: test_pyathena.py:18
python.SystemOfUnits.m2
int m2
Definition: SystemOfUnits.py:92
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
ParticleSigStateImpl::operator=
ParticleSigStateImpl & operator=(const ParticleSigStateImpl &rhs)
Assignment operator.
Definition: ParticleSigStateImpl.h:412
ParticleSigStateImpl::eta
virtual double eta() const
pseudo rapidity
Definition: ParticleSigStateImpl.h:735
ParticleSigStateImpl::e
virtual double e() const
energy
Definition: ParticleSigStateImpl.h:751
ParticleSigStateImpl::navigableBase
navigable_type & navigableBase()
access to underlying base type (INavigable-like)
Definition: ParticleSigStateImpl.h:993
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
ParticleSigStateImpl::hasSignalState
virtual bool hasSignalState(state_t s) const
check if signal state exists for current implementation
Definition: ParticleSigStateImpl.h:1171
ParticleSigStateImpl::set4Mom
virtual void set4Mom(const I4Momentum *const p4, state_t s)
Definition: ParticleSigStateImpl.h:1042
ParticleSigStateImpl::hasPdgId
virtual bool hasPdgId() const
method to check if particle id information is available
Definition: ParticleSigStateImpl.h:907
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
xAOD::et
et
Definition: TrigEMCluster_v1.cxx:25
NavWrapper.h
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
index
Definition: index.py:1
ISignalState
Definition: ISignalState.h:42
ParticleSigStateImpl::errors
virtual const I4MomentumError * errors(state_t s) const
Definition: ParticleSigStateImpl.h:663
ParticleSigStateImpl::px
virtual double px() const
We re-define here extra class routines that will allow direct access to signal state kinematics witho...
Definition: ParticleSigStateImpl.h:671
ParticleSigStateImpl::sinTh
virtual double sinTh() const
sinus theta
Definition: ParticleSigStateImpl.h:815
ParticleSigStateImpl::cosPhi
virtual double cosPhi(state_t s) const
Definition: ParticleSigStateImpl.h:606
ParticleSigStateImpl::rapidity
virtual double rapidity(state_t s) const
Definition: ParticleSigStateImpl.h:550
ParticleSigStateImpl::e
virtual double e(state_t s) const
Definition: ParticleSigStateImpl.h:574
ParticleSigStateImpl::ParticleSigStateImpl
ParticleSigStateImpl(int nStates=1, state_t defaultState=state_t(0))
Default constructor.
Definition: ParticleSigStateImpl.h:369
ParticleSigStateImpl::originLink
virtual const ElementLink< VxContainer > & originLink() const
Return an ElementLink corresponding to particle's Origin.
Definition: ParticleSigStateImpl.h:883
ParticleSigStateImpl::momentumVector
std::vector< I4Momentum_t > & momentumVector()
access the vector of momentum
Definition: ParticleSigStateImpl.h:330
ParticleSigStateImpl::set_charge
virtual void set_charge(ChargeType x)
Definition: ParticleSigStateImpl.h:1092
test_pyathena.pt
pt
Definition: test_pyathena.py:11
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
ParticleSigStateImpl::state_t
P4SignalState::State state_t
Definition: ParticleSigStateImpl.h:67
ParticleSigStateImpl::pz
virtual double pz(state_t s) const
Definition: ParticleSigStateImpl.h:510
ParticleSigStateImpl::iPt
virtual double iPt(state_t s) const
Definition: ParticleSigStateImpl.h:598
ParticleSigStateImpl::particleBase
const particle_type & particleBase() const
access to underlying base type (IParticle-like)
Definition: ParticleSigStateImpl.h:469
downloadSingle.dataType
string dataType
Definition: downloadSingle.py:18
ParticleSigStateImpl::setNStates
void setNStates(int n)
Definition: ParticleSigStateImpl.h:334
ParticleSigStateImpl::self_type
ParticleSigStateImpl< INavigable_t, I4Momentum_t, IParticle_t > self_type
publish the type of the base class (ie: 'traits-itize' it)
Definition: ParticleSigStateImpl.h:65
ParticleSigStateImpl::ParticleSigStateImpl
ParticleSigStateImpl(const ParticleSigStateImpl &rhs)
Copy constructor.
Definition: ParticleSigStateImpl.h:394
ParticleSigStateImpl::momentumBase
const momentum_type & momentumBase(state_t s) const
access to underlying base type (I4Momentum-like)
Definition: ParticleSigStateImpl.h:447
ParticleSigStateImpl::getVersion
AthenaBarCodeVersion_t getVersion() const
Definition: ParticleSigStateImpl.h:961
IParticle.h
ParticleSigStateImpl::tanTh
virtual double tanTh(state_t s) const
Definition: ParticleSigStateImpl.h:622
x
#define x
ParticleSigStateImpl::sinPhi
virtual double sinPhi(state_t s) const
Definition: ParticleSigStateImpl.h:614
ParticleDataType::DataType
DataType
Definition: Event/EventKernel/EventKernel/IParticle.h:36
ParticleSigStateImpl::particleBase
particle_type & particleBase()
access to underlying base type (IParticle-like)
Definition: ParticleSigStateImpl.h:1023
ParticleSigStateImpl::px
virtual double px(state_t s) const
Definition: ParticleSigStateImpl.h:494
ParticleSigStateImpl::m
virtual double m(state_t s) const
Definition: ParticleSigStateImpl.h:518
I4Momentum::Kind
Kind
Definition: I4Momentum.h:33
Trk::RecVertex
Trk::RecVertex inherits from Trk::Vertex.
Definition: RecVertex.h:44
ParticleSigStateImpl::momentum_type
I4Momentum_t momentum_type
publish the type of the base class (ie: 'traits-itize' it)
Definition: ParticleSigStateImpl.h:55
run_Egamma1_LArStrip_Fex.dump
dump
Definition: run_Egamma1_LArStrip_Fex.py:88
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:189
ParticleSigStateImpl::dataType
virtual ParticleDataType::DataType dataType() const
Return enum indicating real data, fast, or full simulation Return Type has a DataType enum with the f...
Definition: ParticleSigStateImpl.h:867
ParticleSigStateImpl::momentumBase
momentum_type & momentumBase()
Definition: ParticleSigStateImpl.h:1012
ParticleSigStateImpl::p
virtual double p() const
mass momentum magnitude
Definition: ParticleSigStateImpl.h:711
ParticleSigStateImpl::pt
virtual double pt(state_t s) const
Definition: ParticleSigStateImpl.h:590
ParticleSigStateImpl::phi
virtual double phi(state_t s) const
Definition: ParticleSigStateImpl.h:566
ParticleSigStateImpl::cosPhi
virtual double cosPhi() const
cosinus phi
Definition: ParticleSigStateImpl.h:783
ParticleSigStateImpl::particle_type
IParticle_t particle_type
publish the type of the base class (ie: 'traits-itize' it)
Definition: ParticleSigStateImpl.h:59
ParticleSigStateImpl::m
virtual double m() const
mass
Definition: ParticleSigStateImpl.h:695
Base.h
AthenaBarCode_t
uint64_t AthenaBarCode_t
barcode for all INav4Mom classes
Definition: AthenaKernel/AthenaKernel/IAthenaBarCode.h:44
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
ParticleSigStateImpl::iPt
virtual double iPt() const
inverse of transverse momentum
Definition: ParticleSigStateImpl.h:775
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ParticleSigStateImpl::m_nav
INavigable_t m_nav
The navigable part.
Definition: ParticleSigStateImpl.h:342
ParticleSigStateImpl::et
virtual double et() const
transverse energy defined to be e*sin(theta)
Definition: ParticleSigStateImpl.h:759
ParticleSigStateImpl::set_origin
virtual void set_origin(const VxContainer *theContainer, const Trk::VxCandidate *vertex)
Definition: ParticleSigStateImpl.h:1117
ParticleSigStateImpl::hasCharge
virtual bool hasCharge() const
method to check if charge information is available
Definition: ParticleSigStateImpl.h:891
ParticleSigStateImpl::dump
virtual std::ostream & dump(std::ostream &out) const
Print I4Momentum content.
Definition: ParticleSigStateImpl.h:856
ParticleEvent::Base
Definition: Base.h:34
ParticleSigStateImpl::set4Mom
virtual void set4Mom(const CLHEP::HepLorentzVector &hlv)
set 4Momentum (will throw exception if cannot be implemented)
Definition: ParticleSigStateImpl.h:1076
I4MomentumError
Definition: I4MomentumError.h:28
beamspotman.n
n
Definition: beamspotman.py:731
Amg::pz
@ pz
Definition: GeoPrimitives.h:40
ParticleSigStateImpl::m2
virtual double m2(state_t s) const
Definition: ParticleSigStateImpl.h:526
ParticleSigStateImpl::isAtSignalState
virtual bool isAtSignalState(state_t s) const
check if we are at the passed state
Definition: ParticleSigStateImpl.h:1183
ParticleSigStateImpl::newVersion
void newVersion()
Definition: ParticleSigStateImpl.h:969
INavigationToken
Definition: INavigationToken.h:24
ParticleSigStateImpl::rapidity
virtual double rapidity() const
rapidity
Definition: ParticleSigStateImpl.h:727
ParticleSigStateImpl::hlv
virtual CLHEP::HepLorentzVector hlv(state_t s) const
obtain the CLHEP HepLorentzVector
Definition: ParticleSigStateImpl.h:655
ParticleSigStateImpl::set_dataType
virtual void set_dataType(ParticleDataType::DataType x)
Definition: ParticleSigStateImpl.h:1084
ParticleSigStateImpl::set4Mom
virtual void set4Mom(const I4Momentum *const p4)
set 4Momentum (will throw exception if cannot be implemented)
Definition: ParticleSigStateImpl.h:1067
ParticleSigStateImpl::setAthenaBarCode
void setAthenaBarCode(AthenaBarCode_t)
Definition: ParticleSigStateImpl.h:936
ParticleSigStateImpl::resetSignalState
virtual void resetSignalState()
reset the signal state
Definition: ParticleSigStateImpl.h:1191
INavigable
Definition: INavigable.h:18
VxContainer
Definition: VxContainer.h:28
ParticleSigStateImpl::fillToken
virtual void fillToken(INavigationToken &thisToken) const
Definition: ParticleSigStateImpl.h:477
ParticleSigStateImpl
Definition: ParticleSigStateImpl.h:42
ParticleSigStateImpl::navigableBase
const navigable_type & navigableBase() const
access to underlying base type (INavigable-like)
Definition: ParticleSigStateImpl.h:439
P4ImplPxPyPzE
Definition: P4ImplPxPyPzE.h:32
ParticleSigStateImpl::phi
virtual double phi() const
phi in [-pi,pi[
Definition: ParticleSigStateImpl.h:743
ParticleSigStateImpl::setVersion
void setVersion(AthenaBarCodeVersion_t newversion)
Definition: ParticleSigStateImpl.h:977
ParticleSigStateImpl::set_origin
virtual void set_origin(const ElementLink< VxContainer > &origin)
Definition: ParticleSigStateImpl.h:1126
ParticleSigStateImpl::pdgId
virtual int pdgId() const
Return particle id.
Definition: ParticleSigStateImpl.h:915
IAthenaBarCode
Definition: AthenaKernel/AthenaKernel/IAthenaBarCode.h:48
ParticleSigStateImpl::momentumBase
momentum_type & momentumBase(state_t s)
access to underlying base type (I4Momentum-like)
Definition: ParticleSigStateImpl.h:1001
ParticleSigStateImpl::m_currentState
state_t m_currentState
Current Signal State.
Definition: ParticleSigStateImpl.h:357
ParticleSigStateImpl::errors
virtual const I4MomentumError * errors() const
Access to errors, if available; returns 0 if no errors.
Definition: ParticleSigStateImpl.h:840
mergePhysValFiles.errors
list errors
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:43
Amg::py
@ py
Definition: GeoPrimitives.h:39
ParticleSigStateImpl::eta
virtual double eta(state_t s) const
Definition: ParticleSigStateImpl.h:558
ParticleSigStateImpl::origin
virtual const Trk::RecVertex * origin() const
Return a RecVertex corresponding to particle Origin
Definition: ParticleSigStateImpl.h:875
charge
double charge(const T &p)
Definition: AtlasPID.h:756
ChargeType
double ChargeType
typedef ChargeType used to anticipate changes here
Definition: Event/EventKernel/EventKernel/IParticle.h:40
Navigable< DataVector< INavigable4Momentum >, double, std::vector< std::pair< ElementLink< DataVector< INavigable4Momentum > >, double > > >
ParticleSigStateImpl::p2
virtual double p2(state_t s) const
Definition: ParticleSigStateImpl.h:542
ISignalState.h
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
ParticleSigStateImpl::setSignalState
virtual bool setSignalState(state_t s)
set the current signal state
Definition: ParticleSigStateImpl.h:1157
ParticleSigStateImpl::navigable_type
INavigable_t navigable_type
publish the type of the base class (ie: 'traits-itize' it)
Definition: ParticleSigStateImpl.h:51
ParticleSigStateImpl::cotTh
virtual double cotTh(state_t s) const
Definition: ParticleSigStateImpl.h:646
ParticleSigStateImpl::tanTh
virtual double tanTh() const
tan theta
Definition: ParticleSigStateImpl.h:799
P4SignalState::State
State
Definition: ISignalState.h:28
Trk::VxCandidate
Definition: VxCandidate.h:27
INavigable4Momentum
Definition: INavigable4Momentum.h:21
ParticleSigStateImpl::pt
virtual double pt() const
transverse momentum
Definition: ParticleSigStateImpl.h:767
ParticleSigStateImpl::charge
virtual ChargeType charge() const
returns charge as a typedef ChargeType currently Charge Type is a double for jets this may be changed...
Definition: ParticleSigStateImpl.h:899
ParticleSigStateImpl::p2
virtual double p2() const
square of momentum magnitude
Definition: ParticleSigStateImpl.h:719
ParticleSigStateImpl::m2
virtual double m2() const
mass squared
Definition: ParticleSigStateImpl.h:703
ParticleSigStateImpl::nStates
int nStates()
access the number of state
Definition: ParticleSigStateImpl.h:333
ParticleSigStateImpl::sinPhi
virtual double sinPhi() const
sinus phi
Definition: ParticleSigStateImpl.h:791
ParticleSigStateImpl::getAthenaBarCode
AthenaBarCode_t getAthenaBarCode() const
Definition: ParticleSigStateImpl.h:928
AthenaBarCodeVersion_t
AthenaBarCode_t AthenaBarCodeVersion_t
Definition: AthenaKernel/AthenaKernel/IAthenaBarCode.h:46
operator<<
std::ostream & operator<<(std::ostream &out, const ParticleSigStateImpl< INavigable_t, I4Momentum_t, IParticle_t > &p4)
Definition: ParticleSigStateImpl.h:1138
ParticleSigStateImpl::set_origin
virtual void set_origin(const VxContainer *theContainer, int index)
Definition: ParticleSigStateImpl.h:1108
ParticleSigStateImpl::et
virtual double et(state_t s) const
Definition: ParticleSigStateImpl.h:582
ParticleSigStateImpl::fillToken
virtual void fillToken(INavigationToken &thisToken, const std::any &weight) const
Definition: ParticleSigStateImpl.h:485
ParticleSigStateImpl::set4Mom
virtual void set4Mom(const CLHEP::HepLorentzVector &hlv, state_t s)
Definition: ParticleSigStateImpl.h:1051
ParticleSigStateImpl::cosTh
virtual double cosTh() const
cosinus theta
Definition: ParticleSigStateImpl.h:807
ParticleSigStateImpl::cosTh
virtual double cosTh(state_t s) const
Definition: ParticleSigStateImpl.h:630
ParticleSigStateImpl::pz
virtual double pz() const
z component of momentum
Definition: ParticleSigStateImpl.h:687
checker_macros.h
Define macros for attributes used to control the static checker.
IParticle
Definition: Event/EventKernel/EventKernel/IParticle.h:43
ParticleSigStateImpl::m_part
IParticle_t m_part
The particle-id part.
Definition: ParticleSigStateImpl.h:351
ParticleSigStateImpl::set4Mom
virtual void set4Mom(const I4Momentum &p4, state_t s)
Definition: ParticleSigStateImpl.h:1034
ParticleSigStateImpl::kind
virtual I4Momentum::Kind kind() const
add Kind which tells what kind (P4XYZ) the underlying implementation has
Definition: ParticleSigStateImpl.h:848
ParticleSigStateImpl::p
virtual double p(state_t s) const
Definition: ParticleSigStateImpl.h:534
ParticleSigStateImpl::set_pdgId
virtual void set_pdgId(int x)
Definition: ParticleSigStateImpl.h:1100
ParticleSigStateImpl::cotTh
virtual double cotTh() const
cottan theta
Definition: ParticleSigStateImpl.h:823
ParticleSigStateImpl::set4Mom
virtual void set4Mom(const I4Momentum &p4)
set 4Momentum (will throw exception if cannot be implemented)
Definition: ParticleSigStateImpl.h:1059