1 //--------------------------------------------------------------------------
4 // This software is part of the EvtGen package developed jointly
5 // for the BaBar and CLEO collaborations. If you use all or part
6 // of it, please give an appropriate acknowledgement.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: EvtGen/EvtGenericDalitz.hh
13 // Description: Model to describe a generic dalitz decay
15 // Modification history:
17 // DCC 16 December, 2011 Module created
19 //------------------------------------------------------------------------
21 #ifndef EVTDALITZTABLE_HPP
22 #define EVTDALITZTABLE_HPP
24 #include "EvtGenModels/EvtDalitzDecayInfo.hh"
25 #include "EvtGenBase/EvtId.hh"
27 #include "EvtGenBase/EvtDalitzReso.hh"
28 #include "EvtGenBase/EvtDalitzPlot.hh"
29 #include "EvtGenBase/EvtCyclic3.hh"
30 #include "EvtGenBase/EvtSpinType.hh"
36 class EvtDalitzTable {
39 static EvtDalitzTable* getInstance(const std::string dec_name="", bool verbose=true);
41 bool fileHasBeenRead(const std::string dec_name);
42 void readXMLDecayFile(const std::string dec_name, bool verbose=true);
43 void checkParticle(std::string particle);
45 void addDecay(EvtId parent, const EvtDalitzDecayInfo& dec);
46 void copyDecay(EvtId parent, EvtId* daughters, EvtId copy, EvtId* copyd);
48 std::vector<EvtDalitzDecayInfo> getDalitzTable(const EvtId& parent);
57 EvtDalitzReso getResonance(std::string shape, EvtDalitzPlot dp, EvtCyclic3::Pair angPair, EvtCyclic3::Pair resPair,
58 EvtSpinType::spintype spinType, double mass, double width, double FFp, double FFr, double alpha,
59 double aLass, double rLass, double BLass, double phiBLass, double RLass, double phiRLass, double cutoffLass);
60 int getDaughterPairs(EvtId* resDaughter, EvtId* daughter, std::vector< std::pair<EvtCyclic3::Pair,EvtCyclic3::Pair> >& angAndResPairs);
62 std::map<EvtId, std::vector<EvtDalitzDecayInfo> > _dalitztable;
63 std::vector<std::string> _readFiles;
65 EvtDalitzTable(const EvtDalitzTable&);
66 EvtDalitzTable& operator=(const EvtDalitzTable&);
68 //to calculate probMax
69 double calcProbMax(EvtDalitzPlot dp, EvtDalitzDecayInfo* model);
70 double calcProb(EvtDalitzPoint point, EvtDalitzDecayInfo* model);