evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtDalitzTable.hh
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
21 #ifndef EVTDALITZTABLE_HPP
22 #define EVTDALITZTABLE_HPP
23 
24 #include "EvtGenBase/EvtCyclic3.hh"
27 #include "EvtGenBase/EvtId.hh"
29 
31 
32 #include <map>
33 #include <string>
34 #include <vector>
35 
36 // Description: Model to describe a generic dalitz decay
37 
39  public:
40  static EvtDalitzTable* getInstance( const std::string dec_name = "",
41  bool verbose = true );
42 
43  bool fileHasBeenRead( const std::string dec_name );
44  void readXMLDecayFile( const std::string dec_name, bool verbose = true );
45  void checkParticle( std::string particle );
46 
47  void addDecay( EvtId parent, const EvtDalitzDecayInfo& dec );
48  void copyDecay( EvtId parent, EvtId* daughters, EvtId copy, EvtId* copyd );
49 
50  std::vector<EvtDalitzDecayInfo> getDalitzTable( const EvtId& parent );
51 
52  protected:
55 
56  private:
57  EvtDalitzReso getResonance( std::string shape, EvtDalitzPlot dp,
58  EvtCyclic3::Pair angPair,
59  EvtCyclic3::Pair resPair,
60  EvtSpinType::spintype spinType, double mass,
61  double width, double FFp, double FFr,
62  double alpha, double aLass, double rLass,
63  double BLass, double phiBLass, double RLass,
64  double phiRLass, double cutoffLass );
65  int getDaughterPairs(
66  EvtId* resDaughter, EvtId* daughter,
67  std::vector<std::pair<EvtCyclic3::Pair, EvtCyclic3::Pair>>& angAndResPairs );
68 
69  std::map<EvtId, std::vector<EvtDalitzDecayInfo>> _dalitztable;
70  std::vector<std::string> _readFiles;
71 
74 
75  //to calculate probMax
76  double calcProbMax( EvtDalitzPlot dp, EvtDalitzDecayInfo* model );
77  double calcProb( EvtDalitzPoint point, EvtDalitzDecayInfo* model );
78 };
79 
80 #endif
double calcProbMax(EvtDalitzPlot dp, EvtDalitzDecayInfo *model)
std::map< EvtId, std::vector< EvtDalitzDecayInfo > > _dalitztable
Definition: EvtId.hh:27
void addDecay(EvtId parent, const EvtDalitzDecayInfo &dec)
int getDaughterPairs(EvtId *resDaughter, EvtId *daughter, std::vector< std::pair< EvtCyclic3::Pair, EvtCyclic3::Pair >> &angAndResPairs)
EvtDalitzTable & operator=(const EvtDalitzTable &)
static EvtDalitzTable * getInstance(const std::string dec_name="", bool verbose=true)
void readXMLDecayFile(const std::string dec_name, bool verbose=true)
double calcProb(EvtDalitzPoint point, EvtDalitzDecayInfo *model)
EvtDalitzReso getResonance(std::string shape, EvtDalitzPlot dp, EvtCyclic3::Pair angPair, EvtCyclic3::Pair resPair, EvtSpinType::spintype spinType, double mass, double width, double FFp, double FFr, double alpha, double aLass, double rLass, double BLass, double phiBLass, double RLass, double phiRLass, double cutoffLass)
void copyDecay(EvtId parent, EvtId *daughters, EvtId copy, EvtId *copyd)
std::vector< EvtDalitzDecayInfo > getDalitzTable(const EvtId &parent)
bool fileHasBeenRead(const std::string dec_name)
std::vector< std::string > _readFiles
void checkParticle(std::string particle)