ROOT logo
// @(#)root/mathcore:$Id: VectorUtil_Cint.h 22516 2008-03-07 15:14:26Z moneta $
// Authors: W. Brown, M. Fischler, L. Moneta    2005  

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

// Header file for Vector Utility Function (for CINT) 
// 
// Created by: moneta  at Tue May 31 21:10:29 2005
// 
// Last update: Tue May 31 21:10:29 2005
// 
#ifndef ROOT_Math_VectorUtil_Cint 
#define ROOT_Math_VectorUtil_Cint  1

// functions for CINT without using templates 


#include "Math/GenVector/VectorUtil.h"
#include "Math/Vector3D.h"
#include "Math/Point3D.h"
#include "Math/Vector4D.h"

#include <iostream>

namespace ROOT { 

  namespace Math { 


    // utility functions for vector classes in global space 

    XYZVector operator * (double a, XYZVector v) { 
      return v *= a;
    }


    XYZPoint operator * (double a, XYZPoint p) { 
      return p *= a;
    }

    XYZTVector operator * (double a, XYZTVector v) { 
      return v *= a;
    }

#if defined (linux) || defined (_WIN32) || defined (__APPLE__)
 
    std::ostream & operator<< (std::ostream & os, const XYZVector & v) { 
      return operator<< <char,char_traits<char> > (os,v); 
    }

    std::ostream & operator<< (std::ostream & os, const XYZPoint & p) { 
      return operator<< <char,char_traits<char> > (os,p); 
    }
    
    std::ostream & operator<< (std::ostream & os, const XYZTVector & q) { 
      return operator<< <char,char_traits<char> > (os,q); 
    }
    
#endif

        
    namespace VectorUtil { 


      double DeltaPhi(const XYZVector & v1, const XYZVector & v2) { 
	return DeltaPhi<XYZVector, XYZVector>(v1,v2);
      }

      double DeltaPhi(const RhoEtaPhiVector & v1, const RhoEtaPhiVector & v2) { 
	return DeltaPhi<RhoEtaPhiVector, RhoEtaPhiVector>(v1,v2);
      }

      double DeltaPhi(const Polar3DVector & v1, const Polar3DVector & v2) { 
	return DeltaPhi<Polar3DVector, Polar3DVector>(v1,v2);
      }

      double DeltaPhi(const XYZPoint & v1, const XYZPoint & v2) { 
	return DeltaPhi<XYZPoint, XYZPoint>(v1,v2);
      }

      double DeltaPhi(const Polar3DPoint & v1, const Polar3DPoint & v2) { 
	return DeltaPhi<Polar3DPoint, Polar3DPoint>(v1,v2);
      }

      double DeltaPhi(const RhoEtaPhiPoint & v1, const RhoEtaPhiPoint & v2) { 
	return DeltaPhi<RhoEtaPhiPoint, RhoEtaPhiPoint>(v1,v2);
      }

      double DeltaPhi(const XYZTVector & v1, const XYZTVector & v2) { 
	return DeltaPhi<XYZTVector, XYZTVector>(v1,v2);
      }

      double DeltaPhi(const PtEtaPhiEVector & v1, const PtEtaPhiEVector & v2) { 
	return DeltaPhi<PtEtaPhiEVector, PtEtaPhiEVector>(v1,v2);
      }

      // delta R


      double DeltaR(const XYZVector & v1, const XYZVector & v2) { 
	return DeltaR<XYZVector, XYZVector>(v1,v2);
      }

      double DeltaR(const RhoEtaPhiVector & v1, const RhoEtaPhiVector & v2) { 
	return DeltaR<RhoEtaPhiVector, RhoEtaPhiVector>(v1,v2);
      }

      double DeltaR(const Polar3DVector & v1, const Polar3DVector & v2) { 
	return DeltaR<Polar3DVector, Polar3DVector>(v1,v2);
      }

      double DeltaR(const XYZPoint & v1, const XYZPoint & v2) { 
	return DeltaR<XYZPoint, XYZPoint>(v1,v2);
      }

      double DeltaR(const Polar3DPoint & v1, const Polar3DPoint & v2) { 
	return DeltaR<Polar3DPoint, Polar3DPoint>(v1,v2);
      }

      double DeltaR(const RhoEtaPhiPoint & v1, const RhoEtaPhiPoint & v2) { 
	return DeltaR<RhoEtaPhiPoint, RhoEtaPhiPoint>(v1,v2);
      }

      double DeltaR(const XYZTVector & v1, const XYZTVector & v2) { 
	return DeltaR<XYZTVector, XYZTVector>(v1,v2);
      }

      double DeltaR(const PtEtaPhiEVector & v1, const PtEtaPhiEVector & v2) { 
	return DeltaR<PtEtaPhiEVector, PtEtaPhiEVector>(v1,v2);
      }

      // cosTheta v1 v2 

      double CosTheta(const XYZVector & v1, const XYZVector & v2) { 
	return CosTheta<XYZVector, XYZVector>(v1,v2);
      }

      double CosTheta(const RhoEtaPhiVector & v1, const RhoEtaPhiVector & v2) { 
	return CosTheta<RhoEtaPhiVector, RhoEtaPhiVector>(v1,v2);
      }

      double CosTheta(const Polar3DVector & v1, const Polar3DVector & v2) { 
	return CosTheta<Polar3DVector, Polar3DVector>(v1,v2);
      }

      double CosTheta(const XYZPoint & v1, const XYZPoint & v2) { 
	return CosTheta<XYZPoint, XYZPoint>(v1,v2);
      }

      double CosTheta(const Polar3DPoint & v1, const Polar3DPoint & v2) { 
	return CosTheta<Polar3DPoint, Polar3DPoint>(v1,v2);
      }

      double CosTheta(const RhoEtaPhiPoint & v1, const RhoEtaPhiPoint & v2) { 
	return CosTheta<RhoEtaPhiPoint, RhoEtaPhiPoint>(v1,v2);
      }

      double CosTheta(const XYZTVector & v1, const XYZTVector & v2) { 
	return CosTheta<XYZTVector, XYZTVector>(v1,v2);
      }

      double CosTheta(const PtEtaPhiEVector & v1, const PtEtaPhiEVector & v2) { 
	return CosTheta<PtEtaPhiEVector, PtEtaPhiEVector>(v1,v2);
      }

      // angle v1 v2

      double Angle(const XYZVector & v1, const XYZVector & v2) { 
	return Angle<XYZVector, XYZVector>(v1,v2);
      }

      double Angle(const RhoEtaPhiVector & v1, const RhoEtaPhiVector & v2) { 
	return Angle<RhoEtaPhiVector, RhoEtaPhiVector>(v1,v2);
      }

      double Angle(const Polar3DVector & v1, const Polar3DVector & v2) { 
	return Angle<Polar3DVector, Polar3DVector>(v1,v2);
      }

      double Angle(const XYZPoint & v1, const XYZPoint & v2) { 
	return Angle<XYZPoint, XYZPoint>(v1,v2);
      }

      double Angle(const Polar3DPoint & v1, const Polar3DPoint & v2) { 
	return Angle<Polar3DPoint, Polar3DPoint>(v1,v2);
      }

      double Angle(const RhoEtaPhiPoint & v1, const RhoEtaPhiPoint & v2) { 
	return Angle<RhoEtaPhiPoint, RhoEtaPhiPoint>(v1,v2);
      }

      double Angle(const XYZTVector & v1, const XYZTVector & v2) { 
	return Angle<XYZTVector, XYZTVector>(v1,v2);
      }

      double Angle(const PtEtaPhiEVector & v1, const PtEtaPhiEVector & v2) { 
	return Angle<PtEtaPhiEVector, PtEtaPhiEVector>(v1,v2);
      }

      // invariant mass v1 v2 

      double InvariantMass(const XYZTVector & v1, const XYZTVector & v2) { 
	return InvariantMass<XYZTVector, XYZTVector>(v1,v2);
      }

      double InvariantMass(const PtEtaPhiEVector & v1, const PtEtaPhiEVector & v2) { 
	return InvariantMass<PtEtaPhiEVector, PtEtaPhiEVector>(v1,v2);
      }

      double InvariantMass(const XYZTVector & v1, const PtEtaPhiEVector & v2) { 
	return InvariantMass<XYZTVector, PtEtaPhiEVector>(v1,v2);
      }

      double InvariantMass(const PtEtaPhiEVector & v1, const XYZTVector & v2) { 
	return InvariantMass<PtEtaPhiEVector, XYZTVector>(v1,v2);
      }



    }  // end namespace Vector Util

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




#endif
 VectorUtil_Cint.h:1
 VectorUtil_Cint.h:2
 VectorUtil_Cint.h:3
 VectorUtil_Cint.h:4
 VectorUtil_Cint.h:5
 VectorUtil_Cint.h:6
 VectorUtil_Cint.h:7
 VectorUtil_Cint.h:8
 VectorUtil_Cint.h:9
 VectorUtil_Cint.h:10
 VectorUtil_Cint.h:11
 VectorUtil_Cint.h:12
 VectorUtil_Cint.h:13
 VectorUtil_Cint.h:14
 VectorUtil_Cint.h:15
 VectorUtil_Cint.h:16
 VectorUtil_Cint.h:17
 VectorUtil_Cint.h:18
 VectorUtil_Cint.h:19
 VectorUtil_Cint.h:20
 VectorUtil_Cint.h:21
 VectorUtil_Cint.h:22
 VectorUtil_Cint.h:23
 VectorUtil_Cint.h:24
 VectorUtil_Cint.h:25
 VectorUtil_Cint.h:26
 VectorUtil_Cint.h:27
 VectorUtil_Cint.h:28
 VectorUtil_Cint.h:29
 VectorUtil_Cint.h:30
 VectorUtil_Cint.h:31
 VectorUtil_Cint.h:32
 VectorUtil_Cint.h:33
 VectorUtil_Cint.h:34
 VectorUtil_Cint.h:35
 VectorUtil_Cint.h:36
 VectorUtil_Cint.h:37
 VectorUtil_Cint.h:38
 VectorUtil_Cint.h:39
 VectorUtil_Cint.h:40
 VectorUtil_Cint.h:41
 VectorUtil_Cint.h:42
 VectorUtil_Cint.h:43
 VectorUtil_Cint.h:44
 VectorUtil_Cint.h:45
 VectorUtil_Cint.h:46
 VectorUtil_Cint.h:47
 VectorUtil_Cint.h:48
 VectorUtil_Cint.h:49
 VectorUtil_Cint.h:50
 VectorUtil_Cint.h:51
 VectorUtil_Cint.h:52
 VectorUtil_Cint.h:53
 VectorUtil_Cint.h:54
 VectorUtil_Cint.h:55
 VectorUtil_Cint.h:56
 VectorUtil_Cint.h:57
 VectorUtil_Cint.h:58
 VectorUtil_Cint.h:59
 VectorUtil_Cint.h:60
 VectorUtil_Cint.h:61
 VectorUtil_Cint.h:62
 VectorUtil_Cint.h:63
 VectorUtil_Cint.h:64
 VectorUtil_Cint.h:65
 VectorUtil_Cint.h:66
 VectorUtil_Cint.h:67
 VectorUtil_Cint.h:68
 VectorUtil_Cint.h:69
 VectorUtil_Cint.h:70
 VectorUtil_Cint.h:71
 VectorUtil_Cint.h:72
 VectorUtil_Cint.h:73
 VectorUtil_Cint.h:74
 VectorUtil_Cint.h:75
 VectorUtil_Cint.h:76
 VectorUtil_Cint.h:77
 VectorUtil_Cint.h:78
 VectorUtil_Cint.h:79
 VectorUtil_Cint.h:80
 VectorUtil_Cint.h:81
 VectorUtil_Cint.h:82
 VectorUtil_Cint.h:83
 VectorUtil_Cint.h:84
 VectorUtil_Cint.h:85
 VectorUtil_Cint.h:86
 VectorUtil_Cint.h:87
 VectorUtil_Cint.h:88
 VectorUtil_Cint.h:89
 VectorUtil_Cint.h:90
 VectorUtil_Cint.h:91
 VectorUtil_Cint.h:92
 VectorUtil_Cint.h:93
 VectorUtil_Cint.h:94
 VectorUtil_Cint.h:95
 VectorUtil_Cint.h:96
 VectorUtil_Cint.h:97
 VectorUtil_Cint.h:98
 VectorUtil_Cint.h:99
 VectorUtil_Cint.h:100
 VectorUtil_Cint.h:101
 VectorUtil_Cint.h:102
 VectorUtil_Cint.h:103
 VectorUtil_Cint.h:104
 VectorUtil_Cint.h:105
 VectorUtil_Cint.h:106
 VectorUtil_Cint.h:107
 VectorUtil_Cint.h:108
 VectorUtil_Cint.h:109
 VectorUtil_Cint.h:110
 VectorUtil_Cint.h:111
 VectorUtil_Cint.h:112
 VectorUtil_Cint.h:113
 VectorUtil_Cint.h:114
 VectorUtil_Cint.h:115
 VectorUtil_Cint.h:116
 VectorUtil_Cint.h:117
 VectorUtil_Cint.h:118
 VectorUtil_Cint.h:119
 VectorUtil_Cint.h:120
 VectorUtil_Cint.h:121
 VectorUtil_Cint.h:122
 VectorUtil_Cint.h:123
 VectorUtil_Cint.h:124
 VectorUtil_Cint.h:125
 VectorUtil_Cint.h:126
 VectorUtil_Cint.h:127
 VectorUtil_Cint.h:128
 VectorUtil_Cint.h:129
 VectorUtil_Cint.h:130
 VectorUtil_Cint.h:131
 VectorUtil_Cint.h:132
 VectorUtil_Cint.h:133
 VectorUtil_Cint.h:134
 VectorUtil_Cint.h:135
 VectorUtil_Cint.h:136
 VectorUtil_Cint.h:137
 VectorUtil_Cint.h:138
 VectorUtil_Cint.h:139
 VectorUtil_Cint.h:140
 VectorUtil_Cint.h:141
 VectorUtil_Cint.h:142
 VectorUtil_Cint.h:143
 VectorUtil_Cint.h:144
 VectorUtil_Cint.h:145
 VectorUtil_Cint.h:146
 VectorUtil_Cint.h:147
 VectorUtil_Cint.h:148
 VectorUtil_Cint.h:149
 VectorUtil_Cint.h:150
 VectorUtil_Cint.h:151
 VectorUtil_Cint.h:152
 VectorUtil_Cint.h:153
 VectorUtil_Cint.h:154
 VectorUtil_Cint.h:155
 VectorUtil_Cint.h:156
 VectorUtil_Cint.h:157
 VectorUtil_Cint.h:158
 VectorUtil_Cint.h:159
 VectorUtil_Cint.h:160
 VectorUtil_Cint.h:161
 VectorUtil_Cint.h:162
 VectorUtil_Cint.h:163
 VectorUtil_Cint.h:164
 VectorUtil_Cint.h:165
 VectorUtil_Cint.h:166
 VectorUtil_Cint.h:167
 VectorUtil_Cint.h:168
 VectorUtil_Cint.h:169
 VectorUtil_Cint.h:170
 VectorUtil_Cint.h:171
 VectorUtil_Cint.h:172
 VectorUtil_Cint.h:173
 VectorUtil_Cint.h:174
 VectorUtil_Cint.h:175
 VectorUtil_Cint.h:176
 VectorUtil_Cint.h:177
 VectorUtil_Cint.h:178
 VectorUtil_Cint.h:179
 VectorUtil_Cint.h:180
 VectorUtil_Cint.h:181
 VectorUtil_Cint.h:182
 VectorUtil_Cint.h:183
 VectorUtil_Cint.h:184
 VectorUtil_Cint.h:185
 VectorUtil_Cint.h:186
 VectorUtil_Cint.h:187
 VectorUtil_Cint.h:188
 VectorUtil_Cint.h:189
 VectorUtil_Cint.h:190
 VectorUtil_Cint.h:191
 VectorUtil_Cint.h:192
 VectorUtil_Cint.h:193
 VectorUtil_Cint.h:194
 VectorUtil_Cint.h:195
 VectorUtil_Cint.h:196
 VectorUtil_Cint.h:197
 VectorUtil_Cint.h:198
 VectorUtil_Cint.h:199
 VectorUtil_Cint.h:200
 VectorUtil_Cint.h:201
 VectorUtil_Cint.h:202
 VectorUtil_Cint.h:203
 VectorUtil_Cint.h:204
 VectorUtil_Cint.h:205
 VectorUtil_Cint.h:206
 VectorUtil_Cint.h:207
 VectorUtil_Cint.h:208
 VectorUtil_Cint.h:209
 VectorUtil_Cint.h:210
 VectorUtil_Cint.h:211
 VectorUtil_Cint.h:212
 VectorUtil_Cint.h:213
 VectorUtil_Cint.h:214
 VectorUtil_Cint.h:215
 VectorUtil_Cint.h:216
 VectorUtil_Cint.h:217
 VectorUtil_Cint.h:218
 VectorUtil_Cint.h:219
 VectorUtil_Cint.h:220
 VectorUtil_Cint.h:221
 VectorUtil_Cint.h:222
 VectorUtil_Cint.h:223
 VectorUtil_Cint.h:224
 VectorUtil_Cint.h:225
 VectorUtil_Cint.h:226
 VectorUtil_Cint.h:227
 VectorUtil_Cint.h:228
 VectorUtil_Cint.h:229
 VectorUtil_Cint.h:230
 VectorUtil_Cint.h:231
 VectorUtil_Cint.h:232
 VectorUtil_Cint.h:233
 VectorUtil_Cint.h:234
 VectorUtil_Cint.h:235