/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenBase/EvtDalitzPlot.hh

Go to the documentation of this file.
00001 //-----------------------------------------------------------------------
00002 // File and Version Information: 
00003 //      $Id: EvtDalitzPlot.hh,v 1.1.1.2 2007/10/26 05:03:14 pingrg Exp $
00004 // 
00005 // Environment:
00006 //      This software is part of the EvtGen package developed jointly
00007 //      for the BaBar and CLEO collaborations. If you use all or part
00008 //      of it, please give an appropriate acknowledgement.
00009 //
00010 // Copyright Information:
00011 //      Copyright (C) 1998 Caltech, UCSB
00012 //
00013 // Module creator:
00014 //      Alexei Dvoretskii, Caltech, 2001-2002.
00015 //-----------------------------------------------------------------------
00016 
00017 #ifndef EVT_DALITZ_PLOT_HH
00018 #define EVT_DALITZ_PLOT_HH
00019 
00020 #include <assert.h>
00021 #include "EvtGenBase/EvtCyclic3.hh"
00022 #include "EvtGenBase/EvtTwoBodyVertex.hh"
00023 #include "EvtGenBase/EvtDecayMode.hh"
00024 
00025 class EvtDalitzPlot {
00026 public:
00027 
00028   EvtDalitzPlot();
00029   EvtDalitzPlot(double mA, double mB, double mC, double bigM, double ldel = 0., double rdel = 0.);
00030   EvtDalitzPlot(const EvtDecayMode& mode, double ldel = 0., double rdel = 0.);
00031   EvtDalitzPlot(const EvtDalitzPlot& other);
00032   ~EvtDalitzPlot();
00033   bool operator==(const EvtDalitzPlot& other) const;  
00034   const EvtDalitzPlot* clone() const;
00035 
00036   
00037   // Absolute limits for masses squared in the Dalitz plot
00038   // e.g. qAbsMin(0) is the lowest possible value
00039   // for m2 of particles {12}
00040   
00041   double qAbsMin(EvtCyclic3::Pair i) const;
00042   double qAbsMax(EvtCyclic3::Pair i) const;
00043   double mAbsMin(EvtCyclic3::Pair i) const;
00044   double mAbsMax(EvtCyclic3::Pair i) const;
00045 
00046   // Absolute limits for Zemach coordinate qres and qhel (approximate)
00047   // qHelAbsMin(BC,CA) means absolute minimum for (qCA-qAB)/2.
00048 
00049   double qResAbsMin(EvtCyclic3::Pair i) const;
00050   double qResAbsMax(EvtCyclic3::Pair i) const;
00051   double qHelAbsMin(EvtCyclic3::Pair i) const;
00052   double qHelAbsMax(EvtCyclic3::Pair i) const;
00053   inline double qSumMin() const { return sum() + _ldel; }
00054   inline double qSumMax() const { return sum() + _rdel; }
00055   inline bool fuzzy() const { return (_rdel - _ldel != 0.); }
00056 
00057   // Find the area of the Dalitz plot by numeric integration. (N bins for variable q(i) are used).
00058   // Very large numbers of N can result in a very long calculation. It should not 
00059   // matter which two pairs f variables are used. The integral should eventually 
00060   // converge to the same number
00061 
00062   double getArea(int N = 1000, EvtCyclic3::Pair i = EvtCyclic3::AB, EvtCyclic3::Pair j = EvtCyclic3::BC) const;
00063 
00064   // Limits for masses squared when one mass squared is known
00065 
00066   double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const;
00067   double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const;
00068 
00069 
00070   // Coordinate transformations
00071 
00072   double cosTh(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const;
00073   double e(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
00074   double p(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
00075 
00076   double q(EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2, double q2) const;
00077 
00078   // |J| of transformation of qi to cosTh in the rest-frame of j
00079 
00080   double jacobian(EvtCyclic3::Pair i, double q) const;
00081 
00082 
00083   // Given resonance index and mass returns decay 
00084   // and birth vertices
00085 
00086   EvtTwoBodyVertex vD(EvtCyclic3::Pair iRes, double m0, int L) const;
00087   EvtTwoBodyVertex vB(EvtCyclic3::Pair iRes, double m0, int L) const;
00088 
00089   // Accessors
00090 
00091   double sum() const;
00092   inline double bigM() const { return _bigM; }
00093   inline double mA() const { return _mA; } 
00094   inline double mB() const { return _mB; } 
00095   inline double mC() const { return _mC; } 
00096   double m(EvtCyclic3::Index i) const;
00097 
00098 
00099   void print() const;
00100 
00101   void sanityCheck() const;
00102 
00103 protected:
00104 
00105   // Defines two dimensional dalitz plot
00106 
00107   double _mA;
00108   double _mB;
00109   double _mC;
00110   double _bigM;  
00111   
00112   // Defines third dimension, or fuzziness. M^2 + ldel < M^2 < M^2 + rdel
00113 
00114   double _ldel;
00115   double _rdel;
00116 
00117 }; 
00118 
00119 #endif
00120 
00121 

Generated on Tue Nov 29 23:12:12 2016 for BOSS_7.0.2 by  doxygen 1.4.7