ATLAS Offline Software
Loading...
Searching...
No Matches
ParticleImpl.h
Go to the documentation of this file.
1
2
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
17
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
28
29// Navigation includes
31
32// ParticleEvent includes
34
35template< class INavigable_t,
36 class I4Momentum_t,
37 class IParticle_t = ParticleEvent::Base >
38class 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
76
80
83 virtual ~ParticleImpl();
84
86 // Const methods:
88
92
96
100
103 virtual
104 void fillToken( INavigationToken & thisToken ) const;
105 virtual
106 void fillToken( INavigationToken & thisToken,
107 const std::any& weight ) const;
108
113
116 //Comparing & Versioning Control
117 bool hasSameAthenaBarCode(const IAthenaBarCode &/*obj*/) const;
122 // std::ostream& dump(std::ostream& out) const;
123
126
129
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
225
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
261
263 // 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
321template< class INavigable_t, class I4Momentum_t, class IParticle_t>
322inline
323ParticleImpl<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
336template< class INavigable_t, class I4Momentum_t, class IParticle_t>
337inline
338ParticleImpl<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
351template< class INavigable_t, class I4Momentum_t, class IParticle_t>
352inline
354ParticleImpl<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
371template< class INavigable_t, class I4Momentum_t, class IParticle_t>
372//inline
373ParticleImpl<INavigable_t,
374 I4Momentum_t,
375 IParticle_t>::~ParticleImpl()
376{}
377
378template< class INavigable_t, class I4Momentum_t, class IParticle_t>
379inline
380const INavigable_t&
381ParticleImpl<INavigable_t,
382 I4Momentum_t,
383 IParticle_t>::navigableBase() const
384{
385 return m_nav;
386}
387
388template< class INavigable_t, class I4Momentum_t, class IParticle_t>
389inline
390const I4Momentum_t&
391ParticleImpl<INavigable_t,
392 I4Momentum_t,
393 IParticle_t>::momentumBase() const
394{
395 return m_mom;
396}
397
398template< class INavigable_t, class I4Momentum_t, class IParticle_t>
399inline
400const IParticle_t&
401ParticleImpl<INavigable_t,
402 I4Momentum_t,
403 IParticle_t>::particleBase() const
404{
405 return m_part;
406}
407
408template< class INavigable_t, class I4Momentum_t, class IParticle_t>
409inline
410void
411ParticleImpl<INavigable_t,
412 I4Momentum_t,
413 IParticle_t>::fillToken( INavigationToken& thisToken ) const
414{
415 m_nav.fillToken( thisToken );
416}
417
418template< class INavigable_t, class I4Momentum_t, class IParticle_t>
419inline
420void
421ParticleImpl<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
429template< class INavigable_t, class I4Momentum_t, class IParticle_t>
430inline
431double
432ParticleImpl<INavigable_t,
433 I4Momentum_t,
434 IParticle_t>::px() const
435{
436 return m_mom.px();
437}
438
439template< class INavigable_t, class I4Momentum_t, class IParticle_t>
440inline
441double
442ParticleImpl<INavigable_t,
443 I4Momentum_t,
444 IParticle_t>::py() const
445{
446 return m_mom.py();
447}
448
449template< class INavigable_t, class I4Momentum_t, class IParticle_t>
450inline
451double
452ParticleImpl<INavigable_t,
453 I4Momentum_t,
454 IParticle_t>::pz() const
455{
456 return m_mom.pz();
457}
458
459template< class INavigable_t, class I4Momentum_t, class IParticle_t>
460inline
461double
462ParticleImpl<INavigable_t,
463 I4Momentum_t,
464 IParticle_t>::m() const
465{
466 return m_mom.m();
467}
468
469template< class INavigable_t, class I4Momentum_t, class IParticle_t>
470inline
471double
472ParticleImpl<INavigable_t,
473 I4Momentum_t,
474 IParticle_t>::m2() const
475{
476 return m_mom.m2();
477}
478
479template< class INavigable_t, class I4Momentum_t, class IParticle_t>
480inline
481double
482ParticleImpl<INavigable_t,
483 I4Momentum_t,
484 IParticle_t>::p() const
485{
486 return m_mom.p();
487}
488
489template< class INavigable_t, class I4Momentum_t, class IParticle_t>
490inline
491double
492ParticleImpl<INavigable_t,
493 I4Momentum_t,
494 IParticle_t>::p2() const
495{
496 return m_mom.p2();
497}
498
499template< class INavigable_t, class I4Momentum_t, class IParticle_t>
500inline
501double
502ParticleImpl<INavigable_t,
503 I4Momentum_t,
504 IParticle_t>::rapidity() const
505{
506 return m_mom.rapidity();
507}
508
509template< class INavigable_t, class I4Momentum_t, class IParticle_t>
510inline
511double
512ParticleImpl<INavigable_t,
513 I4Momentum_t,
514 IParticle_t>::eta() const
515{
516 return m_mom.eta();
517}
518
519template< class INavigable_t, class I4Momentum_t, class IParticle_t>
520inline
521double
522ParticleImpl<INavigable_t,
523 I4Momentum_t,
524 IParticle_t>::phi() const
525{
526 return m_mom.phi();
527}
528
529template< class INavigable_t, class I4Momentum_t, class IParticle_t>
530inline
531double
532ParticleImpl<INavigable_t,
533 I4Momentum_t,
534 IParticle_t>::e() const
535{
536 return m_mom.e();
537}
538
539template< class INavigable_t, class I4Momentum_t, class IParticle_t>
540inline
541double
542ParticleImpl<INavigable_t,
543 I4Momentum_t,
544 IParticle_t>::et() const
545{
546 return m_mom.et();
547}
548
549template< class INavigable_t, class I4Momentum_t, class IParticle_t>
550inline
551double
552ParticleImpl<INavigable_t,
553 I4Momentum_t,
554 IParticle_t>::pt() const
555{
556 return m_mom.pt();
557}
558
559template< class INavigable_t, class I4Momentum_t, class IParticle_t>
560inline
561double
562ParticleImpl<INavigable_t,
563 I4Momentum_t,
564 IParticle_t>::iPt() const
565{
566 return m_mom.iPt();
567}
568
569template< class INavigable_t, class I4Momentum_t, class IParticle_t>
570inline
571double
572ParticleImpl<INavigable_t,
573 I4Momentum_t,
574 IParticle_t>::cosPhi() const
575{
576 return m_mom.cosPhi();
577}
578
579template< class INavigable_t, class I4Momentum_t, class IParticle_t>
580inline
581double
582ParticleImpl<INavigable_t,
583 I4Momentum_t,
584 IParticle_t>::sinPhi() const
585{
586 return m_mom.sinPhi();
587}
588
589template< class INavigable_t, class I4Momentum_t, class IParticle_t>
590inline
591double
592ParticleImpl<INavigable_t,
593 I4Momentum_t,
594 IParticle_t>::tanTh() const
595{
596 return m_mom.tanTh();
597}
598
599template< class INavigable_t, class I4Momentum_t, class IParticle_t>
600inline
601double
602ParticleImpl<INavigable_t,
603 I4Momentum_t,
604 IParticle_t>::cosTh() const
605{
606 return m_mom.cosTh();
607}
608
609template< class INavigable_t, class I4Momentum_t, class IParticle_t>
610inline
611double
612ParticleImpl<INavigable_t,
613 I4Momentum_t,
614 IParticle_t>::sinTh() const
615{
616 return m_mom.sinTh();
617}
618
619template< class INavigable_t, class I4Momentum_t, class IParticle_t>
620inline
621double
622ParticleImpl<INavigable_t,
623 I4Momentum_t,
624 IParticle_t>::cotTh() const
625{
626 return m_mom.cotTh();
627}
628
629
630template< class INavigable_t, class I4Momentum_t, class IParticle_t>
631inline
632CLHEP::HepLorentzVector
633ParticleImpl<INavigable_t,
634 I4Momentum_t,
635 IParticle_t>::hlv() const
636{
637 return m_mom.hlv();
638}
639
640template< class INavigable_t, class I4Momentum_t, class IParticle_t>
641inline
642const I4MomentumError*
643ParticleImpl<INavigable_t,
644 I4Momentum_t,
645 IParticle_t>::errors() const
646{
647 return m_mom.errors();
648}
649
650template< class INavigable_t, class I4Momentum_t, class IParticle_t>
651inline
653ParticleImpl<INavigable_t,
654 I4Momentum_t,
655 IParticle_t>::kind() const
656{
657 return m_mom.kind();
658}
659
660template< class INavigable_t, class I4Momentum_t, class IParticle_t>
661inline
662std::ostream&
663ParticleImpl<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
673template< class INavigable_t, class I4Momentum_t, class IParticle_t>
674inline
676ParticleImpl<INavigable_t,
677 I4Momentum_t,
678 IParticle_t>::dataType() const
679{
680 return m_part.dataType();
681}
682
683template< class INavigable_t, class I4Momentum_t, class IParticle_t>
684inline
685const Trk::RecVertex*
686ParticleImpl<INavigable_t,
687 I4Momentum_t,
688 IParticle_t>::origin() const
689{
690 return m_part.origin();
691}
692
693template< class INavigable_t, class I4Momentum_t, class IParticle_t>
694inline
696ParticleImpl<INavigable_t,
697 I4Momentum_t,
698 IParticle_t>::originLink() const
699{
700 return m_part.originLink();
701}
702
703template< class INavigable_t, class I4Momentum_t, class IParticle_t>
704inline
705bool
706ParticleImpl<INavigable_t,
707 I4Momentum_t,
708 IParticle_t>::hasCharge() const
709{
710 return m_part.hasCharge();
711}
712
713template< class INavigable_t, class I4Momentum_t, class IParticle_t>
714inline
716ParticleImpl<INavigable_t,
717 I4Momentum_t,
718 IParticle_t>::charge() const
719{
720 return m_part.charge();
721}
722
723template< class INavigable_t, class I4Momentum_t, class IParticle_t>
724inline
725bool
726ParticleImpl<INavigable_t,
727 I4Momentum_t,
728 IParticle_t>::hasPdgId() const
729{
730 return m_part.hasPdgId();
731}
732
733template< class INavigable_t, class I4Momentum_t, class IParticle_t>
734inline
735int
736ParticleImpl<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
748template< class INavigable_t, class I4Momentum_t, class IParticle_t>
749inline
751ParticleImpl<INavigable_t,
752 I4Momentum_t,
753 IParticle_t>::getAthenaBarCode() const
754{
755 return particleBase().getAthenaBarCodeImpl().getAthenaBarCode();
756}
757
758template< class INavigable_t, class I4Momentum_t, class IParticle_t>
759inline
760void
761ParticleImpl<INavigable_t,
762 I4Momentum_t,
764{
765 particleBase().getAthenaBarCodeImpl().setAthenaBarCode(id);
766}
767
768//Comparing & Versioning Control
769template< class INavigable_t, class I4Momentum_t, class IParticle_t>
770inline
771bool
772ParticleImpl<INavigable_t,
773 I4Momentum_t,
774 IParticle_t>::hasSameAthenaBarCode(const IAthenaBarCode &bc) const
775{
776 return particleBase().getAthenaBarCodeImpl().hasSameAthenaBarCode(bc);
777}
778
779template< class INavigable_t, class I4Momentum_t, class IParticle_t>
780inline
781bool
782ParticleImpl<INavigable_t,
783 I4Momentum_t,
785{
786 return particleBase().getAthenaBarCodeImpl().hasSameAthenaBarCodeExceptVersion(bc);
787}
788
789template< class INavigable_t, class I4Momentum_t, class IParticle_t>
790inline
792ParticleImpl<INavigable_t,
793 I4Momentum_t,
794 IParticle_t>::getVersion() const
795{
796 return particleBase().getAthenaBarCodeImpl().getVersion();
797}
798
799template< class INavigable_t, class I4Momentum_t, class IParticle_t>
800inline
801void
802ParticleImpl<INavigable_t,
803 I4Momentum_t,
804 IParticle_t>::newVersion()
805{
806 particleBase().getAthenaBarCodeImpl().newVersion();
807}
808
809template< class INavigable_t, class I4Momentum_t, class IParticle_t>
810inline
811void
812ParticleImpl<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
837template< class INavigable_t, class I4Momentum_t, class IParticle_t>
838inline
839INavigable_t&
840ParticleImpl<INavigable_t,
841 I4Momentum_t,
842 IParticle_t>::navigableBase()
843{
844 return m_nav;
845}
846
847template< class INavigable_t, class I4Momentum_t, class IParticle_t>
848inline
849I4Momentum_t&
850ParticleImpl<INavigable_t,
851 I4Momentum_t,
852 IParticle_t>::momentumBase()
853{
854 return m_mom;
855}
856
857template< class INavigable_t, class I4Momentum_t, class IParticle_t>
858inline
859IParticle_t&
860ParticleImpl<INavigable_t,
861 I4Momentum_t,
862 IParticle_t>::particleBase()
863{
864 return m_part;
865}
866
867
868// setters
869
870template< class INavigable_t, class I4Momentum_t, class IParticle_t>
871inline
872void
873ParticleImpl<INavigable_t,
874 I4Momentum_t,
875 IParticle_t>::set4Mom( const I4Momentum& p4 )
876{
877 return m_mom.set4Mom( p4 );
878}
879
880template< class INavigable_t, class I4Momentum_t, class IParticle_t>
881inline
882void
883ParticleImpl<INavigable_t,
884 I4Momentum_t,
885 IParticle_t>::set4Mom( const I4Momentum * const p4 )
886{
887 return m_mom.set4Mom( p4 );
888}
889
890
891template< class INavigable_t, class I4Momentum_t, class IParticle_t>
892inline
893void
894ParticleImpl<INavigable_t,
895 I4Momentum_t,
896 IParticle_t>::set4Mom( const CLHEP::HepLorentzVector& hlv )
897{
898 return m_mom.set4Mom( hlv );
899}
900
901template< class INavigable_t, class I4Momentum_t, class IParticle_t>
902inline
903void
904ParticleImpl<INavigable_t,
905 I4Momentum_t,
907{
908 m_part.set_dataType(x);
909}
910
911template< class INavigable_t, class I4Momentum_t, class IParticle_t>
912inline
913void
914ParticleImpl<INavigable_t,
915 I4Momentum_t,
916 IParticle_t>::set_charge( ChargeType x )
917{
918 m_part.set_charge(x);
919}
920
921template< class INavigable_t, class I4Momentum_t, class IParticle_t>
922inline
923void
924ParticleImpl<INavigable_t,
925 I4Momentum_t,
926 IParticle_t>::set_pdgId( int x )
927{
928 m_part.set_pdgId(x);
929}
930
931template< class INavigable_t, class I4Momentum_t, class IParticle_t>
932inline
933void
934ParticleImpl<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
942template< class INavigable_t, class I4Momentum_t, class IParticle_t>
943inline
944void
945ParticleImpl<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
953template< class INavigable_t, class I4Momentum_t, class IParticle_t>
954inline
955void
956ParticleImpl<INavigable_t,
957 I4Momentum_t,
959{
960 m_part.set_origin(origin);
961}
962
963template< class INavigable_t, class I4Momentum_t, class IParticle_t>
964std::ostream&
965operator<< (std::ostream& out,
966 const ParticleImpl<INavigable_t,
967 I4Momentum_t,
968 IParticle_t>& p4);
969
970template< class INavigable_t, class I4Momentum_t, class IParticle_t>
971inline
972std::ostream&
973operator<< (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
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
uint64_t AthenaBarCode_t
barcode for all INav4Mom classes
AthenaBarCode_t AthenaBarCodeVersion_t
double charge(const T &p)
Definition AtlasPID.h:997
double ChargeType
typedef ChargeType used to anticipate changes here
float et(const xAOD::jFexSRJetRoI *j)
std::ostream & operator<<(std::ostream &out, const ParticleImpl< INavigable_t, I4Momentum_t, IParticle_t > &p4)
#define x
I4Momentum is an abstract base class providing 4-momentum behavior.
Definition I4Momentum.h:31
hub for various interface implementations
virtual double cosPhi() const
cosinus phi
ParticleImpl()
Default constructor.
ParticleImpl< CompositeParticleNavigation, P4ImplPxPyPzE, ParticleEvent::Base > self_type
virtual void set_origin(const VxContainer *theContainer, int index)
const navigable_type & navigableBase() const
access to underlying base type (INavigable-like)
virtual double m() const
mass
virtual void fillToken(INavigationToken &thisToken, const std::any &weight) const
void set_origin(const ElementLink< VxContainer > &origin)
virtual double pz() const
z component of momentum
momentum_type & momentumBase()
access to underlying base type (I4Momentum-like)
virtual double cotTh() const
cottan theta
virtual int pdgId() const
Return enum indicating particle id the enum file is available in Event/EventKernel/PdtPdg....
const momentum_type & momentumBase() const
access to underlying base type (I4Momentum-like)
virtual double sinPhi() const
sinus phi
virtual bool hasPdgId() const
method to check if particle id information is available
virtual void set_origin(const VxContainer *theContainer, const Trk::VxCandidate *vertex)
void newVersion()
virtual double m2() const
mass squared
virtual double rapidity() const
rapidity
virtual double sinTh() const
sinus theta
virtual const ElementLink< VxContainer > & originLink() const
Return an ElementLink corresponding to particle's Origin.
particle_type & particleBase()
access to underlying base type (IParticle-like)
void setAthenaBarCode(AthenaBarCode_t)
virtual CLHEP::HepLorentzVector hlv() const
CLHEP HepLorentzVector.
virtual double iPt() const
inverse of transverse momentum
virtual void set4Mom(const I4Momentum &p4)
set 4Momentum (will throw exception if cannot be implemented)
virtual const Trk::RecVertex * origin() const
Return a RecVertex corresponding to particle Origin.
virtual double cosTh() const
cosinus theta
virtual double p2() const
square of momentum magnitude
virtual void set_charge(ChargeType x)
virtual double tanTh() const
tan theta
virtual ~ParticleImpl()
Default constructor:
virtual ParticleDataType::DataType dataType() const
Return enum indicating real data, fast, or full simulation Return Type has a DataType enum with the f...
virtual double e() const
energy
ParticleImpl & operator=(const ParticleImpl &rhs)
Assignment operator.
virtual void set_dataType(ParticleDataType::DataType x)
virtual void fillToken(INavigationToken &thisToken) const
void setVersion(AthenaBarCodeVersion_t newversion)
virtual void set4Mom(const CLHEP::HepLorentzVector &hlv)
set 4Momentum (will throw exception if cannot be implemented)
virtual double pt() const
transverse momentum
ParticleImpl(const ParticleImpl &rhs)
Copy constructor.
virtual I4Momentum::Kind kind() const
add Kind which tells what kind (P4XYZ) the underlying implementation has
virtual double p() const
mass momentum magnitude
bool hasSameAthenaBarCodeExceptVersion(const IAthenaBarCode &) const
virtual double phi() const
phi in [-pi,pi[
navigable_type & navigableBase()
access to underlying base type (INavigable-like)
virtual void set_pdgId(int x)
virtual double px() const
x component of momentum
const particle_type & particleBase() const
access to underlying base type (IParticle-like)
virtual bool hasCharge() const
method to check if charge information is available
virtual double eta() const
pseudo rapidity
virtual const I4MomentumError * errors() const
Access to errors, if available; returns 0 if no errors.
virtual void set4Mom(const I4Momentum *const p4)
set 4Momentum (will throw exception if cannot be implemented)
virtual double et() const
transverse energy defined to be e*sin(theta)
AthenaBarCodeVersion_t getVersion() const
bool hasSameAthenaBarCode(const IAthenaBarCode &) const
virtual ChargeType charge() const
returns charge as a typedef ChargeType currently Charge Type is a double for jets this may be changed...
virtual std::ostream & dump(std::ostream &out) const
Print I4Momentum content.
virtual double py() const
y component of momentum
AthenaBarCode_t getAthenaBarCode() const
Trk::RecVertex inherits from Trk::Vertex.
Definition RecVertex.h:44
Definition index.py:1