ROOT logo
// @(#)root/mathcore:$Id: PtEtaPhiM4D.h 30568 2009-10-06 07:17:59Z moneta $
// Authors: W. Brown, M. Fischler, L. Moneta    2005  

/**********************************************************************
*                                                                    *
* Copyright (c) 2005 , LCG ROOT FNAL MathLib Team                    *
*                                                                    *
*                                                                    *
**********************************************************************/

// Header file for class PtEtaPhiM4D
// 
// Created by: fischler at Wed Jul 21 2005
//   Similar to PtEtaPhiMSystem by moneta
// 
// Last update: $Id: PtEtaPhiM4D.h 30568 2009-10-06 07:17:59Z moneta $
// 
#ifndef ROOT_Math_GenVector_PtEtaPhiM4D 
#define ROOT_Math_GenVector_PtEtaPhiM4D  1

#ifndef ROOT_Math_Math
#include "Math/Math.h"
#endif

#ifndef ROOT_Math_GenVector_etaMax
#include "Math/GenVector/etaMax.h"
#endif

#ifndef ROOT_Math_GenVector_GenVector_exception 
#include "Math/GenVector/GenVector_exception.h"
#endif


//#define TRACE_CE
#ifdef TRACE_CE
#include <iostream>
#endif

namespace ROOT {   

namespace Math { 
       
//__________________________________________________________________________________________
/** 
    Class describing a 4D cylindrical coordinate system
    using Pt , Phi, Eta and M (mass)  
    The metric used is (-,-,-,+). 
    Spacelike particles (M2 < 0) are described with negative mass values, 
    but in this case m2 must alwasy be less than P2 to preserve a positive value of E2
    Phi is restricted to be in the range [-PI,PI)

    @ingroup GenVector
*/ 

template <class ScalarType> 
class PtEtaPhiM4D { 

public : 

   typedef ScalarType Scalar;

   // --------- Constructors ---------------

   /**
      Default constructor gives zero 4-vector (with zero mass)  
   */
   PtEtaPhiM4D() : fPt(0), fEta(0), fPhi(0), fM(0) { }

   /**
      Constructor  from pt, eta, phi, mass values
   */
   PtEtaPhiM4D(Scalar pt, Scalar eta, Scalar phi, Scalar mass) : 
      fPt(pt), fEta(eta), fPhi(phi), fM(mass) { 
      RestrictPhi(); 
      if (fM < 0) RestrictNegMass();
   }

   /**
      Generic constructor from any 4D coordinate system implementing 
      Pt(), Eta(), Phi() and M()  
   */ 
   template <class CoordSystem > 
   explicit PtEtaPhiM4D(const CoordSystem & c) : 
      fPt(c.Pt()), fEta(c.Eta()), fPhi(c.Phi()), fM(c.M())  { RestrictPhi(); } 

   // for g++  3.2 and 3.4 on 32 bits found that the compiler generated copy ctor and assignment are much slower 
   // so we decided to re-implement them ( there is no no need to have them with g++4)

   /**
      copy constructor
    */
   PtEtaPhiM4D(const PtEtaPhiM4D & v) : 
      fPt(v.fPt), fEta(v.fEta), fPhi(v.fPhi), fM(v.fM) { }
      
   /**
      assignment operator 
    */
   PtEtaPhiM4D & operator = (const PtEtaPhiM4D & v) { 
      fPt  = v.fPt;  
      fEta = v.fEta;  
      fPhi = v.fPhi;  
      fM   = v.fM;
      return *this;
   }


   /**
      Set internal data based on an array of 4 Scalar numbers
   */ 
   void SetCoordinates( const Scalar src[] ) { 
      fPt=src[0]; fEta=src[1]; fPhi=src[2]; fM=src[3]; 
      RestrictPhi(); 
      if (fM <0) RestrictNegMass(); 
   }

   /**
      get internal data into an array of 4 Scalar numbers
   */ 
   void GetCoordinates( Scalar dest[] ) const 
   { dest[0] = fPt; dest[1] = fEta; dest[2] = fPhi; dest[3] = fM; }

   /**
      Set internal data based on 4 Scalar numbers
   */ 
   void SetCoordinates(Scalar pt, Scalar eta, Scalar phi, Scalar mass) { 
      fPt=pt; fEta = eta; fPhi = phi; fM = mass; 
      RestrictPhi(); 
      if (fM <0) RestrictNegMass(); 
   }

   /**
      get internal data into 4 Scalar numbers
   */ 
   void 
   GetCoordinates(Scalar& pt, Scalar & eta, Scalar & phi, Scalar& mass) const 
   { pt=fPt; eta=fEta; phi = fPhi; mass = fM; }

   // --------- Coordinates and Coordinate-like Scalar properties -------------

   // 4-D Cylindrical eta coordinate accessors  

   Scalar Pt()  const { return fPt;  }
   Scalar Eta() const { return fEta; }
   Scalar Phi() const { return fPhi; }
   /** 
       M() is the invariant mass; 
       in this coordinate system it can be negagative if set that way. 
   */
   Scalar M()   const { return fM;   }
   Scalar Mag() const    { return M(); }

   Scalar Perp()const { return Pt(); }
   Scalar Rho() const { return Pt(); }
  
   // other coordinate representation

   Scalar Px() const { return fPt*cos(fPhi);}
   Scalar X () const { return Px();         }
   Scalar Py() const { return fPt*sin(fPhi);}
   Scalar Y () const { return Py();         }
   Scalar Pz() const {
      return fPt >   0 ? fPt*std::sinh(fEta)     : 
         fEta == 0 ? 0                       :
         fEta >  0 ? fEta - etaMax<Scalar>() :
         fEta + etaMax<Scalar>() ; 
   }
   Scalar Z () const { return Pz(); }

   /** 
       magnitude of momentum
   */
   Scalar P() const { 
      return  fPt  > 0                 ?  fPt*std::cosh(fEta)       :
         fEta >  etaMax<Scalar>() ?  fEta - etaMax<Scalar>()   :
         fEta < -etaMax<Scalar>() ? -fEta - etaMax<Scalar>()   :
         0                         ; 
   }
   Scalar R() const { return P(); }

   /** 
       squared magnitude of spatial components (momentum squared)
   */
   Scalar P2() const { Scalar p = P(); return p*p; }

   /** 
       energy squared  
   */
   Scalar E2() const { 
      Scalar e2 =  P2() + M2(); 
      // avoid rounding error which can make E2 negative when M2 is negative 
      return e2 > 0 ? e2 : 0; 
   }

   /** 
       Energy (timelike component of momentum-energy 4-vector)
   */
   Scalar E()   const { return std::sqrt(E2() ); }
  
   Scalar T()   const { return E();  }

   /**
      vector magnitude squared (or mass squared)
      In case of negative mass (spacelike particles return negative values)
   */
   Scalar M2() const   { 
      return ( fM  >= 0 ) ?  fM*fM :  -fM*fM; 
   }
   Scalar Mag2() const { return M2();  } 

   /** 
       transverse spatial component squared  
   */
   Scalar Pt2()   const { return fPt*fPt;}
   Scalar Perp2() const { return Pt2();  }

   /** 
       transverse mass squared
   */
   Scalar Mt2() const { return M2()  + fPt*fPt; } 

   /**
      transverse mass - will be negative if Mt2() is negative
   */
   Scalar Mt() const { 
      Scalar mm = Mt2();
      if (mm >= 0) {
         return std::sqrt(mm);
      } else {
         GenVector::Throw  ("PtEtaPhiM4D::Mt() - Tachyonic:\n"
                            "    Pz^2 > E^2 so the transverse mass would be imaginary");
         return -std::sqrt(-mm);
      }
   } 

   /** 
       transverse energy squared
   */
   Scalar Et2() const { 
      // a bit faster than et * et
      return 2. * E2()/ ( std::cosh(2 * fEta) + 1 );   
   }

   /**
      transverse energy
   */
   Scalar Et() const { 
      return E() / std::cosh(fEta); 
   }

private:
   inline static Scalar pi() { return M_PI; } 
   inline void RestrictPhi() {
      if ( fPhi <= -pi() || fPhi > pi() ) 
         fPhi = fPhi - std::floor( fPhi/(2*pi()) +.5 ) * 2*pi();
      return;
   } 
   // restrict the value of negative mass to avoid unphysical negative E2 values 
   // M2 must be less than P2 for the tachionic particles - otherwise use positive values
   inline void RestrictNegMass() {
      if ( fM >=0 ) return;
      if ( P2() - fM*fM  < 0 ) { 
         GenVector::Throw ("PtEtaPhiM4D::unphysical value of mass, set to closest physical value");
         fM = - P();
      }
      return;
   } 

public:

   /**
      polar angle
   */
   Scalar Theta() const {
      if (fPt  >  0) return 2* std::atan( exp( - fEta ) );
      if (fEta >= 0) return 0;
      return pi();
   }

   // --------- Set Coordinates of this system  ---------------

   /**
      set Pt value 
   */
   void SetPt( Scalar  pt) { 
      fPt = pt; 
   }
   /**
      set eta value 
   */
   void SetEta( Scalar  eta) { 
      fEta = eta; 
   }
   /**
      set phi value 
   */
   void SetPhi( Scalar  phi) { 
      fPhi = phi; 
      RestrictPhi();
   }
   /**
      set M value 
   */
   void SetM( Scalar  mass) { 
      fM = mass; 
      if (fM <0) RestrictNegMass(); 
   }

   /** 
       set values using cartesian coordinate system  
   */
   void SetPxPyPzE(Scalar px, Scalar py, Scalar pz, Scalar e);


   // ------ Manipulations -------------

   /**
      negate the 4-vector -- Note that the energy cannot be negate (would need an additional data member)
      therefore negate will work only on the spatial components
      One would need to use negate only with vectors having the energy as data members 
   */
   void Negate( ) {
      fPhi = ( (fPhi > 0) ? fPhi - pi() : fPhi + pi()  );
      fEta = - fEta; 
      GenVector::Throw ("PtEtaPhiM4D::Negate - cannot negate the energy - can negate only the spatial components");
   }

   /**
      Scale coordinate values by a scalar quantity a
   */
   void Scale( Scalar a) { 
      if (a < 0) {
         Negate(); a = -a;
      }
      fPt *= a; 
      fM  *= a; 
   }

   /**
      Assignment from a generic coordinate system implementing 
      Pt(), Eta(), Phi() and M()  
   */ 
   template <class CoordSystem > 
   PtEtaPhiM4D & operator = (const CoordSystem & c) { 
      fPt  = c.Pt(); 
      fEta = c.Eta();
      fPhi = c.Phi(); 
      fM   = c.M(); 
      return *this;
   }

   /**
      Exact equality
   */  
   bool operator == (const PtEtaPhiM4D & rhs) const {
      return fPt == rhs.fPt && fEta == rhs.fEta 
         && fPhi == rhs.fPhi && fM == rhs.fM;
   }
   bool operator != (const PtEtaPhiM4D & rhs) const {return !(operator==(rhs));}

   // ============= Compatibility secition ==================

   // The following make this coordinate system look enough like a CLHEP
   // vector that an assignment member template can work with either
   Scalar x() const { return X(); }
   Scalar y() const { return Y(); }
   Scalar z() const { return Z(); } 
   Scalar t() const { return E(); } 


#if defined(__MAKECINT__) || defined(G__DICTIONARY) 

   // ====== Set member functions for coordinates in other systems =======

   void SetPx(Scalar px);  

   void SetPy(Scalar py);

   void SetPz(Scalar pz);  

   void SetE(Scalar t);  

#endif

private:

   ScalarType fPt;
   ScalarType fEta;
   ScalarType fPhi;
   ScalarType fM; 

};    
    
    
} // end namespace Math  
} // end namespace ROOT


// move implementations here to avoid circle dependencies

#include "Math/GenVector/PxPyPzE4D.h"




namespace ROOT { 

namespace Math { 


template <class ScalarType>  
inline void PtEtaPhiM4D<ScalarType>::SetPxPyPzE(Scalar px, Scalar py, Scalar pz, Scalar e) {  
   *this = PxPyPzE4D<Scalar> (px, py, pz, e);
}


#if defined(__MAKECINT__) || defined(G__DICTIONARY) 
     
  // ====== Set member functions for coordinates in other systems =======

template <class ScalarType>  
void PtEtaPhiM4D<ScalarType>::SetPx(Scalar px) {  
   GenVector_exception e("PtEtaPhiM4D::SetPx() is not supposed to be called");
   throw e;
   PxPyPzE4D<Scalar> v(*this); v.SetPx(px); *this = PtEtaPhiM4D<Scalar>(v);
}
template <class ScalarType>  
void PtEtaPhiM4D<ScalarType>::SetPy(Scalar py) {  
   GenVector_exception e("PtEtaPhiM4D::SetPx() is not supposed to be called");
   throw e;
   PxPyPzE4D<Scalar> v(*this); v.SetPy(py); *this = PtEtaPhiM4D<Scalar>(v);
}
template <class ScalarType>  
void PtEtaPhiM4D<ScalarType>::SetPz(Scalar pz) {  
   GenVector_exception e("PtEtaPhiM4D::SetPx() is not supposed to be called");
   throw e;
   PxPyPzE4D<Scalar> v(*this); v.SetPz(pz); *this = PtEtaPhiM4D<Scalar>(v);
}
template <class ScalarType>  
void PtEtaPhiM4D<ScalarType>::SetE(Scalar energy) {  
   GenVector_exception e("PtEtaPhiM4D::SetE() is not supposed to be called");
   throw e;
   PxPyPzE4D<Scalar> v(*this); v.SetE(energy);   *this = PtEtaPhiM4D<Scalar>(v);
}

#endif  // endif __MAKE__CINT || G__DICTIONARY

} // end namespace Math

} // end namespace ROOT



#endif // ROOT_Math_GenVector_PtEtaPhiM4D 

 PtEtaPhiM4D.h:1
 PtEtaPhiM4D.h:2
 PtEtaPhiM4D.h:3
 PtEtaPhiM4D.h:4
 PtEtaPhiM4D.h:5
 PtEtaPhiM4D.h:6
 PtEtaPhiM4D.h:7
 PtEtaPhiM4D.h:8
 PtEtaPhiM4D.h:9
 PtEtaPhiM4D.h:10
 PtEtaPhiM4D.h:11
 PtEtaPhiM4D.h:12
 PtEtaPhiM4D.h:13
 PtEtaPhiM4D.h:14
 PtEtaPhiM4D.h:15
 PtEtaPhiM4D.h:16
 PtEtaPhiM4D.h:17
 PtEtaPhiM4D.h:18
 PtEtaPhiM4D.h:19
 PtEtaPhiM4D.h:20
 PtEtaPhiM4D.h:21
 PtEtaPhiM4D.h:22
 PtEtaPhiM4D.h:23
 PtEtaPhiM4D.h:24
 PtEtaPhiM4D.h:25
 PtEtaPhiM4D.h:26
 PtEtaPhiM4D.h:27
 PtEtaPhiM4D.h:28
 PtEtaPhiM4D.h:29
 PtEtaPhiM4D.h:30
 PtEtaPhiM4D.h:31
 PtEtaPhiM4D.h:32
 PtEtaPhiM4D.h:33
 PtEtaPhiM4D.h:34
 PtEtaPhiM4D.h:35
 PtEtaPhiM4D.h:36
 PtEtaPhiM4D.h:37
 PtEtaPhiM4D.h:38
 PtEtaPhiM4D.h:39
 PtEtaPhiM4D.h:40
 PtEtaPhiM4D.h:41
 PtEtaPhiM4D.h:42
 PtEtaPhiM4D.h:43
 PtEtaPhiM4D.h:44
 PtEtaPhiM4D.h:45
 PtEtaPhiM4D.h:46
 PtEtaPhiM4D.h:47
 PtEtaPhiM4D.h:48
 PtEtaPhiM4D.h:49
 PtEtaPhiM4D.h:50
 PtEtaPhiM4D.h:51
 PtEtaPhiM4D.h:52
 PtEtaPhiM4D.h:53
 PtEtaPhiM4D.h:54
 PtEtaPhiM4D.h:55
 PtEtaPhiM4D.h:56
 PtEtaPhiM4D.h:57
 PtEtaPhiM4D.h:58
 PtEtaPhiM4D.h:59
 PtEtaPhiM4D.h:60
 PtEtaPhiM4D.h:61
 PtEtaPhiM4D.h:62
 PtEtaPhiM4D.h:63
 PtEtaPhiM4D.h:64
 PtEtaPhiM4D.h:65
 PtEtaPhiM4D.h:66
 PtEtaPhiM4D.h:67
 PtEtaPhiM4D.h:68
 PtEtaPhiM4D.h:69
 PtEtaPhiM4D.h:70
 PtEtaPhiM4D.h:71
 PtEtaPhiM4D.h:72
 PtEtaPhiM4D.h:73
 PtEtaPhiM4D.h:74
 PtEtaPhiM4D.h:75
 PtEtaPhiM4D.h:76
 PtEtaPhiM4D.h:77
 PtEtaPhiM4D.h:78
 PtEtaPhiM4D.h:79
 PtEtaPhiM4D.h:80
 PtEtaPhiM4D.h:81
 PtEtaPhiM4D.h:82
 PtEtaPhiM4D.h:83
 PtEtaPhiM4D.h:84
 PtEtaPhiM4D.h:85
 PtEtaPhiM4D.h:86
 PtEtaPhiM4D.h:87
 PtEtaPhiM4D.h:88
 PtEtaPhiM4D.h:89
 PtEtaPhiM4D.h:90
 PtEtaPhiM4D.h:91
 PtEtaPhiM4D.h:92
 PtEtaPhiM4D.h:93
 PtEtaPhiM4D.h:94
 PtEtaPhiM4D.h:95
 PtEtaPhiM4D.h:96
 PtEtaPhiM4D.h:97
 PtEtaPhiM4D.h:98
 PtEtaPhiM4D.h:99
 PtEtaPhiM4D.h:100
 PtEtaPhiM4D.h:101
 PtEtaPhiM4D.h:102
 PtEtaPhiM4D.h:103
 PtEtaPhiM4D.h:104
 PtEtaPhiM4D.h:105
 PtEtaPhiM4D.h:106
 PtEtaPhiM4D.h:107
 PtEtaPhiM4D.h:108
 PtEtaPhiM4D.h:109
 PtEtaPhiM4D.h:110
 PtEtaPhiM4D.h:111
 PtEtaPhiM4D.h:112
 PtEtaPhiM4D.h:113
 PtEtaPhiM4D.h:114
 PtEtaPhiM4D.h:115
 PtEtaPhiM4D.h:116
 PtEtaPhiM4D.h:117
 PtEtaPhiM4D.h:118
 PtEtaPhiM4D.h:119
 PtEtaPhiM4D.h:120
 PtEtaPhiM4D.h:121
 PtEtaPhiM4D.h:122
 PtEtaPhiM4D.h:123
 PtEtaPhiM4D.h:124
 PtEtaPhiM4D.h:125
 PtEtaPhiM4D.h:126
 PtEtaPhiM4D.h:127
 PtEtaPhiM4D.h:128
 PtEtaPhiM4D.h:129
 PtEtaPhiM4D.h:130
 PtEtaPhiM4D.h:131
 PtEtaPhiM4D.h:132
 PtEtaPhiM4D.h:133
 PtEtaPhiM4D.h:134
 PtEtaPhiM4D.h:135
 PtEtaPhiM4D.h:136
 PtEtaPhiM4D.h:137
 PtEtaPhiM4D.h:138
 PtEtaPhiM4D.h:139
 PtEtaPhiM4D.h:140
 PtEtaPhiM4D.h:141
 PtEtaPhiM4D.h:142
 PtEtaPhiM4D.h:143
 PtEtaPhiM4D.h:144
 PtEtaPhiM4D.h:145
 PtEtaPhiM4D.h:146
 PtEtaPhiM4D.h:147
 PtEtaPhiM4D.h:148
 PtEtaPhiM4D.h:149
 PtEtaPhiM4D.h:150
 PtEtaPhiM4D.h:151
 PtEtaPhiM4D.h:152
 PtEtaPhiM4D.h:153
 PtEtaPhiM4D.h:154
 PtEtaPhiM4D.h:155
 PtEtaPhiM4D.h:156
 PtEtaPhiM4D.h:157
 PtEtaPhiM4D.h:158
 PtEtaPhiM4D.h:159
 PtEtaPhiM4D.h:160
 PtEtaPhiM4D.h:161
 PtEtaPhiM4D.h:162
 PtEtaPhiM4D.h:163
 PtEtaPhiM4D.h:164
 PtEtaPhiM4D.h:165
 PtEtaPhiM4D.h:166
 PtEtaPhiM4D.h:167
 PtEtaPhiM4D.h:168
 PtEtaPhiM4D.h:169
 PtEtaPhiM4D.h:170
 PtEtaPhiM4D.h:171
 PtEtaPhiM4D.h:172
 PtEtaPhiM4D.h:173
 PtEtaPhiM4D.h:174
 PtEtaPhiM4D.h:175
 PtEtaPhiM4D.h:176
 PtEtaPhiM4D.h:177
 PtEtaPhiM4D.h:178
 PtEtaPhiM4D.h:179
 PtEtaPhiM4D.h:180
 PtEtaPhiM4D.h:181
 PtEtaPhiM4D.h:182
 PtEtaPhiM4D.h:183
 PtEtaPhiM4D.h:184
 PtEtaPhiM4D.h:185
 PtEtaPhiM4D.h:186
 PtEtaPhiM4D.h:187
 PtEtaPhiM4D.h:188
 PtEtaPhiM4D.h:189
 PtEtaPhiM4D.h:190
 PtEtaPhiM4D.h:191
 PtEtaPhiM4D.h:192
 PtEtaPhiM4D.h:193
 PtEtaPhiM4D.h:194
 PtEtaPhiM4D.h:195
 PtEtaPhiM4D.h:196
 PtEtaPhiM4D.h:197
 PtEtaPhiM4D.h:198
 PtEtaPhiM4D.h:199
 PtEtaPhiM4D.h:200
 PtEtaPhiM4D.h:201
 PtEtaPhiM4D.h:202
 PtEtaPhiM4D.h:203
 PtEtaPhiM4D.h:204
 PtEtaPhiM4D.h:205
 PtEtaPhiM4D.h:206
 PtEtaPhiM4D.h:207
 PtEtaPhiM4D.h:208
 PtEtaPhiM4D.h:209
 PtEtaPhiM4D.h:210
 PtEtaPhiM4D.h:211
 PtEtaPhiM4D.h:212
 PtEtaPhiM4D.h:213
 PtEtaPhiM4D.h:214
 PtEtaPhiM4D.h:215
 PtEtaPhiM4D.h:216
 PtEtaPhiM4D.h:217
 PtEtaPhiM4D.h:218
 PtEtaPhiM4D.h:219
 PtEtaPhiM4D.h:220
 PtEtaPhiM4D.h:221
 PtEtaPhiM4D.h:222
 PtEtaPhiM4D.h:223
 PtEtaPhiM4D.h:224
 PtEtaPhiM4D.h:225
 PtEtaPhiM4D.h:226
 PtEtaPhiM4D.h:227
 PtEtaPhiM4D.h:228
 PtEtaPhiM4D.h:229
 PtEtaPhiM4D.h:230
 PtEtaPhiM4D.h:231
 PtEtaPhiM4D.h:232
 PtEtaPhiM4D.h:233
 PtEtaPhiM4D.h:234
 PtEtaPhiM4D.h:235
 PtEtaPhiM4D.h:236
 PtEtaPhiM4D.h:237
 PtEtaPhiM4D.h:238
 PtEtaPhiM4D.h:239
 PtEtaPhiM4D.h:240
 PtEtaPhiM4D.h:241
 PtEtaPhiM4D.h:242
 PtEtaPhiM4D.h:243
 PtEtaPhiM4D.h:244
 PtEtaPhiM4D.h:245
 PtEtaPhiM4D.h:246
 PtEtaPhiM4D.h:247
 PtEtaPhiM4D.h:248
 PtEtaPhiM4D.h:249
 PtEtaPhiM4D.h:250
 PtEtaPhiM4D.h:251
 PtEtaPhiM4D.h:252
 PtEtaPhiM4D.h:253
 PtEtaPhiM4D.h:254
 PtEtaPhiM4D.h:255
 PtEtaPhiM4D.h:256
 PtEtaPhiM4D.h:257
 PtEtaPhiM4D.h:258
 PtEtaPhiM4D.h:259
 PtEtaPhiM4D.h:260
 PtEtaPhiM4D.h:261
 PtEtaPhiM4D.h:262
 PtEtaPhiM4D.h:263
 PtEtaPhiM4D.h:264
 PtEtaPhiM4D.h:265
 PtEtaPhiM4D.h:266
 PtEtaPhiM4D.h:267
 PtEtaPhiM4D.h:268
 PtEtaPhiM4D.h:269
 PtEtaPhiM4D.h:270
 PtEtaPhiM4D.h:271
 PtEtaPhiM4D.h:272
 PtEtaPhiM4D.h:273
 PtEtaPhiM4D.h:274
 PtEtaPhiM4D.h:275
 PtEtaPhiM4D.h:276
 PtEtaPhiM4D.h:277
 PtEtaPhiM4D.h:278
 PtEtaPhiM4D.h:279
 PtEtaPhiM4D.h:280
 PtEtaPhiM4D.h:281
 PtEtaPhiM4D.h:282
 PtEtaPhiM4D.h:283
 PtEtaPhiM4D.h:284
 PtEtaPhiM4D.h:285
 PtEtaPhiM4D.h:286
 PtEtaPhiM4D.h:287
 PtEtaPhiM4D.h:288
 PtEtaPhiM4D.h:289
 PtEtaPhiM4D.h:290
 PtEtaPhiM4D.h:291
 PtEtaPhiM4D.h:292
 PtEtaPhiM4D.h:293
 PtEtaPhiM4D.h:294
 PtEtaPhiM4D.h:295
 PtEtaPhiM4D.h:296
 PtEtaPhiM4D.h:297
 PtEtaPhiM4D.h:298
 PtEtaPhiM4D.h:299
 PtEtaPhiM4D.h:300
 PtEtaPhiM4D.h:301
 PtEtaPhiM4D.h:302
 PtEtaPhiM4D.h:303
 PtEtaPhiM4D.h:304
 PtEtaPhiM4D.h:305
 PtEtaPhiM4D.h:306
 PtEtaPhiM4D.h:307
 PtEtaPhiM4D.h:308
 PtEtaPhiM4D.h:309
 PtEtaPhiM4D.h:310
 PtEtaPhiM4D.h:311
 PtEtaPhiM4D.h:312
 PtEtaPhiM4D.h:313
 PtEtaPhiM4D.h:314
 PtEtaPhiM4D.h:315
 PtEtaPhiM4D.h:316
 PtEtaPhiM4D.h:317
 PtEtaPhiM4D.h:318
 PtEtaPhiM4D.h:319
 PtEtaPhiM4D.h:320
 PtEtaPhiM4D.h:321
 PtEtaPhiM4D.h:322
 PtEtaPhiM4D.h:323
 PtEtaPhiM4D.h:324
 PtEtaPhiM4D.h:325
 PtEtaPhiM4D.h:326
 PtEtaPhiM4D.h:327
 PtEtaPhiM4D.h:328
 PtEtaPhiM4D.h:329
 PtEtaPhiM4D.h:330
 PtEtaPhiM4D.h:331
 PtEtaPhiM4D.h:332
 PtEtaPhiM4D.h:333
 PtEtaPhiM4D.h:334
 PtEtaPhiM4D.h:335
 PtEtaPhiM4D.h:336
 PtEtaPhiM4D.h:337
 PtEtaPhiM4D.h:338
 PtEtaPhiM4D.h:339
 PtEtaPhiM4D.h:340
 PtEtaPhiM4D.h:341
 PtEtaPhiM4D.h:342
 PtEtaPhiM4D.h:343
 PtEtaPhiM4D.h:344
 PtEtaPhiM4D.h:345
 PtEtaPhiM4D.h:346
 PtEtaPhiM4D.h:347
 PtEtaPhiM4D.h:348
 PtEtaPhiM4D.h:349
 PtEtaPhiM4D.h:350
 PtEtaPhiM4D.h:351
 PtEtaPhiM4D.h:352
 PtEtaPhiM4D.h:353
 PtEtaPhiM4D.h:354
 PtEtaPhiM4D.h:355
 PtEtaPhiM4D.h:356
 PtEtaPhiM4D.h:357
 PtEtaPhiM4D.h:358
 PtEtaPhiM4D.h:359
 PtEtaPhiM4D.h:360
 PtEtaPhiM4D.h:361
 PtEtaPhiM4D.h:362
 PtEtaPhiM4D.h:363
 PtEtaPhiM4D.h:364
 PtEtaPhiM4D.h:365
 PtEtaPhiM4D.h:366
 PtEtaPhiM4D.h:367
 PtEtaPhiM4D.h:368
 PtEtaPhiM4D.h:369
 PtEtaPhiM4D.h:370
 PtEtaPhiM4D.h:371
 PtEtaPhiM4D.h:372
 PtEtaPhiM4D.h:373
 PtEtaPhiM4D.h:374
 PtEtaPhiM4D.h:375
 PtEtaPhiM4D.h:376
 PtEtaPhiM4D.h:377
 PtEtaPhiM4D.h:378
 PtEtaPhiM4D.h:379
 PtEtaPhiM4D.h:380
 PtEtaPhiM4D.h:381
 PtEtaPhiM4D.h:382
 PtEtaPhiM4D.h:383
 PtEtaPhiM4D.h:384
 PtEtaPhiM4D.h:385
 PtEtaPhiM4D.h:386
 PtEtaPhiM4D.h:387
 PtEtaPhiM4D.h:388
 PtEtaPhiM4D.h:389
 PtEtaPhiM4D.h:390
 PtEtaPhiM4D.h:391
 PtEtaPhiM4D.h:392
 PtEtaPhiM4D.h:393
 PtEtaPhiM4D.h:394
 PtEtaPhiM4D.h:395
 PtEtaPhiM4D.h:396
 PtEtaPhiM4D.h:397
 PtEtaPhiM4D.h:398
 PtEtaPhiM4D.h:399
 PtEtaPhiM4D.h:400
 PtEtaPhiM4D.h:401
 PtEtaPhiM4D.h:402
 PtEtaPhiM4D.h:403
 PtEtaPhiM4D.h:404
 PtEtaPhiM4D.h:405
 PtEtaPhiM4D.h:406
 PtEtaPhiM4D.h:407
 PtEtaPhiM4D.h:408
 PtEtaPhiM4D.h:409
 PtEtaPhiM4D.h:410
 PtEtaPhiM4D.h:411
 PtEtaPhiM4D.h:412
 PtEtaPhiM4D.h:413
 PtEtaPhiM4D.h:414
 PtEtaPhiM4D.h:415
 PtEtaPhiM4D.h:416
 PtEtaPhiM4D.h:417
 PtEtaPhiM4D.h:418
 PtEtaPhiM4D.h:419
 PtEtaPhiM4D.h:420
 PtEtaPhiM4D.h:421
 PtEtaPhiM4D.h:422
 PtEtaPhiM4D.h:423
 PtEtaPhiM4D.h:424
 PtEtaPhiM4D.h:425
 PtEtaPhiM4D.h:426
 PtEtaPhiM4D.h:427
 PtEtaPhiM4D.h:428
 PtEtaPhiM4D.h:429
 PtEtaPhiM4D.h:430
 PtEtaPhiM4D.h:431
 PtEtaPhiM4D.h:432
 PtEtaPhiM4D.h:433
 PtEtaPhiM4D.h:434
 PtEtaPhiM4D.h:435
 PtEtaPhiM4D.h:436
 PtEtaPhiM4D.h:437
 PtEtaPhiM4D.h:438
 PtEtaPhiM4D.h:439
 PtEtaPhiM4D.h:440
 PtEtaPhiM4D.h:441
 PtEtaPhiM4D.h:442
 PtEtaPhiM4D.h:443
 PtEtaPhiM4D.h:444
 PtEtaPhiM4D.h:445
 PtEtaPhiM4D.h:446
 PtEtaPhiM4D.h:447
 PtEtaPhiM4D.h:448
 PtEtaPhiM4D.h:449
 PtEtaPhiM4D.h:450
 PtEtaPhiM4D.h:451
 PtEtaPhiM4D.h:452
 PtEtaPhiM4D.h:453
 PtEtaPhiM4D.h:454