MINT2
MappedDalitzArea.h
Go to the documentation of this file.
1 #ifndef MAPPED_DALITZ_AREA_HH
2 #define MAPPED_DALITZ_AREA_HH
3 // author: Jonas Rademacker (Jonas.Rademacker@bristol.ac.uk)
4 // status: Mon 9 Feb 2009 19:17:57 GMT
5 
6 #include "Mint/DalitzArea.h"
9 #include "Mint/Permutation.h"
10 #include "Mint/DalitzEvent.h"
11 
12 #include "TRandom.h"
13 #include "TLorentzVector.h"
14 
15 #include "Mint/counted_ptr.h"
16 
17 #include <vector>
18 #include <iostream>
19 
21  TRandom* _rnd;
22 
24 
26 
27  std::vector<DalitzCoordinate> _limits;
28 
30 
31  void setup();
32  void findMapping();
33  void applyLimits();
34 
35  bool allConsecutive() const;
36  bool allStandardised() const;
37  static std::vector<TLorentzVector> mapP4(const DalitzEvent& evt
38  , const Permutation& mapping
39  );
40  static std::vector<TLorentzVector>& mapP4(const DalitzEvent& evt
41  , const Permutation& mapping
42  , std::vector<TLorentzVector>& p4
43  );
44  public:
47  , TRandom* rnd=gRandom);
49  , const DalitzCoordinate& oneLimit
50  , TRandom* rnd=gRandom);
52  , const DalitzCoordinate& oneLimit
53  , const DalitzCoordinate& otherLimit
54  , TRandom* rnd=gRandom);
56  , const std::vector<DalitzCoordinate>& limits
57  , TRandom* rnd=gRandom);
58 
59  MappedDalitzArea(const MappedDalitzArea& other);
60 
61  virtual ~MappedDalitzArea();
62 
65  double scale1,
66  double scale2,
67  double scale3,
68  double scale4
69  ) const;
70 
71  std::vector<DalitzCoordinate> centre() const;
72  bool isInside(const DalitzEvent& evt) const;
73  bool isInside(const DalitzCoordinate& dc) const;
74  bool isInside(const std::vector<DalitzCoordinate>& dcList) const;
75 
76  double size() const{
77  return _area.size();}
78 
79  void print(std::ostream& os = std::cout) const;
80 
83  }
84  std::vector<MappedDalitzArea> split(unsigned int nWays) const;
85  std::vector<MappedDalitzArea> split(unsigned int limitIndex
86  , unsigned int nWays) const;
87 
88  std::vector<MappedDalitzArea> splitIfWiderThan(double maxWidth) const;
89  std::vector<MappedDalitzArea> splitIfWiderThan(unsigned int limitIndex
90  , double maxWidth) const;
91 
92 
93  DalitzCoordinate limit_s(const std::vector<int>& indices) const;
94  DalitzCoordinate limit_s(int i, int j, int k=-1) const;
95 
96  bool setRnd(TRandom* rnd=gRandom);
97 
98  bool similar(const MappedDalitzArea& ma) const;
99  bool less(const MappedDalitzArea& ma) const;
100 
102 
103  bool operator<(const MappedDalitzArea& rhs) const;
104  bool operator<=(const MappedDalitzArea& rhs) const;
105  bool operator>(const MappedDalitzArea& rhs) const;
106  bool operator>=(const MappedDalitzArea& rhs) const;
107 
108  bool operator==(const MappedDalitzArea& ma) const;
109  bool operator!=(const MappedDalitzArea& ma) const;
110 
111 };
112 
113 std::ostream& operator<<(std::ostream& os, const MappedDalitzArea& mda);
114 
115 #endif
116 //
bool operator<=(const MappedDalitzArea &rhs) const
static std::vector< TLorentzVector > mapP4(const DalitzEvent &evt, const Permutation &mapping)
bool operator<(const MappedDalitzArea &rhs) const
bool operator>(const MappedDalitzArea &rhs) const
bool operator>=(const MappedDalitzArea &rhs) const
double size() const
Definition: DalitzArea.cpp:251
std::vector< DalitzCoordinate > _limits
std::vector< MappedDalitzArea > split(unsigned int nWays) const
std::vector< MappedDalitzArea > splitIfWiderThan(double maxWidth) const
DalitzEventPattern _pat
bool allConsecutive() const
void encloseInPhaseSpaceArea(double safetyFactor=1.0)
Definition: DalitzArea.cpp:147
DalitzEventPattern _mappedPat
bool allStandardised() const
MINT::counted_ptr< DalitzEvent > makeEventForOwner() const
std::vector< DalitzCoordinate > centre() const
bool operator==(const MappedDalitzArea &ma) const
bool similar(const MappedDalitzArea &ma) const
MappedDalitzArea & operator=(const MappedDalitzArea &other)
bool setRnd(TRandom *rnd=gRandom)
bool operator!=(const MappedDalitzArea &ma) const
void encloseInPhaseSpaceArea()
bool less(const MappedDalitzArea &ma) const
double size() const
bool isInside(const DalitzEvent &evt) const
Permutation _mapping
DalitzCoordinate limit_s(const std::vector< int > &indices) const
Permutation _inverseMapping
void print(std::ostream &os=std::cout) const
std::ostream & operator<<(std::ostream &os, const MappedDalitzArea &mda)