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

          Line data    Source code
       1             : //-----------------------------------------------------------------------
       2             : // File and Version Information: 
       3             : //      $Id: EvtDalitzPlot.hh,v 1.2 2009-03-16 16:44:53 robbep Exp $
       4             : // 
       5             : // Environment:
       6             : //      This software is part of the EvtGen package developed jointly
       7             : //      for the BaBar and CLEO collaborations. If you use all or part
       8             : //      of it, please give an appropriate acknowledgement.
       9             : //
      10             : // Copyright Information:
      11             : //      Copyright (C) 1998 Caltech, UCSB
      12             : //
      13             : // Module creator:
      14             : //      Alexei Dvoretskii, Caltech, 2001-2002.
      15             : //-----------------------------------------------------------------------
      16             : 
      17             : #ifndef EVT_DALITZ_PLOT_HH
      18             : #define EVT_DALITZ_PLOT_HH
      19             : 
      20             : #include <assert.h>
      21             : #include "EvtGenBase/EvtCyclic3.hh"
      22             : #include "EvtGenBase/EvtTwoBodyVertex.hh"
      23             : #include "EvtGenBase/EvtDecayMode.hh"
      24             : 
      25             : class EvtDalitzPlot {
      26             : public:
      27             : 
      28             :   EvtDalitzPlot();
      29             :   EvtDalitzPlot(double mA, double mB, double mC, double bigM, double ldel = 0., double rdel = 0.);
      30             :   EvtDalitzPlot(const EvtDecayMode& mode, double ldel = 0., double rdel = 0.);
      31             :   EvtDalitzPlot(const EvtDalitzPlot& other);
      32             :   ~EvtDalitzPlot();
      33             :   bool operator==(const EvtDalitzPlot& other) const;  
      34             :   const EvtDalitzPlot* clone() const;
      35             : 
      36             :   
      37             :   // Absolute limits for masses squared in the Dalitz plot
      38             :   // e.g. qAbsMin(0) is the lowest possible value
      39             :   // for m2 of particles {12}
      40             :   
      41             :   double qAbsMin(EvtCyclic3::Pair i) const;
      42             :   double qAbsMax(EvtCyclic3::Pair i) const;
      43             :   double mAbsMin(EvtCyclic3::Pair i) const;
      44             :   double mAbsMax(EvtCyclic3::Pair i) const;
      45             : 
      46             :   // Absolute limits for Zemach coordinate qres and qhel (approximate)
      47             :   // qHelAbsMin(BC,CA) means absolute minimum for (qCA-qAB)/2.
      48             : 
      49             :   double qResAbsMin(EvtCyclic3::Pair i) const;
      50             :   double qResAbsMax(EvtCyclic3::Pair i) const;
      51             :   double qHelAbsMin(EvtCyclic3::Pair i) const;
      52             :   double qHelAbsMax(EvtCyclic3::Pair i) const;
      53           0 :   inline double qSumMin() const { return sum() + _ldel; }
      54           0 :   inline double qSumMax() const { return sum() + _rdel; }
      55             :   inline bool fuzzy() const { return (_rdel - _ldel != 0.); }
      56             : 
      57             :   // Find the area of the Dalitz plot by numeric integration. (N bins for variable q(i) are used).
      58             :   // Very large numbers of N can result in a very long calculation. It should not 
      59             :   // matter which two pairs f variables are used. The integral should eventually 
      60             :   // converge to the same number
      61             : 
      62             :   double getArea(int N = 1000, EvtCyclic3::Pair i = EvtCyclic3::AB, EvtCyclic3::Pair j = EvtCyclic3::BC) const;
      63             : 
      64             :   // Limits for masses squared when one mass squared is known
      65             : 
      66             :   double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const;
      67             :   double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const;
      68             : 
      69             : 
      70             :   // Coordinate transformations
      71             : 
      72             :   double cosTh(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const;
      73             :   double e(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
      74             :   double p(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
      75             : 
      76             :   double q(EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2, double q2) const;
      77             : 
      78             :   // |J| of transformation of qi to cosTh in the rest-frame of j
      79             : 
      80             :   double jacobian(EvtCyclic3::Pair i, double q) const;
      81             : 
      82             : 
      83             :   // Given resonance index and mass returns decay 
      84             :   // and birth vertices
      85             : 
      86             :   EvtTwoBodyVertex vD(EvtCyclic3::Pair iRes, double m0, int L) const;
      87             :   EvtTwoBodyVertex vB(EvtCyclic3::Pair iRes, double m0, int L) const;
      88             : 
      89             :   // Accessors
      90             : 
      91             :   double sum() const;
      92           0 :   inline double bigM() const { return _bigM; }
      93           0 :   inline double mA() const { return _mA; } 
      94           0 :   inline double mB() const { return _mB; } 
      95           0 :   inline double mC() const { return _mC; } 
      96             :   double m(EvtCyclic3::Index i) const;
      97             : 
      98             : 
      99             :   void print() const;
     100             : 
     101             :   void sanityCheck() const;
     102             : 
     103             : protected:
     104             : 
     105             :   // Defines two dimensional dalitz plot
     106             : 
     107             :   double _mA;
     108             :   double _mB;
     109             :   double _mC;
     110             :   double _bigM;  
     111             :   
     112             :   // Defines third dimension, or fuzziness. M^2 + ldel < M^2 < M^2 + rdel
     113             : 
     114             :   double _ldel;
     115             :   double _rdel;
     116             : 
     117             : }; 
     118             : 
     119             : #endif
     120             : 
     121             : 

Generated by: LCOV version 1.11