small update
[u/mrichter/AliRoot.git] / EVGEN / AliGenKrypton.cxx
CommitLineData
d02055c6 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/*
17$Log$
8ed06969 18Revision 1.2 2007/10/23 09:27:16 hristov
19Adding dependence on the dip angle (Marek)
20
058d4fc8 21Revision 1.1 2007/06/24 20:53:11 hristov
22New generator for the krypton runs of TPC (Marek)
23
d02055c6 24*/
25
26//
27// generates single Kr decay, in order to generate the calibration data
28// one should use it together with the AliGenCocktail class
29//
30#include "AliGenKrypton.h"
31#include "TPDGCode.h"
32//
33ClassImp(AliGenKrypton)
34
35//________________________________________________________________________
36AliGenKrypton::AliGenKrypton(){
37 //
38 // Default constructor
39 //
40}
41//________________________________________________________________________
42void AliGenKrypton::Generate(){
43 Double_t eelectron[6];
44 Double_t egamma[2];
45 Float_t polar[3]={0.,0.,0.};
46 Int_t nelectron, ngamma;
47 Int_t nt;
48 //
49 // generate decay vertex within the gas TPC volume
50 //
51 Float_t rmin,rmax,zmax;
52 zmax=249.7;
53 rmin=78.8;
54 rmax=258.;
55 Float_t me=511.e-6;
56 Double_t rnd;
57 //
58 rnd=gRandom->Rndm();
59 Float_t r = (rmax-rmin)*rnd+rmin;
60 rnd=gRandom->Rndm();
61 Float_t phi=TMath::TwoPi()*rnd;
62 //
63 Float_t origin[3];
64 //
65 rnd=gRandom->Rndm();
66 origin[2]=zmax*(2.*rnd-1.);
67 origin[0]=r*TMath::Cos(phi);
68 origin[1]=r*TMath::Sin(phi);
69 //
70 Float_t ptot,p[3];
71 //
72 // generate decay
73 //
74 KrDecay(nelectron,ngamma,eelectron,egamma);
75 //
76 // electrons
77 //
78 for(Int_t i=0;i<nelectron;i++){
79 rnd=gRandom->Rndm();
058d4fc8 80 phi=TMath::TwoPi()*rnd;
d02055c6 81 rnd=gRandom->Rndm();
058d4fc8 82 Double_t theta = TMath::Pi()*rnd;
83 ptot=TMath::Sqrt(eelectron[i]*(eelectron[i]+2.*me));
84 p[0]=ptot*TMath::Cos(phi)*TMath::Sin(theta);
85 p[1]=ptot*TMath::Sin(phi)*TMath::Sin(theta);
86 p[2]=ptot*TMath::Cos(theta);
d02055c6 87 //
88 // her push particle
89 //
90 PushTrack(fTrackIt,-1,kElectron,p,origin,polar,0,kPPrimary,nt);
91 }
92 //
93 // gammas
94 //
95 for(Int_t i=0;i<ngamma;i++){
96 rnd=gRandom->Rndm();
8ed06969 97 Double_t theta = TMath::Pi()*rnd;
b64943d8 98 rnd=gRandom->Rndm();
d02055c6 99 phi=TMath::TwoPi()*rnd;
100 ptot=egamma[i];
8ed06969 101 p[0]=ptot*TMath::Cos(phi)*TMath::Sin(theta);
102 p[1]=ptot*TMath::Sin(phi)*TMath::Sin(theta);
8ed06969 103 p[2]=ptot*TMath::Cos(theta);
d02055c6 104 //
105 // her push particle
106 //
107 PushTrack(fTrackIt,-1,kGamma,p,origin,polar,0,kPPrimary,nt);
108 }
109}
110//________________________________________________________________________
111void AliGenKrypton::KrDecay(Int_t &nelectron, Int_t &ngamma, Double_t *eelectron, Double_t *egamma)
112{
113 Double_t prob1[2]={0.76,0.88}; // 0.76, 0.12, 0.12
114 Double_t prob2=0.95; // 0.95, 0.05
115 nelectron=0;
116 ngamma=0;
117
118 Double_t rnd;
119 rnd = gRandom->Rndm();
120 //
121 //
122 // first decay - 32 keV
123 //
8ed06969 124 if(rnd < prob1[0]) {
d02055c6 125 // 2 electrons
126 nelectron = 2;
127 eelectron[0]=30.e-6;
128 eelectron[1]=1.8e-6;
129 }
130 else if (rnd > prob1[1]){
131 // 4 electrons
132 nelectron=4;
133 eelectron[0]=18.e-6;
134 eelectron[1]=10.e-6;
135 eelectron[2]=1.8e-6;
136 eelectron[3]=1.8e-6;
137 }
138 else {
139 // 2 electrons + 1 gamma
140 nelectron = 2;
141 ngamma = 1;
142 eelectron[0]=18.e-6;
143 eelectron[1]=1.8e-6;
144 egamma[0]=12.e-6;
145 }
146 //
147 // second decay - 9 keV
148 //
149 rnd=gRandom->Rndm();
150 //
151 if(rnd < prob2){
152 // 2 electrons
153 nelectron+=2;
154 eelectron[nelectron-2]=7.6e-6;
155 eelectron[nelectron-1]=1.8e-6;
156 }
157 else {
158 ngamma++;
159 egamma[ngamma-1]=9.e-6;
160 }
8ed06969 161
162
d02055c6 163}
164//________________________________________________________________________