LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenBase - EvtTwoBodyKine.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 41 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 13 0.0 %

          Line data    Source code
       1             : #include "EvtGenBase/EvtPatches.hh"
       2             : /*******************************************************************************
       3             :  * Project: BaBar detector at the SLAC PEP-II B-factory
       4             :  * Package: EvtGenBase
       5             :  *    File: $Id: EvtTwoBodyKine.cpp,v 1.3 2009-03-16 15:37:54 robbep Exp $
       6             :  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
       7             :  *
       8             :  * Copyright (C) 2002 Caltech
       9             :  *******************************************************************************/
      10             : 
      11             : #include <iostream>
      12             : #include <assert.h>
      13             : #include <math.h>
      14             : #include "EvtGenBase/EvtTwoBodyKine.hh"
      15             : #include "EvtGenBase/EvtReport.hh"
      16             : using std::endl;
      17             : using std::ostream;
      18             : 
      19             : 
      20             : EvtTwoBodyKine::EvtTwoBodyKine()
      21           0 :   : _mA(0.), _mB(0.), _mAB(0.)
      22           0 : {}
      23             : 
      24             : EvtTwoBodyKine::EvtTwoBodyKine(double mA, double mB, double mAB)
      25           0 :   : _mA(mA), _mB(mB), _mAB(mAB)
      26           0 : {
      27           0 :   if(mAB < mA + mB) {
      28             : 
      29           0 :     report(Severity::Info,"EvtGen") << mAB << " < " << mA << " + " << mB << endl;
      30           0 :     assert(0);
      31             :   }
      32           0 : }
      33             : 
      34             : EvtTwoBodyKine::EvtTwoBodyKine(const EvtTwoBodyKine& other)
      35           0 :   : _mA(other._mA), _mB(other._mB), _mAB(other._mAB)
      36           0 : {}
      37             : 
      38             : EvtTwoBodyKine::~EvtTwoBodyKine()
      39           0 : {}
      40             : 
      41             : 
      42             : double EvtTwoBodyKine::m(Index i) const
      43             : {
      44           0 :   double ret = _mAB;
      45           0 :   if(A == i) ret = _mA;
      46             :   else
      47           0 :     if(B == i) ret = _mB;
      48             :   
      49           0 :   return ret;
      50             : }
      51             : 
      52             : 
      53             : double EvtTwoBodyKine::p(Index i) const
      54             : { 
      55             :   double p0 = 0.;
      56             : 
      57           0 :   if(i == AB) {
      58             : 
      59           0 :     double x = _mAB*_mAB - _mA*_mA - _mB*_mB;
      60           0 :     double y = 2*_mA*_mB;
      61           0 :     p0 = sqrt(x*x - y*y)/2./_mAB;
      62           0 :   }
      63             :   else 
      64           0 :     if(i == A) {
      65             : 
      66           0 :       double x = _mA*_mA - _mAB*_mAB - _mB*_mB;
      67           0 :       double y = 2*_mAB*_mB;
      68           0 :       p0 = sqrt(x*x - y*y)/2./_mA;
      69           0 :     }
      70             :     else {
      71             : 
      72           0 :       double x = _mB*_mB - _mAB*_mAB - _mA*_mA;
      73           0 :       double y = 2*_mAB*_mA;
      74           0 :       p0 = sqrt(x*x - y*y)/2./_mB;
      75             :     }
      76             : 
      77           0 :   return p0;
      78             : }
      79             : 
      80             : 
      81             : double EvtTwoBodyKine::e(Index i, Index j) const
      82             : {
      83           0 :   double ret = m(i);
      84           0 :   if(i != j) {
      85             : 
      86           0 :     double pD = p(j);
      87           0 :     ret = sqrt(ret*ret + pD*pD);
      88           0 :   }
      89           0 :   return ret;
      90             : }
      91             : 
      92             : 
      93             : void EvtTwoBodyKine::print(ostream& os) const
      94             : {
      95           0 :   os << " mA = " << _mA << endl;
      96           0 :   os << " mB = " << _mB << endl;
      97           0 :   os << "mAB = " << _mAB << endl;
      98           0 : }
      99             : 
     100             : 
     101             : ostream& operator<<(ostream& os, const EvtTwoBodyKine& p)
     102             : {
     103           0 :   p.print(os);
     104           0 :   return os;
     105             : }

Generated by: LCOV version 1.11