ROOT logo
// @(#)root/mathcore:$Id: PtEtaPhiM4D.h 24923 2008-07-23 15:43:05Z 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 24923 2008-07-23 15:43:05Z 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 ("PxPyPzM4D::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 mass becomes negative 
   */
   void Negate( ) { fPhi = - fPhi; fEta = - fEta; fM = - fM; }

   /**
      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