rivet is hosted by Hepforge, IPPP Durham
ParticleIdUtils.hh
Go to the documentation of this file.
00001 // ----------------------------------------------------------------------
00002 //
00003 // ParticleIDMethods.hh
00004 // Author:  Lynn Garren, Andy Buckley
00005 //
00006 //  various utilities to extract information from the particle ID
00007 //
00008 //  In the standard numbering scheme, the PID digits (base 10) are:
00009 //            +/- n nr nl nq1 nq2 nq3 nj
00010 //  It is expected that any 7 digit number used as a PID will adhere to
00011 //  the Monte Carlo numbering scheme documented by the PDG.
00012 //  Note that many "new" particles not explicitly defined already
00013 //  can be expressed within this numbering scheme.
00014 //
00015 //  These are the same methods that can be found in HepPDT::ParticleID
00016 // ----------------------------------------------------------------------
00017 #ifndef RIVET_PARTICLE_ID_UTILS_HH
00018 #define RIVET_PARTICLE_ID_UTILS_HH
00019 
00020 namespace Rivet {
00021 
00022   namespace PID {
00023 
00024 
00025     /// @name PID operations on Rivet::Particle wrapper
00026     //@{
00027 
00028     // /// if this is a nucleus (ion), get A
00029     // /// Ion numbers are +/- 10LZZZAAAI.
00030     // int A(const int & pid );
00031 
00032     // /// if this is a nucleus (ion), get Z
00033     // /// Ion numbers are +/- 10LZZZAAAI.
00034     // int Z(const int & pid );
00035 
00036     // /// if this is a nucleus (ion), get nLambda
00037     // /// Ion numbers are +/- 10LZZZAAAI.
00038     // int lambda( const int & pid );
00039 
00040     /// Absolute value of particle ID
00041     int abspid( const int & pid );
00042 
00043     /// Is this a valid ID?
00044     bool isValid( const int & pid );
00045     /// Is this a valid meson ID?
00046     bool isMeson( const int & pid );
00047     /// Is this a valid baryon ID?
00048     bool isBaryon( const int & pid );
00049     /// Is this a valid diquark ID?
00050     bool isDiQuark( const int & pid );
00051     /// Is this a valid hadron ID?
00052     bool isHadron( const int & pid );
00053     /// Is this a valid lepton ID?
00054     bool isLepton( const int & pid );
00055     /// Is this a valid ion ID?
00056     bool isNucleus( const int & pid );
00057     /// Is this a valid pentaquark ID?
00058     bool isPentaquark( const int & pid );
00059     /// Is this a valid SUSY ID?
00060     bool isSUSY( const int & pid );
00061     /// Is this a valid R-hadron ID?
00062     bool isRhadron( const int & pid );
00063 
00064     /// Does this particle contain an up quark?
00065     bool hasUp( const int & pid );
00066     /// Does this particle contain a down quark?
00067     bool hasDown( const int & pid );
00068     /// Does this particle contain a strange quark?
00069     bool hasStrange( const int & pid );
00070     /// Does this particle contain a charm quark?
00071     bool hasCharm( const int & pid );
00072     /// Does this particle contain a bottom quark?
00073     bool hasBottom( const int & pid );
00074     /// Does this particle contain a top quark?
00075     bool hasTop( const int & pid );
00076 
00077     /// jSpin returns 2J+1, where J is the total spin
00078     int jSpin( const int & pid );
00079     /// sSpin returns 2S+1, where S is the spin
00080     int sSpin( const int & pid );
00081     /// lSpin returns 2L+1, where L is the orbital angular momentum
00082     int lSpin( const int & pid );
00083 
00084     /// Return 3 times the charge (3 x quark charge is an int)
00085     int threeCharge( const int & pid );
00086     /// Return the charge
00087     inline double charge( const int & pid ) { return threeCharge(pid)/3.0; }
00088 
00089     //@}
00090 
00091 
00092   }
00093 
00094 }
00095 
00096 #endif