#ifndef _PANGULARDISTRIBUTION_H_
#define _PANGULARDISTRIBUTION_H_
#include "TF1.h"
#include "TF2.h"
#include "TGraph.h"
#include "TSpline.h"
#include "PDistribution.h"
#include "PKinematics.h"
#define MAX_ANG_NUM 10
class PAngularDistribution : public PDistribution {
public:
PAngularDistribution();
PAngularDistribution(const Char_t *id, const Char_t *de);
PDistribution* Clone(const char *delme=NULL) const;
Bool_t Init(void);
Bool_t Prepare(void);
Bool_t Finalize(void);
Bool_t IsNotRejected(void);
Bool_t CheckAbort(void);
Bool_t SampleAngle(void);
void SetAngleFunction(TF1 *f) {angles1=f;};
void SetAngleFunction(TF2 *f) {angles2=f;};
void SetAngleFunction(TGraph *f, Bool_t useSpline=kFALSE,
Bool_t useSymmetry=kFALSE) {
anglesg = f;
spline = useSpline;
reflection_symmetry = useSymmetry;
if (spline) g_spline = new TSpline3("", f);
};
void SetAngleFunction(TH1 *f) {anglesh = f;};
void SetRotate(Bool_t t) {rotate = t;};
void NeverAbort(Bool_t t) {never_abort = t;};
void ForceRejectionMethod(Bool_t t) {always_reject = t;};
void Print(const Option_t *delme=NULL) const;
virtual Double_t Eval(Double_t x, Double_t y = 0, Double_t z = 0, Double_t t = 0) const;
virtual Double_t EvalPar(const Double_t *x, const Double_t *params);
virtual double SamplePolarAngle(double r = 0);
Bool_t direct_sampling_possible, direct_sampling_done;
protected:
TF1 *angles1;
TF2 *angles2;
TH1 *anglesh;
TGraph *anglesg;
TSpline3 *g_spline;
PParticle *reference;
PParticle *base_reference;
PParticle *primary;
PParticle *parent;
PParticle *align;
PParticle *mass_reference, *daughter[MAX_ANG_NUM];
PParticle *beam;
PParticle *target;
PParticle *ang_reference;
int n_daughters;
Bool_t check_abort, never_abort, always_reject;
Bool_t rotate;
Bool_t align_is_daughter;
Bool_t reflection_symmetry;
Bool_t spline;
PParticle primary_tmp, reference_tmp,
ang_tmp;
Bool_t Rotate(Int_t);
Bool_t RotateBack(Int_t);
Double_t q_value;
Double_t weight_max;
ClassDef(PAngularDistribution, 0)
};
#endif
PAngularDistribution.h:10 PAngularDistribution.h:11 PAngularDistribution.h:12 PAngularDistribution.h:13 PAngularDistribution.h:14 PAngularDistribution.h:15 PAngularDistribution.h:16 PAngularDistribution.h:17 PAngularDistribution.h:18 PAngularDistribution.h:19 PAngularDistribution.h:20 PAngularDistribution.h:21 PAngularDistribution.h:22 PAngularDistribution.h:23 PAngularDistribution.h:24 PAngularDistribution.h:25 PAngularDistribution.h:26 PAngularDistribution.h:27 PAngularDistribution.h:28 PAngularDistribution.h:29 PAngularDistribution.h:30 PAngularDistribution.h:31 PAngularDistribution.h:32 PAngularDistribution.h:33 PAngularDistribution.h:34 PAngularDistribution.h:35 PAngularDistribution.h:36 PAngularDistribution.h:37 PAngularDistribution.h:38 PAngularDistribution.h:39 PAngularDistribution.h:40 PAngularDistribution.h:41 PAngularDistribution.h:42 PAngularDistribution.h:43 PAngularDistribution.h:44 PAngularDistribution.h:45 PAngularDistribution.h:46 PAngularDistribution.h:47 PAngularDistribution.h:48 PAngularDistribution.h:49 PAngularDistribution.h:50 PAngularDistribution.h:51 PAngularDistribution.h:52 PAngularDistribution.h:53 PAngularDistribution.h:54 PAngularDistribution.h:55 PAngularDistribution.h:56 PAngularDistribution.h:57 PAngularDistribution.h:58 PAngularDistribution.h:59 PAngularDistribution.h:60 PAngularDistribution.h:61 PAngularDistribution.h:62 PAngularDistribution.h:63 PAngularDistribution.h:64 PAngularDistribution.h:65 PAngularDistribution.h:66 PAngularDistribution.h:67 PAngularDistribution.h:68 PAngularDistribution.h:69 PAngularDistribution.h:70 PAngularDistribution.h:71 PAngularDistribution.h:72 PAngularDistribution.h:73 PAngularDistribution.h:74 PAngularDistribution.h:75 PAngularDistribution.h:76 PAngularDistribution.h:77 PAngularDistribution.h:78 PAngularDistribution.h:79 PAngularDistribution.h:80 PAngularDistribution.h:81 PAngularDistribution.h:82 PAngularDistribution.h:83 PAngularDistribution.h:84 PAngularDistribution.h:85 PAngularDistribution.h:86 PAngularDistribution.h:87 PAngularDistribution.h:88 PAngularDistribution.h:89 PAngularDistribution.h:90 PAngularDistribution.h:91 PAngularDistribution.h:92 PAngularDistribution.h:93 PAngularDistribution.h:94 PAngularDistribution.h:95 PAngularDistribution.h:96 PAngularDistribution.h:97