1 #ifndef DALITZ_BW_AREA_HH 2 #define DALITZ_BW_AREA_HH 12 #include "TLorentzVector.h" 53 std::pair<DalitzCoordinate, MINT::counted_ptr<IGenFct> >&
55 const std::pair<DalitzCoordinate, MINT::counted_ptr<IGenFct> >&
58 std::pair<DalitzCoordinate, MINT::counted_ptr<IGenFct> >&
59 sf(
int i,
int j,
int k);
60 const std::pair<DalitzCoordinate, MINT::counted_ptr<IGenFct> >&
61 sf(
int i,
int j,
int k)
const;
63 std::pair<DalitzCoordinate, MINT::counted_ptr<IGenFct> >&
65 const std::pair<DalitzCoordinate, MINT::counted_ptr<IGenFct> >&
66 sf(
int i,
int j)
const;
76 std::vector<TLorentzVector>&
mapP4(
const std::vector<TLorentzVector>& v_in
78 , std::vector<TLorentzVector>& v_out
80 unsigned int n = v_in.size();
87 for(
unsigned int i=0; i < n; i++){
88 int mappedIndex = mapping[i];
89 if(mappedIndex < 0 || mappedIndex + 1 > (
int) n){
90 std::cout <<
"ERROR in DalitzBWArea::mapP4()" 91 <<
"\n Index out of range: " << mappedIndex
92 <<
" not in [0, " << n-1
94 throw "index out of range.";
96 v_out[mappedIndex] = v_in[i];
100 std::vector<TLorentzVector>
mapP4(
const std::vector<TLorentzVector>& v_in
103 std::vector<TLorentzVector> v_out(v_in.size());
104 return mapP4(v_in, mapping, v_out);
119 mutable std::map<DalitzCoordKey , std::pair<DalitzCoordinate, MINT::counted_ptr<IGenFct> > >
_coords;
121 mutable std::map<DalitzCoordKey , std::pair<DalitzCoordinate, MINT::counted_ptr<IGenFct> > >
_mappedCoords;
128 return sf(2,3,4).first;
131 return sf(1,2).first;
134 return sf(2,3).first;
137 return sf(3,4).first;
140 return sf(1,2,3).first;
144 return sf(2,3,4).first;
147 return sf(1,2).first;
150 return sf(2,3).first;
153 return sf(3,4).first;
156 return sf(1,2,3).first;
160 return sf(2,3,4).second;
163 return sf(1,2).second;
166 return sf(2,3).second;
169 return sf(3,4).second;
172 return sf(1,2,3).second;
194 bool isInside(
const std::vector<DalitzCoordinate>& dcList)
const;
211 bool setRnd(TRandom* rnd=gRandom);
213 void print(std::ostream& os = std::cout)
const;
std::map< DalitzCoordKey, std::pair< DalitzCoordinate, MINT::counted_ptr< IGenFct > > > _mappedCoords
void print(std::ostream &os=std::cout) const
std::pair< DalitzCoordinate, MINT::counted_ptr< IGenFct > > & sf(const DalitzCoordinate &c)
MINT::counted_ptr< IGenFct > f_t40()
MINT::counted_ptr< IGenFct > f_s23()
double MC4IntegralNoTransform(double &prec) const
MINT::counted_ptr< DalitzEvent > try3Event(const Permutation &mapping=Permutation::unity()) const
MINT::counted_ptr< IGenFct > f_t01()
double genValueRho(const IDalitzEvent *evtPtr) const
const DalitzCoordinate & t40() const
MINT::counted_ptr< DalitzEvent > tryEventForOwner(const Permutation &mapping=Permutation::unity()) const
bool setRnd(TRandom *rnd=gRandom)
void setFcn(const DalitzCoordinate &c, const MINT::counted_ptr< IGenFct > &fcn)
MINT::counted_ptr< IGenFct > f_s12()
void setUnWeightPs(bool doSo=true)
const DalitzCoordinate & s23() const
double MC4Integral(double &prec) const
DalitzBWArea & operator=(const DalitzBWArea &other)
std::ostream & operator<<(std::ostream &os, const DalitzBWArea &da)
std::vector< TLorentzVector > & mapP4(const std::vector< TLorentzVector > &v_in, const Permutation &mapping, std::vector< TLorentzVector > &v_out) const
bool checkIntegration() const
void makeCoord(int i, int j)
MINT::counted_ptr< DalitzEvent > try3EventWithPhaseSpace(double &maxWeight, const Permutation &mapping=Permutation::unity()) const
static const Permutation & unity()
double genValue(const IDalitzEvent *evtPtr) const
MINT::counted_ptr< IGenFct > f_s34()
void setPattern(const DalitzEventPattern &pat)
std::map< DalitzCoordKey, std::pair< DalitzCoordinate, MINT::counted_ptr< IGenFct > > > _coords
MINT::counted_ptr< DalitzEvent > try4EventWithPhaseSpace(double &maxWeight, const Permutation &mapping=Permutation::unity()) const
const DalitzCoordinate & s12() const
int ResonanceConfigurationNumber() const
std::vector< TLorentzVector > mapP4(const std::vector< TLorentzVector > &v_in, const Permutation &mapping) const
const DalitzCoordinate & t01() const
MINT::counted_ptr< DalitzEvent > try4Event(const Permutation &mapping=Permutation::unity()) const
const DalitzCoordinate & s34() const
bool isInside(const DalitzEvent &evt) const
MINT::counted_ptr< DalitzEvent > tryFlat4EventWithPhaseSpace(double &maxWeight, const Permutation &mapping=Permutation::unity()) const
MINT::counted_ptr< DalitzEvent > make4EventWithPhaseSpace(const Permutation &mapping=Permutation::unity()) const