Pluto v6.3.0
Loading...
Searching...
No Matches
Ca40_breakup_macro.C
Go to the documentation of this file.
1/*************************************************************************************
2** **
3** Breakup Reaction: **
4** g+A -> D33+(A-1) -> Delta0+eta+(A-1) -> pi0+N+eta+(A-1) -> 2g+N+2g+(A-1) **
5** The scattering of a photon and a neutron inside 40Ca **
6** (This macro demonstrates how the model PFermiMomentumGA can be used) **
7** ***************** **
8** Author: **
9** Lilian Witthauer and Manuel Dieterle **
10** Date: **
11** April 2009 **
12** ****************** **
13** (All energies and masses in GeV) **
14** **
15*************************************************************************************/
16
17void Ca40_breakup_macro(Int_t EventNumber=10000, Double_t StartEBeam = 1.5, Double_t iter=500./1000.)
18{
19 char NameFile1[100];
20 Double_t EBeamMax = 1.508; // Maximum MAMI beam energy
21 Double_t EBeam = StartEBeam;
22 Int_t EBeamMeV = EBeam*1000;
23 Double_t DeltaEnergy;
24
25 makeDistributionManager()->Exec("nucleus_fermi:gamma");
26
27 Int_t i=0;
28
29 while (EBeam <= EBeamMax)
30 {
31 // Define projectile (g), target (40Ca), nucleus fragment (39Ca)
32 PParticle *GammaB = new PParticle("g",EBeam);
33 PParticle *Nucleus = new PParticle("40Ca");
34 PParticle *NucRest = new PParticle("39Ca");
35
36 // IS particle
37 PParticle *s = new PParticle(*GammaB+*Nucleus);
38
39 // Quasi-free sub-reaction:
40 PParticle *GammaB2 = new PParticle("g");
41 PParticle *QFtarget = new PParticle("n");
42 PParticle *s2 = new PParticle(*GammaB2+*QFtarget);
43
44 // Outgoing products of g-N scattering process:
45 PParticle *Delta = new PParticle("D0");
46 PParticle *Eta = new PParticle("eta");
47
48 PParticle *Pi0 = new PParticle("pi0");
49 PParticle *Neutron = new PParticle("n");
50
51 PParticle *GammaE1 = new PParticle("g");
52 PParticle *GammaE2 = new PParticle("g");
53 PParticle *GammaP1 = new PParticle("g");
54 PParticle *GammaP2 = new PParticle("g");
55
56 // Define group of particles of each step
57 PParticle *cc1[] = {s,NucRest,s2};
58 PParticle *cc2[] = {s2,Delta,Eta};
59 PParticle *cc3[] = {Delta,Pi0,Neutron};
60 PParticle *cc4[] = {Pi0,GammaP1,GammaP2};
61 PParticle *cc5[] = {Eta,GammaE1,GammaE2};
62
63 // Allocate groups to decay channel
64 PChannel *c1 = new PChannel(cc1,2);
65 PChannel *c2 = new PChannel(cc2,2);
66 PChannel *ccD0 = new PChannel(cc3,2);
67 PChannel *ccPi0 = new PChannel(cc4,2);
68 PChannel *ccEta = new PChannel(cc5,2);
69
70 // Allocate channels
71 PChannel *cc[] = {c1,c2,ccD0,ccPi0,ccEta};
72
73 sprintf(NameFile1, "40Ca_breakup_%i_MeV_in_GeV", EBeamMeV); //File name
74 PReaction *Reac = new PReaction(cc,NameFile1,5,1,0,0,0); // Define reaction
75
76 cout << "******************************************" << endl;
77 cout << "Beam Energy:" << EBeam << endl;
78 cout << "******************************************" << endl;
79
80 Reac->loop(EventNumber); //Number of events
81 Reac->Print(); // Write to .root file
82
83
84 //Increase energy
85 i++;
86 DeltaEnergy=i*iter;
87 EBeam = StartEBeam+DeltaEnergy;
88 EBeamMeV = EBeam*1000;
89 }
90}
void Ca40_breakup_macro(Int_t EventNumber=10000, Double_t StartEBeam=1.5, Double_t iter=500./1000.)
PDistributionManager * makeDistributionManager()
Bool_t Exec(const char *command)
int loop(int i=-1, int wf=0, int verbose=1)
Definition PReaction.h:69
void Print(const Option_t *delme=NULL) const
PParticle * s2[]
PChannel * c2
PChannel * cc[]
PParticle * s
Definition dp_mult.C:25
PParticle * cc2[]
Definition fermi_dd.C:31
PParticle * cc1[]
Definition fermi_dd.C:30