ATLAS Offline Software
ParticleImpl.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // ParticleImpl.h
8 // Header file for class ParticleImpl
9 // Author : Sebastien Binet
10 // Date : August 2006
12 #ifndef PARTICLEEVENT_PARTICLEIMPL_H
13 #define PARTICLEEVENT_PARTICLEIMPL_H 1
14 
18 // STL includes
19 #include <ostream>
20 
21 // boost
22 #include <any> // for navigable stuff
23 
24 #include "AthLinks/ElementLink.h"
25 
26 // EventKernel includes
27 #include "EventKernel/IParticle.h"
28 
29 // Navigation includes
30 #include "Navigation/NavWrapper.h"
31 
32 // ParticleEvent includes
33 #include "ParticleEvent/Lib/Base.h"
34 
35 template< class INavigable_t,
36  class I4Momentum_t,
37  class IParticle_t = ParticleEvent::Base >
38 class ParticleImpl : public IParticle
39 {
40 
42  // Public typedefs:
44  public:
45 
48  typedef INavigable_t navigable_type;
49 
52  typedef I4Momentum_t momentum_type;
53 
56  typedef IParticle_t particle_type;
57 
60  typedef ParticleImpl<INavigable_t,
61  I4Momentum_t,
62  IParticle_t> self_type;
63 
65  // Public methods:
67  public:
68 
72 
75  ParticleImpl( const ParticleImpl& rhs );
76 
80 
83  virtual ~ParticleImpl();
84 
86  // Const methods:
88 
91  const navigable_type& navigableBase() const;
92 
95  const momentum_type& momentumBase() const;
96 
99  const particle_type& particleBase() const;
100 
103  virtual
104  void fillToken( INavigationToken & thisToken ) const;
105  virtual
106  void fillToken( INavigationToken & thisToken,
107  const std::any& weight ) const;
108 
116  //Comparing & Versioning Control
117  bool hasSameAthenaBarCode(const IAthenaBarCode &/*obj*/) const;
120  void newVersion();
122  // std::ostream& dump(std::ostream& out) const;
123 
131  virtual
132  double px() const;
133 
135  virtual
136  double py() const;
137 
139  virtual
140  double pz() const;
141 
143  virtual
144  double m() const;
145 
147  virtual
148  double m2() const;
149 
151  virtual
152  double p() const;
153 
155  virtual
156  double p2() const;
157 
159  virtual
160  double rapidity() const;
161 
163  virtual
164  double eta() const;
165 
167  virtual
168  double phi() const;
169 
171  virtual
172  double e() const;
173 
175  virtual
176  double et() const;
177 
179  virtual
180  double pt() const;
181 
183  virtual
184  double iPt() const;
185 
187  virtual
188  double cosPhi() const;
189 
191  virtual
192  double sinPhi() const;
193 
195  virtual
196  double tanTh() const;
197 
199  virtual
200  double cosTh() const;
201 
203  virtual
204  double sinTh() const;
205 
207  virtual
208  double cotTh() const;
209 
211  virtual
212  CLHEP::HepLorentzVector hlv() const;
213 
214  virtual const I4MomentumError* errors() const;
215 
217  virtual I4Momentum::Kind kind() const;
218 
220  virtual
221  std::ostream& dump( std::ostream& out ) const;
222 
229  virtual
231 
233  virtual
234  const Trk::RecVertex* origin() const;
235 
237  virtual
239 
241  virtual
242  bool hasCharge() const;
243 
247  virtual
249 
251  virtual
252  bool hasPdgId() const;
253 
256  virtual
257  int pdgId() const;
258 
262  // Non-const methods:
265 
269 
273 
277 
278 
279  // Set functions (for I4Momentum)
280  virtual
281  void set4Mom( const I4Momentum& p4 );
282  virtual
283  void set4Mom( const I4Momentum * const p4 );
284  virtual
285  void set4Mom( const CLHEP::HepLorentzVector& hlv );
286 
287  // Set functions (for IParticle)
288  virtual
290  virtual
292  virtual
293  void set_pdgId( int x );
294  virtual
295  void set_origin( const VxContainer* theContainer, int index );
296  virtual
297  void set_origin( const VxContainer* theContainer,
298  const Trk::VxCandidate * vertex );
300 
302  // Private data:
304  private:
305 
307  INavigable_t m_nav;
308 
310  I4Momentum_t m_mom;
311 
313  IParticle_t m_part;
314 
315 };
316 
320 
321 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
322 inline
323 ParticleImpl<INavigable_t,
324  I4Momentum_t,
325  IParticle_t>::ParticleImpl() :
326  IAthenaBarCode ( ), // FIXME should be removed
327  INavigable ( ), // FIXME should be removed
328  I4Momentum ( ), // FIXME should be removed
329  INavigable4Momentum ( ), // FIXME should be removed
330  IParticle ( ),
331  m_nav ( ),
332  m_mom ( ),
333  m_part ( )
334 {}
335 
336 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
337 inline
338 ParticleImpl<INavigable_t,
339  I4Momentum_t,
340  IParticle_t>::ParticleImpl( const ParticleImpl& rhs ) :
341  IAthenaBarCode ( rhs ), // FIXME should be removed
342  INavigable ( rhs ), // FIXME should be removed
343  I4Momentum ( rhs ), // FIXME should be removed
344  INavigable4Momentum ( rhs ), // FIXME should be removed
345  IParticle ( rhs ),
346  m_nav ( rhs.m_nav ),
347  m_mom ( rhs.m_mom ),
348  m_part ( rhs.m_part )
349 {}
350 
351 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
352 inline
354 ParticleImpl<INavigable_t,
355  I4Momentum_t,
356  IParticle_t>::operator=( const ParticleImpl& rhs )
357 {
358  if ( this != &rhs ) {
359  IAthenaBarCode::operator=(rhs); // FIXME should be removed
360  INavigable::operator=(rhs); // FIXME should be removed
361  I4Momentum::operator=(rhs); // FIXME should be removed
362  INavigable4Momentum::operator=(rhs); // FIXME should be removed
363  IParticle::operator=( rhs );
364  m_nav = rhs.m_nav;
365  m_mom = rhs.m_mom;
366  m_part = rhs.m_part;
367  }
368  return *this;
369 }
370 
371 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
372 //inline
373 ParticleImpl<INavigable_t,
374  I4Momentum_t,
375  IParticle_t>::~ParticleImpl()
376 {}
377 
378 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
379 inline
380 const INavigable_t&
381 ParticleImpl<INavigable_t,
382  I4Momentum_t,
383  IParticle_t>::navigableBase() const
384 {
385  return m_nav;
386 }
387 
388 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
389 inline
390 const I4Momentum_t&
391 ParticleImpl<INavigable_t,
392  I4Momentum_t,
393  IParticle_t>::momentumBase() const
394 {
395  return m_mom;
396 }
397 
398 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
399 inline
400 const IParticle_t&
401 ParticleImpl<INavigable_t,
402  I4Momentum_t,
403  IParticle_t>::particleBase() const
404 {
405  return m_part;
406 }
407 
408 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
409 inline
410 void
411 ParticleImpl<INavigable_t,
412  I4Momentum_t,
413  IParticle_t>::fillToken( INavigationToken& thisToken ) const
414 {
415  m_nav.fillToken( thisToken );
416 }
417 
418 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
419 inline
420 void
421 ParticleImpl<INavigable_t,
422  I4Momentum_t,
423  IParticle_t>::fillToken( INavigationToken & thisToken,
424  const std::any& weight ) const
425 {
426  m_nav.fillToken( thisToken, weight );
427 }
428 
429 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
430 inline
431 double
432 ParticleImpl<INavigable_t,
433  I4Momentum_t,
434  IParticle_t>::px() const
435 {
436  return m_mom.px();
437 }
438 
439 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
440 inline
441 double
442 ParticleImpl<INavigable_t,
443  I4Momentum_t,
444  IParticle_t>::py() const
445 {
446  return m_mom.py();
447 }
448 
449 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
450 inline
451 double
452 ParticleImpl<INavigable_t,
453  I4Momentum_t,
454  IParticle_t>::pz() const
455 {
456  return m_mom.pz();
457 }
458 
459 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
460 inline
461 double
462 ParticleImpl<INavigable_t,
463  I4Momentum_t,
464  IParticle_t>::m() const
465 {
466  return m_mom.m();
467 }
468 
469 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
470 inline
471 double
472 ParticleImpl<INavigable_t,
473  I4Momentum_t,
474  IParticle_t>::m2() const
475 {
476  return m_mom.m2();
477 }
478 
479 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
480 inline
481 double
482 ParticleImpl<INavigable_t,
483  I4Momentum_t,
484  IParticle_t>::p() const
485 {
486  return m_mom.p();
487 }
488 
489 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
490 inline
491 double
492 ParticleImpl<INavigable_t,
493  I4Momentum_t,
494  IParticle_t>::p2() const
495 {
496  return m_mom.p2();
497 }
498 
499 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
500 inline
501 double
502 ParticleImpl<INavigable_t,
503  I4Momentum_t,
504  IParticle_t>::rapidity() const
505 {
506  return m_mom.rapidity();
507 }
508 
509 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
510 inline
511 double
512 ParticleImpl<INavigable_t,
513  I4Momentum_t,
514  IParticle_t>::eta() const
515 {
516  return m_mom.eta();
517 }
518 
519 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
520 inline
521 double
522 ParticleImpl<INavigable_t,
523  I4Momentum_t,
524  IParticle_t>::phi() const
525 {
526  return m_mom.phi();
527 }
528 
529 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
530 inline
531 double
532 ParticleImpl<INavigable_t,
533  I4Momentum_t,
534  IParticle_t>::e() const
535 {
536  return m_mom.e();
537 }
538 
539 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
540 inline
541 double
542 ParticleImpl<INavigable_t,
543  I4Momentum_t,
544  IParticle_t>::et() const
545 {
546  return m_mom.et();
547 }
548 
549 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
550 inline
551 double
552 ParticleImpl<INavigable_t,
553  I4Momentum_t,
554  IParticle_t>::pt() const
555 {
556  return m_mom.pt();
557 }
558 
559 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
560 inline
561 double
562 ParticleImpl<INavigable_t,
563  I4Momentum_t,
564  IParticle_t>::iPt() const
565 {
566  return m_mom.iPt();
567 }
568 
569 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
570 inline
571 double
572 ParticleImpl<INavigable_t,
573  I4Momentum_t,
574  IParticle_t>::cosPhi() const
575 {
576  return m_mom.cosPhi();
577 }
578 
579 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
580 inline
581 double
582 ParticleImpl<INavigable_t,
583  I4Momentum_t,
584  IParticle_t>::sinPhi() const
585 {
586  return m_mom.sinPhi();
587 }
588 
589 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
590 inline
591 double
592 ParticleImpl<INavigable_t,
593  I4Momentum_t,
594  IParticle_t>::tanTh() const
595 {
596  return m_mom.tanTh();
597 }
598 
599 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
600 inline
601 double
602 ParticleImpl<INavigable_t,
603  I4Momentum_t,
604  IParticle_t>::cosTh() const
605 {
606  return m_mom.cosTh();
607 }
608 
609 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
610 inline
611 double
612 ParticleImpl<INavigable_t,
613  I4Momentum_t,
614  IParticle_t>::sinTh() const
615 {
616  return m_mom.sinTh();
617 }
618 
619 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
620 inline
621 double
622 ParticleImpl<INavigable_t,
623  I4Momentum_t,
624  IParticle_t>::cotTh() const
625 {
626  return m_mom.cotTh();
627 }
628 
629 
630 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
631 inline
632 CLHEP::HepLorentzVector
633 ParticleImpl<INavigable_t,
634  I4Momentum_t,
635  IParticle_t>::hlv() const
636 {
637  return m_mom.hlv();
638 }
639 
640 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
641 inline
642 const I4MomentumError*
643 ParticleImpl<INavigable_t,
644  I4Momentum_t,
645  IParticle_t>::errors() const
646 {
647  return m_mom.errors();
648 }
649 
650 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
651 inline
653 ParticleImpl<INavigable_t,
654  I4Momentum_t,
655  IParticle_t>::kind() const
656 {
657  return m_mom.kind();
658 }
659 
660 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
661 inline
662 std::ostream&
663 ParticleImpl<INavigable_t,
664  I4Momentum_t,
665  IParticle_t>::dump( std::ostream& out ) const
666 {
667  m_mom.dump ( out );
668  out << "\n";
669  m_part.dump( out );
670  return out;
671 }
672 
673 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
674 inline
676 ParticleImpl<INavigable_t,
677  I4Momentum_t,
678  IParticle_t>::dataType() const
679 {
680  return m_part.dataType();
681 }
682 
683 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
684 inline
685 const Trk::RecVertex*
686 ParticleImpl<INavigable_t,
687  I4Momentum_t,
688  IParticle_t>::origin() const
689 {
690  return m_part.origin();
691 }
692 
693 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
694 inline
696 ParticleImpl<INavigable_t,
697  I4Momentum_t,
698  IParticle_t>::originLink() const
699 {
700  return m_part.originLink();
701 }
702 
703 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
704 inline
705 bool
706 ParticleImpl<INavigable_t,
707  I4Momentum_t,
708  IParticle_t>::hasCharge() const
709 {
710  return m_part.hasCharge();
711 }
712 
713 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
714 inline
716 ParticleImpl<INavigable_t,
717  I4Momentum_t,
718  IParticle_t>::charge() const
719 {
720  return m_part.charge();
721 }
722 
723 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
724 inline
725 bool
726 ParticleImpl<INavigable_t,
727  I4Momentum_t,
728  IParticle_t>::hasPdgId() const
729 {
730  return m_part.hasPdgId();
731 }
732 
733 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
734 inline
735 int
736 ParticleImpl<INavigable_t,
737  I4Momentum_t,
738  IParticle_t>::pdgId() const
739 {
740  return m_part.pdgId();
741 }
742 
744 // Passing all interface of IAthenaBarCode Here
745 // Through particleBase()
747 
748 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
749 inline
751 ParticleImpl<INavigable_t,
752  I4Momentum_t,
753  IParticle_t>::getAthenaBarCode() const
754 {
755  return particleBase().getAthenaBarCodeImpl().getAthenaBarCode();
756 }
757 
758 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
759 inline
760 void
761 ParticleImpl<INavigable_t,
762  I4Momentum_t,
763  IParticle_t>::setAthenaBarCode(AthenaBarCode_t id)
764 {
765  particleBase().getAthenaBarCodeImpl().setAthenaBarCode(id);
766 }
767 
768 //Comparing & Versioning Control
769 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
770 inline
771 bool
772 ParticleImpl<INavigable_t,
773  I4Momentum_t,
774  IParticle_t>::hasSameAthenaBarCode(const IAthenaBarCode &bc) const
775 {
776  return particleBase().getAthenaBarCodeImpl().hasSameAthenaBarCode(bc);
777 }
778 
779 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
780 inline
781 bool
782 ParticleImpl<INavigable_t,
783  I4Momentum_t,
784  IParticle_t>::hasSameAthenaBarCodeExceptVersion(const IAthenaBarCode &bc) const
785 {
786  return particleBase().getAthenaBarCodeImpl().hasSameAthenaBarCodeExceptVersion(bc);
787 }
788 
789 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
790 inline
792 ParticleImpl<INavigable_t,
793  I4Momentum_t,
794  IParticle_t>::getVersion() const
795 {
796  return particleBase().getAthenaBarCodeImpl().getVersion();
797 }
798 
799 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
800 inline
801 void
802 ParticleImpl<INavigable_t,
803  I4Momentum_t,
804  IParticle_t>::newVersion()
805 {
806  particleBase().getAthenaBarCodeImpl().newVersion();
807 }
808 
809 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
810 inline
811 void
812 ParticleImpl<INavigable_t,
813  I4Momentum_t,
814  IParticle_t>::setVersion(AthenaBarCodeVersion_t newversion)
815 {
816  particleBase().getAthenaBarCodeImpl().setVersion(newversion);
817 }
818 
819 // template< class INavigable_t, class I4Momentum_t, class IParticle_t>
820 // inline
821 // std::ostream&
822 // ParticleImpl<INavigable_t,
823 // I4Momentum_t,
824 // IParticle_t>::dump(std::ostream& out) const
825 // {
826 // return particleBase().getAthenaBarCodeImpl().dump(out);
827 // }
828 
830 // Finished Passing all interface of IAthenaBarCode
832 
833 // --------------------
834 // non-const interface
835 // --------------------
836 
837 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
838 inline
839 INavigable_t&
840 ParticleImpl<INavigable_t,
841  I4Momentum_t,
842  IParticle_t>::navigableBase()
843 {
844  return m_nav;
845 }
846 
847 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
848 inline
849 I4Momentum_t&
850 ParticleImpl<INavigable_t,
851  I4Momentum_t,
852  IParticle_t>::momentumBase()
853 {
854  return m_mom;
855 }
856 
857 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
858 inline
859 IParticle_t&
860 ParticleImpl<INavigable_t,
861  I4Momentum_t,
862  IParticle_t>::particleBase()
863 {
864  return m_part;
865 }
866 
867 
868 // setters
869 
870 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
871 inline
872 void
873 ParticleImpl<INavigable_t,
874  I4Momentum_t,
875  IParticle_t>::set4Mom( const I4Momentum& p4 )
876 {
877  return m_mom.set4Mom( p4 );
878 }
879 
880 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
881 inline
882 void
883 ParticleImpl<INavigable_t,
884  I4Momentum_t,
885  IParticle_t>::set4Mom( const I4Momentum * const p4 )
886 {
887  return m_mom.set4Mom( p4 );
888 }
889 
890 
891 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
892 inline
893 void
894 ParticleImpl<INavigable_t,
895  I4Momentum_t,
896  IParticle_t>::set4Mom( const CLHEP::HepLorentzVector& hlv )
897 {
898  return m_mom.set4Mom( hlv );
899 }
900 
901 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
902 inline
903 void
904 ParticleImpl<INavigable_t,
905  I4Momentum_t,
906  IParticle_t>::set_dataType( ParticleDataType::DataType x )
907 {
908  m_part.set_dataType(x);
909 }
910 
911 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
912 inline
913 void
914 ParticleImpl<INavigable_t,
915  I4Momentum_t,
916  IParticle_t>::set_charge( ChargeType x )
917 {
918  m_part.set_charge(x);
919 }
920 
921 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
922 inline
923 void
924 ParticleImpl<INavigable_t,
925  I4Momentum_t,
926  IParticle_t>::set_pdgId( int x )
927 {
928  m_part.set_pdgId(x);
929 }
930 
931 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
932 inline
933 void
934 ParticleImpl<INavigable_t,
935  I4Momentum_t,
936  IParticle_t>::set_origin( const VxContainer* theContainer,
937  int index )
938 {
939  m_part.set_origin(theContainer, index);
940 }
941 
942 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
943 inline
944 void
945 ParticleImpl<INavigable_t,
946  I4Momentum_t,
947  IParticle_t>::set_origin( const VxContainer* theContainer,
948  const Trk::VxCandidate * vertex )
949 {
950  m_part.set_origin(theContainer, vertex);
951 }
952 
953 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
954 inline
955 void
956 ParticleImpl<INavigable_t,
957  I4Momentum_t,
958  IParticle_t>::set_origin( const ElementLink<VxContainer>& origin )
959 {
960  m_part.set_origin(origin);
961 }
962 
963 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
964 std::ostream&
965 operator<< (std::ostream& out,
966  const ParticleImpl<INavigable_t,
967  I4Momentum_t,
968  IParticle_t>& p4);
969 
970 template< class INavigable_t, class I4Momentum_t, class IParticle_t>
971 inline
972 std::ostream&
973 operator<< (std::ostream& out,
974  const ParticleImpl<INavigable_t,
975  I4Momentum_t,
976  IParticle_t>& p4)
977 {
978  return p4.dump( out );
979 }
980 
981 #endif //> PARTICLEEVENT_PARTICLEIMPL_H
ParticleImpl::sinTh
virtual double sinTh() const
sinus theta
Definition: ParticleImpl.h:614
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
ParticleImpl::navigable_type
INavigable_t navigable_type
publish the type of the base class (ie: 'traits-itize' it)
Definition: ParticleImpl.h:48
I4Momentum
Definition: I4Momentum.h:31
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
ParticleImpl::pt
virtual double pt() const
transverse momentum
Definition: ParticleImpl.h:554
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
ParticleImpl::pdgId
virtual int pdgId() const
Return enum indicating particle id the enum file is available in Event/EventKernel/PdtPdg....
Definition: ParticleImpl.h:738
ParticleImpl::errors
virtual const I4MomentumError * errors() const
Access to errors, if available; returns 0 if no errors.
Definition: ParticleImpl.h:645
ParticleImpl::getVersion
AthenaBarCodeVersion_t getVersion() const
Definition: ParticleImpl.h:794
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
ParticleImpl::tanTh
virtual double tanTh() const
tan theta
Definition: ParticleImpl.h:594
ParticleImpl::fillToken
virtual void fillToken(INavigationToken &thisToken, const std::any &weight) const
Definition: ParticleImpl.h:423
ParticleImpl::origin
virtual const Trk::RecVertex * origin() const
Return a RecVertex corresponding to particle Origin
Definition: ParticleImpl.h:688
ParticleImpl::particleBase
particle_type & particleBase()
access to underlying base type (IParticle-like)
Definition: ParticleImpl.h:862
test_pyathena.pt
pt
Definition: test_pyathena.py:11
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
NavigableTerminalNode
Dummy type needed fro specialized implementation.
Definition: NavigableTerminalNode.h:19
ParticleImpl::setAthenaBarCode
void setAthenaBarCode(AthenaBarCode_t)
Definition: ParticleImpl.h:763
downloadSingle.dataType
string dataType
Definition: downloadSingle.py:18
ParticleImpl::~ParticleImpl
virtual ~ParticleImpl()
Default constructor:
Definition: ParticleImpl.h:375
ParticleImpl::cosPhi
virtual double cosPhi() const
cosinus phi
Definition: ParticleImpl.h:574
ParticleImpl::hasCharge
virtual bool hasCharge() const
method to check if charge information is available
Definition: ParticleImpl.h:708
IParticle.h
ParticleImpl::set_origin
virtual void set_origin(const VxContainer *theContainer, const Trk::VxCandidate *vertex)
Definition: ParticleImpl.h:947
ParticleImpl::momentumBase
momentum_type & momentumBase()
access to underlying base type (I4Momentum-like)
Definition: ParticleImpl.h:852
ParticleImpl::cotTh
virtual double cotTh() const
cottan theta
Definition: ParticleImpl.h:624
ParticleImpl::rapidity
virtual double rapidity() const
rapidity
Definition: ParticleImpl.h:504
x
#define x
ParticleDataType::DataType
DataType
Definition: Event/EventKernel/EventKernel/IParticle.h:36
ParticleImpl::momentum_type
I4Momentum_t momentum_type
publish the type of the base class (ie: 'traits-itize' it)
Definition: ParticleImpl.h:52
ParticleImpl::operator=
ParticleImpl & operator=(const ParticleImpl &rhs)
Assignment operator.
Definition: ParticleImpl.h:356
I4Momentum::Kind
Kind
Definition: I4Momentum.h:33
Trk::RecVertex
Trk::RecVertex inherits from Trk::Vertex.
Definition: RecVertex.h:44
ParticleImpl::setVersion
void setVersion(AthenaBarCodeVersion_t newversion)
Definition: ParticleImpl.h:814
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
ParticleImpl::e
virtual double e() const
energy
Definition: ParticleImpl.h:534
ParticleImpl::px
virtual double px() const
x component of momentum
Definition: ParticleImpl.h:434
ParticleImpl::m
virtual double m() const
mass
Definition: ParticleImpl.h:464
ParticleImpl::m_nav
INavigable_t m_nav
The navigable part.
Definition: ParticleImpl.h:307
ParticleImpl
Definition: ParticleImpl.h:39
ParticleImpl::set_origin
void set_origin(const ElementLink< VxContainer > &origin)
Definition: ParticleImpl.h:958
Base.h
ParticleImpl::p
virtual double p() const
mass momentum magnitude
Definition: ParticleImpl.h:484
AthenaBarCode_t
uint64_t AthenaBarCode_t
barcode for all INav4Mom classes
Definition: AthenaKernel/AthenaKernel/IAthenaBarCode.h:44
ParticleImpl::originLink
virtual const ElementLink< VxContainer > & originLink() const
Return an ElementLink corresponding to particle's Origin.
Definition: ParticleImpl.h:698
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ParticleImpl::charge
virtual ChargeType charge() const
returns charge as a typedef ChargeType currently Charge Type is a double for jets this may be changed...
Definition: ParticleImpl.h:718
ParticleImpl::set_pdgId
virtual void set_pdgId(int x)
Definition: ParticleImpl.h:926
ParticleImpl::m_part
IParticle_t m_part
The particle-id part.
Definition: ParticleImpl.h:313
ParticleEvent::Base
Definition: Base.h:34
I4MomentumError
Definition: I4MomentumError.h:28
ParticleImpl::dump
virtual std::ostream & dump(std::ostream &out) const
Print I4Momentum content.
Definition: ParticleImpl.h:665
ParticleImpl::set4Mom
virtual void set4Mom(const I4Momentum *const p4)
set 4Momentum (will throw exception if cannot be implemented)
Definition: ParticleImpl.h:885
ParticleImpl::getAthenaBarCode
AthenaBarCode_t getAthenaBarCode() const
Definition: ParticleImpl.h:753
ParticleImpl::self_type
ParticleImpl< INavigable_t, I4Momentum_t, IParticle_t > self_type
publish the type of the base class (ie: 'traits-itize' it)
Definition: ParticleImpl.h:62
ParticleImpl::set4Mom
virtual void set4Mom(const CLHEP::HepLorentzVector &hlv)
set 4Momentum (will throw exception if cannot be implemented)
Definition: ParticleImpl.h:896
Amg::pz
@ pz
Definition: GeoPrimitives.h:40
INavigationToken
Definition: INavigationToken.h:24
ParticleImpl::phi
virtual double phi() const
phi in [-pi,pi[
Definition: ParticleImpl.h:524
ParticleImpl::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: ParticleImpl.h:678
ParticleImpl::kind
virtual I4Momentum::Kind kind() const
add Kind which tells what kind (P4XYZ) the underlying implementation has
Definition: ParticleImpl.h:655
ParticleImpl::py
virtual double py() const
y component of momentum
Definition: ParticleImpl.h:444
ParticleImpl::hasSameAthenaBarCodeExceptVersion
bool hasSameAthenaBarCodeExceptVersion(const IAthenaBarCode &) const
Definition: ParticleImpl.h:784
INavigable
Definition: INavigable.h:18
ParticleImpl::eta
virtual double eta() const
pseudo rapidity
Definition: ParticleImpl.h:514
VxContainer
Definition: VxContainer.h:28
P4ImplPxPyPzE
Definition: P4ImplPxPyPzE.h:32
ParticleImpl::momentumBase
const momentum_type & momentumBase() const
access to underlying base type (I4Momentum-like)
Definition: ParticleImpl.h:393
IAthenaBarCode
Definition: AthenaKernel/AthenaKernel/IAthenaBarCode.h:48
ParticleImpl::hlv
virtual CLHEP::HepLorentzVector hlv() const
CLHEP HepLorentzVector.
Definition: ParticleImpl.h:635
mergePhysValFiles.errors
list errors
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:43
ParticleImpl::pz
virtual double pz() const
z component of momentum
Definition: ParticleImpl.h:454
Amg::py
@ py
Definition: GeoPrimitives.h:39
ParticleImpl::set_charge
virtual void set_charge(ChargeType x)
Definition: ParticleImpl.h:916
ParticleImpl::ParticleImpl
ParticleImpl()
Default constructor.
Definition: ParticleImpl.h:325
ParticleImpl::particle_type
IParticle_t particle_type
publish the type of the base class (ie: 'traits-itize' it)
Definition: ParticleImpl.h:56
ParticleImpl::particleBase
const particle_type & particleBase() const
access to underlying base type (IParticle-like)
Definition: ParticleImpl.h:403
ParticleImpl::navigableBase
const navigable_type & navigableBase() const
access to underlying base type (INavigable-like)
Definition: ParticleImpl.h:383
charge
double charge(const T &p)
Definition: AtlasPID.h:756
ParticleImpl::p2
virtual double p2() const
square of momentum magnitude
Definition: ParticleImpl.h:494
operator<<
std::ostream & operator<<(std::ostream &out, const ParticleImpl< INavigable_t, I4Momentum_t, IParticle_t > &p4)
Definition: ParticleImpl.h:973
ChargeType
double ChargeType
typedef ChargeType used to anticipate changes here
Definition: Event/EventKernel/EventKernel/IParticle.h:40
ParticleImpl::et
virtual double et() const
transverse energy defined to be e*sin(theta)
Definition: ParticleImpl.h:544
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
ParticleImpl::m2
virtual double m2() const
mass squared
Definition: ParticleImpl.h:474
ParticleImpl::sinPhi
virtual double sinPhi() const
sinus phi
Definition: ParticleImpl.h:584
ParticleImpl::set4Mom
virtual void set4Mom(const I4Momentum &p4)
set 4Momentum (will throw exception if cannot be implemented)
Definition: ParticleImpl.h:875
ParticleImpl::set_origin
virtual void set_origin(const VxContainer *theContainer, int index)
Definition: ParticleImpl.h:936
Trk::VxCandidate
Definition: VxCandidate.h:27
INavigable4Momentum
Definition: INavigable4Momentum.h:21
ParticleImpl::iPt
virtual double iPt() const
inverse of transverse momentum
Definition: ParticleImpl.h:564
ParticleImpl::fillToken
virtual void fillToken(INavigationToken &thisToken) const
Definition: ParticleImpl.h:413
AthenaBarCodeVersion_t
AthenaBarCode_t AthenaBarCodeVersion_t
Definition: AthenaKernel/AthenaKernel/IAthenaBarCode.h:46
ParticleImpl::hasSameAthenaBarCode
bool hasSameAthenaBarCode(const IAthenaBarCode &) const
Definition: ParticleImpl.h:774
ParticleImpl::set_dataType
virtual void set_dataType(ParticleDataType::DataType x)
Definition: ParticleImpl.h:906
ParticleImpl::m_mom
I4Momentum_t m_mom
The 4-momentum part.
Definition: ParticleImpl.h:310
ParticleImpl::navigableBase
navigable_type & navigableBase()
access to underlying base type (INavigable-like)
Definition: ParticleImpl.h:842
ParticleImpl::cosTh
virtual double cosTh() const
cosinus theta
Definition: ParticleImpl.h:604
ParticleImpl::ParticleImpl
ParticleImpl(const ParticleImpl &rhs)
Copy constructor.
Definition: ParticleImpl.h:340
IParticle
Definition: Event/EventKernel/EventKernel/IParticle.h:43
ParticleImpl::newVersion
void newVersion()
Definition: ParticleImpl.h:804
ParticleImpl::hasPdgId
virtual bool hasPdgId() const
method to check if particle id information is available
Definition: ParticleImpl.h:728