Pluto v6.3.0
Loading...
Searching...
No Matches
PComplexBreitWigner.h
Go to the documentation of this file.
1// Author: I. Froehlich
2// Written: 28.6.2007
3// Revised:
4
5#ifndef _PCOMPLEXBREITWIGNER_H_
6#define _PCOMPLEXBREITWIGNER_H_
7
8#define COMPLEX_MAX_DECAYCHANNELS 30
9#define COMPLEX_MAX_TERMS 10
10
11#include "TF1.h"
12#include "TF2.h"
13#include "PBreitWigner.h"
14
15
17
18 public:
20 PComplexBreitWigner(const Char_t *id, const Char_t *de, Int_t key);
21 PDistribution* Clone(const char *delme=NULL) const;
22
24 Double_t GetWeight(Double_t *mass, Int_t *didx=NULL);
25 TComplex GetAmplitude(Double_t *mass, Int_t *didx=NULL);
26
28 Bool_t SampleMass(Double_t *mass, Int_t *didx=NULL);
29
30 virtual Double_t Eval(Double_t x, Double_t y = 0, Double_t z = 0, Double_t t = 0) const;
31 virtual Double_t EvalPar(const Double_t *x, const Double_t *params);
32 //TF1 wrapper
33
34 void SetUpdateAmplitude(int i) {
35 updateAmplitude=i;
36 };
37
38 void AddInterference(int idx, int key, int didx, double ampl, double phase);
39 void AddAmplitude(int idx, double ampl, double phase);
40
41 virtual void Print(const Option_t *delme=NULL) const ; //Debug info
42
43 private:
44
45 void ReadModes(void);
46 void ReadModels(void);
47 int readModesDone,readModelsDone,updateAmplitude;
48 TComplex GetAmplitudeLocal(Double_t *mass, Int_t num);
49
50 Int_t num_decaychannels;
51
52 PChannelModel *p[COMPLEX_MAX_DECAYCHANNELS][COMPLEX_MAX_TERMS+1]; //Amplitude models for coherent additions
53 Int_t int_index[COMPLEX_MAX_DECAYCHANNELS]; //Index numbers of decaychannels
54 Int_t num_terms[COMPLEX_MAX_DECAYCHANNELS];
55 Double_t int_phase[COMPLEX_MAX_DECAYCHANNELS][COMPLEX_MAX_TERMS+1]; //Phase for each term
56 Double_t int_ampl[COMPLEX_MAX_DECAYCHANNELS][COMPLEX_MAX_TERMS+1]; //Ampl for each term
57 Int_t int_key[COMPLEX_MAX_DECAYCHANNELS][COMPLEX_MAX_TERMS+1]; //Key pointing to the term
58 Int_t int_didx[COMPLEX_MAX_DECAYCHANNELS][COMPLEX_MAX_TERMS+1]; //Target didx
59
60 ClassDef(PComplexBreitWigner, 0) // Breit Wigner (complex version) with mass-dependent width
61};
62
63#endif
64
65
#define COMPLEX_MAX_DECAYCHANNELS
#define COMPLEX_MAX_TERMS
PDistribution * Clone(const char *delme=NULL) const
TComplex GetAmplitude(Double_t *mass, Int_t *didx=NULL)
PComplexBreitWigner(const Char_t *id, const Char_t *de, Int_t key)
virtual void Print(const Option_t *delme=NULL) const
void AddAmplitude(int idx, double ampl, double phase)
Bool_t SampleMass(Double_t *mass, Int_t *didx=NULL)
void AddInterference(int idx, int key, int didx, double ampl, double phase)
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Double_t GetWeight(Double_t *mass, Int_t *didx=NULL)
virtual Double_t EvalPar(const Double_t *x, const Double_t *params)
virtual Bool_t SampleMass(void)
virtual Double_t GetWeight(void)
Double_t mass