]>
Commit | Line | Data |
---|---|---|
6671656e | 1 | #ifndef THBTPROCESSOR_H |
2 | #define THBTPROCESSOR_H | |
4c90f2a0 | 3 | /*******************************************************/ |
4 | //Author Piotr Krzysztof Skowronski e-mial: Piotr.Skowronski@cern.ch | |
5 | // C++ Wrapper Class for fortran made HBT Processor written by Lanny Ray | |
6 | // | |
7 | // Comunication is done via COMMON BLOCKS declared in HBTprocCOMMON.h | |
8 | // using cfortran.h routines | |
9 | // User should use class AliGenHBTprocessor and all their interface | |
10 | // see there for more description | |
11 | // | |
6671656e | 12 | |
13 | #include <TGenerator.h> | |
14 | #include "HBTprocCOMMON.h" | |
15 | ||
16 | ||
6671656e | 17 | class THBTprocessor: public TGenerator |
18 | { | |
19 | public: | |
4c90f2a0 | 20 | THBTprocessor(); |
6671656e | 21 | virtual ~THBTprocessor() {}; |
22 | ||
23 | virtual void Initialize(); | |
24 | virtual void GenerateEvent(); | |
25 | virtual void PrintEvent(); | |
26 | virtual Int_t ImportParticles(TClonesArray *particles, Option_t *option=""); | |
27 | ||
28 | //Set/Gets | |
4c90f2a0 | 29 | //comprehensive description off all these methods |
30 | //can be found in proper methods of AliGenHBTprocessor | |
31 | ||
6671656e | 32 | virtual void SetTrackRejectionFactor(Float_t trf = 1.0) {PARAMETERS.trk_accep = trf;} |
33 | virtual void SetRefControl(Int_t rc =2) {PARAMETERS.ref_control = rc;} | |
34 | virtual void SetPIDs(Int_t pid1 = 8,Int_t pid2 = 9) {PARAMETERS.pid[0]=pid1; PARAMETERS.pid[1]=pid2;} | |
35 | virtual void SetNPIDtypes(Int_t npidt = 2){PARAMETERS.n_pid_types = npidt;} | |
36 | virtual void SetDeltap(Float_t deltp = 0.1) {PARAMETERS.deltap=deltp; } | |
37 | virtual void SetMaxIterations(Int_t maxiter = 50) {PARAMETERS.maxit = maxiter;} | |
38 | virtual void SetDelChi(Float_t dc = 0.1){PARAMETERS.delchi = dc;} | |
39 | virtual void SetIRand(Int_t irnd = 76564) {PARAMETERS.irand = irnd;} | |
40 | virtual void SetLambda(Float_t lam = 0.6) { PARAMETERS.lambda = lam;} | |
41 | virtual void SetR1d(Float_t r = 7.0) {PARAMETERS.R_1d=r;} | |
42 | virtual void SetRSide(Float_t rs = 6.0) {PARAMETERS.Rside=rs;} | |
43 | virtual void SetROut(Float_t ro = 7.0) {PARAMETERS.Rout=ro;} | |
44 | virtual void SetRLong(Float_t rl = 4.0) {PARAMETERS.Rlong=rl;} | |
45 | virtual void SetRPerp(Float_t rp = 6.0) {PARAMETERS.Rperp=rp;} | |
46 | virtual void SetRParallel(Float_t rprl = 4.0) {PARAMETERS.Rparallel=rprl;} | |
47 | virtual void SetR0(Float_t r0 = 4.0) {PARAMETERS.R0=r0;} | |
48 | virtual void SetQ0(Float_t q0 = 9.0) {PARAMETERS.Q0=q0;} | |
49 | virtual void SetSwitch1D(Int_t s1d = 3) {PARAMETERS.switch_1d = s1d;} | |
50 | virtual void SetSwitch3D(Int_t s3d = 0) {PARAMETERS.switch_3d = s3d;} | |
51 | virtual void SetSwitchType(Int_t st = 3) {PARAMETERS.switch_type = st;} | |
52 | virtual void SetSwitchCoherence(Int_t sc = 0) {PARAMETERS.switch_coherence = sc;} | |
53 | virtual void SetSwitchCoulomb(Int_t scol = 2) {PARAMETERS.switch_coulomb = scol;} | |
54 | virtual void SetSwitchFermiBose(Int_t sfb = 1) {PARAMETERS.switch_fermi_bose = sfb;} | |
55 | ||
56 | ||
57 | virtual void SetPtRange(Float_t ptmin = 0.1, Float_t ptmax = 0.98) //Pt in GeV/c | |
58 | { MESH.pt_min=ptmin;MESH.pt_max=ptmax;} | |
59 | ||
60 | virtual void SetPxRange(Float_t pxmin = -1.0, Float_t pxmax = 1.0) | |
61 | { MESH.px_min=pxmin;MESH.px_max=pxmax;} | |
62 | ||
63 | virtual void SetPyRange(Float_t pymin = -1.0, Float_t pymax = 1.0) | |
64 | { MESH.py_min=pymin;MESH.py_max=pymax;} | |
65 | ||
66 | virtual void SetPzRange(Float_t pzmin = -3.6, Float_t pzmax = 3.6) | |
67 | { MESH.pz_min=pzmin;MESH.pz_max=pzmax;} | |
68 | ||
69 | ||
70 | virtual void SetPhiRange(Float_t phimin = 0.0, Float_t phimax = 360.0) //Angle in degrees | |
71 | { MESH.phi_min=phimin;MESH.phi_max=phimax;} | |
72 | ||
73 | virtual void SetEtaRange(Float_t etamin = -1.5, Float_t etamax = 1.5) //Pseudorapidity !!!!!!!!! | |
74 | { MESH.eta_min=etamin;MESH.eta_max=etamax;} | |
75 | ||
76 | virtual void SetNPtBins(Int_t nptbin = 50){MESH.n_pt_bins=nptbin;} | |
77 | virtual void SetNPhiBins(Int_t nphibin = 50){MESH.n_phi_bins=nphibin;} | |
78 | virtual void SetNEtaBins(Int_t netabin = 50){MESH.n_eta_bins=netabin;} | |
79 | ||
80 | virtual void SetNPxBins(Int_t npxbin = 20){MESH.n_px_bins=npxbin;} | |
81 | virtual void SetNPyBins(Int_t npybin = 20){MESH.n_py_bins=npybin;} | |
82 | virtual void SetNPzBins(Int_t npzbin = 70){MESH.n_pz_bins=npzbin;} | |
83 | ||
84 | virtual void SetNBins1DFineMesh(Int_t n = 10){ MESH.n_1d_fine=n;} | |
85 | virtual void SetBinSize1DFineMesh(Float_t x=0.01){MESH.binsize_1d_fine=x;} | |
86 | ||
87 | virtual void SetNBins1DCoarseMesh(Int_t n =2 ){MESH.n_1d_coarse =n;} | |
88 | virtual void SetBinSize1DCoarseMesh(Float_t x=0.05){MESH.binsize_1d_coarse=x;} | |
89 | ||
90 | virtual void SetNBins3DFineMesh(Int_t n = 8){MESH.n_3d_fine =n;} | |
91 | virtual void SetBinSize3DFineMesh(Float_t x=0.01){MESH.binsize_3d_fine=x;} | |
92 | ||
93 | virtual void SetNBins3DCoarseMesh(Int_t n = 2){ MESH.n_3d_coarse=n;} | |
94 | virtual void SetBinSize3DCoarseMesh(Float_t x=0.08){MESH.binsize_3d_coarse=x;} | |
95 | ||
96 | virtual void SetNBins3DFineProjectMesh(Int_t n =3 ){ MESH.n_3d_fine_project=n;} | |
88cb7938 | 97 | |
98 | virtual void SetPrintFull(Int_t flag = 1){PARAMETERS.print_full=flag;} | |
99 | ||
100 | void DumpSettings(); | |
6671656e | 101 | protected: |
102 | ||
103 | private: | |
104 | ClassDef(THBTprocessor,0) | |
105 | }; | |
106 | ||
107 | #endif | |
4c90f2a0 | 108 | |
109 | /************************************************************** | |
110 | COMMENTS APROPOS HBTPROCESSOR FORTRAN CODE: | |
111 | ||
112 | SUBROUTINE INITIALIZE HAS TO BE OMITTED, IT RESETS (ZEROES) COMMON BLOCKS | |
113 | ||
114 | SUBROUTINE KINEMATICS HAS TO BE RENAMED EITHER IN MEVSIM OR IN PROCESSOR | |
115 | AS THEY HAVE IDENTICAL DECLARATIONS AND SOMTIMES IS USED THE BAD ONE IN CASE BOTH LIBRARIES ARE LOADED | |
116 | ||
117 | ****************************************************************/ |