Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtDalitzTable.hh
1 //--------------------------------------------------------------------------
2 //
3 // Environment:
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.
7 //
8 // Copyright Information: See EvtGen/COPYRIGHT
9 //      Copyright (C) 1998      Caltech, UCSB
10 //
11 // Module: EvtGen/EvtGenericDalitz.hh
12 //
13 // Description: Model to describe a generic dalitz decay
14 //
15 // Modification history:
16 //
17 //    DCC     16 December, 2011         Module created
18 //
19 //------------------------------------------------------------------------
20
21 #ifndef EVTDALITZTABLE_HPP
22 #define EVTDALITZTABLE_HPP
23
24 #include "EvtGenModels/EvtDalitzDecayInfo.hh"
25 #include "EvtGenBase/EvtId.hh"
26
27 #include "EvtGenBase/EvtDalitzReso.hh"
28 #include "EvtGenBase/EvtDalitzPlot.hh"
29 #include "EvtGenBase/EvtCyclic3.hh"
30 #include "EvtGenBase/EvtSpinType.hh"
31
32 #include <map>
33 #include <string>
34 #include <vector>
35
36 class EvtDalitzTable {
37 public:
38
39   static EvtDalitzTable* getInstance(const std::string dec_name="", bool verbose=true);
40
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);
44
45   void addDecay(EvtId parent, const EvtDalitzDecayInfo& dec);
46   void copyDecay(EvtId parent, EvtId* daughters, EvtId copy, EvtId* copyd);
47
48   std::vector<EvtDalitzDecayInfo> getDalitzTable(const EvtId& parent);
49
50 protected:
51
52   EvtDalitzTable();
53   ~EvtDalitzTable();
54
55 private:
56
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);
61
62   std::map<EvtId, std::vector<EvtDalitzDecayInfo> > _dalitztable;
63   std::vector<std::string> _readFiles;
64
65   EvtDalitzTable(const EvtDalitzTable&);
66   EvtDalitzTable& operator=(const EvtDalitzTable&);
67
68   //to calculate probMax
69   double calcProbMax(EvtDalitzPlot dp, EvtDalitzDecayInfo* model);
70   double calcProb(EvtDalitzPoint point, EvtDalitzDecayInfo* model);
71 };
72
73 #endif