78 cout <<
"DalitzArea::DalitzArea:" 79 <<
"\n Sorry, can only deal with 3 and 4 body decays. " 80 <<
"\n Please improve me so I can deal with decays like this: " 82 cout <<
" I'll crash now." << endl;
83 throw "DalitzArea: \"I'm no superman\"";
94 cout <<
"DalitzArea::DalitzArea:" 95 <<
"\n Sorry, can only deal with 3 or 4 body decays. " 96 <<
"\n Please improve me so I can deal with decays like this: " 98 cout <<
" I'll crash now." << endl;
99 throw "DalitzArea: \"I'm no superman\"";
130 double safetyFactor=1;
149 for(map<DalitzCoordKey, DalitzCoordinate*>::const_iterator
152 double psMin =
_pat.
sijMin(it->first)/safetyFactor;
153 double psMax =
_pat.
sijMax(it->first)*safetyFactor;
155 if(it->second->min() < psMin){
156 it->second->setMin(psMin);
158 if(it->second->max() > psMax){
159 it->second->setMax(psMax);
167 for(map<DalitzCoordKey, DalitzCoordinate*>::const_iterator
170 double psMin =
_pat.
sijMin(it->first)/safetyFactor;
171 double psMax =
_pat.
sijMax(it->first)*safetyFactor;
173 it->second->setMin(psMin);
174 it->second->setMax(psMax);
188 for(
unsigned int i=0; i <
_pat.
size(); i++){
189 if( abs(
_pat[i]) != abs(p[i]))
return false;
221 for(map<DalitzCoordKey, DalitzCoordinate* >::const_iterator
224 double val = evt.
sij(it->first);
225 if(val < it->
second->min() || val >= it->second->max())
return false;
234 double val = dc.
val();
242 for(
unsigned int i=0; i < dcList.size(); i++){
262 for(map<DalitzCoordKey, DalitzCoordinate*>::const_iterator it =
_coords.begin();
267 p *= (it->second->max() - it->second->min());
293 if(c4b.phaseSpaceFactor() <=0){
294 if(
false)cout <<
" for \n " 295 << t01 <<
"( " <<
_t01 <<
"), \n " 296 << s12 <<
"( " <<
_s12 <<
"), \n " 297 << s23 <<
"( " <<
_s23 <<
"), \n " 298 << s34 <<
"( " <<
_s34 <<
"), \n " 299 << t40 <<
"( " <<
_t40 <<
"), \n " 300 <<
" outside phase space!! " 306 cout <<
"WARNING DalitzArea::make4Event()" 307 <<
" making the event failed at 'new DalitzEvent(...)'" 308 <<
" this shouldn't really happen." 322 cout <<
"ERROR in DalitzArea::makeEvent() can only make events" 323 <<
" with 3 or 4 daughters. You want : " <<
_pat 330 cout <<
" ERROR DalitzArea::make3Event(): I don't work, yet. " 331 <<
"\n Please improve me. Sorry, will have to crash, now" 333 throw "no making 3 body events in DalitzArea, yet";
360 map<DalitzCoordKey, DalitzCoordinate*>::iterator it =
_coords.find(c);
362 cout <<
"ERROR: DalitzArea::setCoordinate failed to set coordinate " 372 std::vector<DalitzArea> v;
380 cout <<
"ERROR in DalitzArea::split_in_all_dimensions" 382 <<
"\n\t Won't split, will return original box." 390 std::vector<DalitzArea> v;
395 std::vector<DalitzCoordinate> vs12 =
_s12.
split(n);
396 std::vector<DalitzCoordinate> vs23 =
_s23.
split(n);
398 for(
unsigned int i12 = 0; i12 < vs12.size(); i12++){
399 for(
unsigned int i23 = 0; i23 < vs23.size(); i23++){
414 std::vector<DalitzArea> v;
420 std::vector<DalitzCoordinate> vt01 =
_t01.
split(n);
421 std::vector<DalitzCoordinate> vs12 =
_s12.
split(n);
422 std::vector<DalitzCoordinate> vs23 =
_s23.
split(n);
423 std::vector<DalitzCoordinate> vs34 =
_s34.
split(n);
424 std::vector<DalitzCoordinate> vt40 =
_t40.
split(n);
426 for(
unsigned int i01 = 0; i01 < vt01.size(); i01++){
427 for(
unsigned int i12 = 0; i12 < vs12.size(); i12++){
428 for(
unsigned int i23 = 0; i23 < vs23.size(); i23++){
429 for(
unsigned int i34 = 0; i34 < vs34.size(); i34++){
430 for(
unsigned int i40 = 0; i40 < vt40.size(); i40++){
446 cout <<
"after splitting, n = " << v.size() << endl;
454 os <<
"Area size: " <<
size();
455 for(std::map<DalitzCoordKey, DalitzCoordinate*>::const_iterator
459 os <<
"\n " << *(it->second);
std::vector< DalitzArea > split_in_all_dimensions(int n=2) const
double sijMax(const MINT::PolymorphVector< int > &indices) const
void setPattern(const DalitzEventPattern &pat)
std::ostream & operator<<(std::ostream &os, const DalitzArea &da)
bool setRnd(TRandom *rnd=gRandom)
void setAllLimitsToPhaseSpaceArea(double safetyFactor=1.0)
bool isInside(const IDalitzEvent &evt) const
virtual double phaseSpace() const
std::vector< DalitzArea > split_in_all_dim_4body(int n=2) const
std::vector< DalitzCoordinate > split(int n) const
virtual double sij(const MINT::PolymorphVector< int > &indices) const =0
MINT::counted_ptr< DalitzEvent > makeEventForOwner() const
void makeCoordinateMap() const
void encloseInPhaseSpaceArea(double safetyFactor=1.0)
bool setCoordinate(const DalitzCoordinate &c)
MINT::counted_ptr< DalitzEvent > make3Event() const
bool compatiblePattern(const DalitzEventPattern &p) const
std::map< DalitzCoordKey, DalitzCoordinate * > _coords
double sijMin(const MINT::PolymorphVector< int > &indices) const
static const double second
virtual const DalitzEventPattern & eventPattern() const =0
unsigned int size() const
std::vector< DalitzArea > split_in_all_dim_3body(int n=2) const
DalitzArea & operator=(const DalitzArea &other)
void print(std::ostream &os=std::cout) const
void setMinMax(double min, double max)
MINT::counted_ptr< DalitzEvent > make4Event() const