9 |
#include <TVector3.h> |
#include <TVector3.h> |
10 |
#include <TVector2.h> |
#include <TVector2.h> |
11 |
#include <TMath.h> |
#include <TMath.h> |
12 |
#include <TRandom3.h> |
#include <TRandom.h> |
13 |
|
#include <TF1.h> |
14 |
|
|
15 |
#include "PamRootManager.h" |
#include "PamRootManager.h" |
16 |
|
|
79 |
// gen methods |
// gen methods |
80 |
|
|
81 |
void GenPosition(Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax){ |
void GenPosition(Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax){ |
82 |
SetPosition(frnd->Uniform(xmin,xmax),frnd->Uniform(ymin,ymax),frnd->Uniform(zmin,zmax)); } |
SetPosition(frandom->Uniform(xmin,xmax),frandom->Uniform(ymin,ymax),frandom->Uniform(zmin,zmax)); } |
|
|
|
|
void GenDirection(Double_t thetamin, Double_t thetamax, Double_t phimin, Double_t phimax){ |
|
|
SetDirection(frnd->Uniform(thetamin,thetamax),frnd->Uniform(phimin,phimax)); } |
|
83 |
|
|
84 |
|
void GenDirection(Double_t thetamin, Double_t thetamax, Double_t phimin, Double_t phimax){ |
85 |
|
SetDirection(ftheta->GetRandom(thetamin, thetamax), frandom->Uniform(phimin,phimax)); |
86 |
|
} |
87 |
//flat spectra generator |
//flat spectra generator |
88 |
void GenSpe(Double_t PEmin, Double_t PEmax, Bool_t isEnergy=kFALSE); |
void GenSpe(Double_t PEmin, Double_t PEmax, Bool_t isEnergy=kFALSE); |
89 |
//power law spectra, gamma - differential spectral index |
//power law spectra, gamma - differential spectral index |
90 |
void GenSpe(Double_t PEmin, Double_t PEmax, Double_t gamma, Bool_t isEnergy=kFALSE); |
void GenSpe(Double_t PEmin, Double_t PEmax, Double_t gamma, Bool_t isEnergy=kFALSE); |
91 |
|
void GenSpe_Flat(Double_t PEmin, Double_t PEmax, Double_t gamma, Bool_t isEnergy=kFALSE); |
92 |
|
void GenSpe_3par(Double_t PEmin, Double_t PEmax, Double_t a, Double_t b, Double_t c); |
93 |
|
void GenSphericalPhiThe(); // cecilia // flusso istropo // sets phi the |
94 |
|
void GenSphPhiThe(Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, |
95 |
|
Double_t zmin, Double_t zmax); // flusso isotropo entro S2 S3 |
96 |
|
// sets position and phi the |
97 |
|
|
98 |
|
|
99 |
// get methods |
// get methods |
100 |
Int_t GetParticle(){ return fprim.fPDG; }; |
Int_t GetParticle(){ return fprim.fPDG; }; |
110 |
|
|
111 |
Bool_t Getgood(){ return fprim.fGOOD; }; |
Bool_t Getgood(){ return fprim.fGOOD; }; |
112 |
|
|
113 |
|
//initialize random |
114 |
|
void SetRandom(TRandom* random){ |
115 |
|
frandom = random; |
116 |
|
} |
117 |
|
|
118 |
//work with collection of primaries |
//work with collection of primaries |
119 |
|
|
120 |
void Register(){ |
void Register(){ |
134 |
Double_t KinEToMomentum(Double_t E0); |
Double_t KinEToMomentum(Double_t E0); |
135 |
Double_t MomentumToRig(Double_t P0) { return P0/fcharge; }; |
Double_t MomentumToRig(Double_t P0) { return P0/fcharge; }; |
136 |
Double_t RigToMomentum(Double_t R0){ return R0*fcharge; }; |
Double_t RigToMomentum(Double_t R0){ return R0*fcharge; }; |
137 |
|
Double_t function3par(Double_t xx, Double_t a, Double_t b, Double_t c){return 5.*pow((xx + b * exp(-c * sqrt(xx))),-a);}; |
138 |
|
|
139 |
// data members |
// data members |
140 |
TVirtualMCStack* fStack; |
TVirtualMCStack* fStack; |
143 |
Double_t fmass; |
Double_t fmass; |
144 |
Double_t fcharge; |
Double_t fcharge; |
145 |
TClonesArray* fprimColl; |
TClonesArray* fprimColl; |
146 |
|
TRandom* frandom; // Class is not a owner of this object |
147 |
TRandom3 * frnd; |
TF1* ftheta; // To generate sherical distributhin in theta-angle |
148 |
|
|
149 |
ClassDef(PamVMCPrimaryGenerator,1) //PamVMCPrimaryGenerator |
ClassDef(PamVMCPrimaryGenerator,1) //PamVMCPrimaryGenerator |
150 |
}; |
}; |