]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RICH/AliGenRadioactive.cxx
Adding MUON HLT code to the repository.
[u/mrichter/AliRoot.git] / RICH / AliGenRadioactive.cxx
CommitLineData
998b831f 1#include "AliGenRadioactive.h"
2#include <TPDGCode.h>
3#include <AliRun.h>
4#include <TDatabasePDG.h>
5#include <AliLog.h>
6
7//__________________________________________________________________________________________________
8AliGenRadioactive::AliGenRadioactive(Int_t iSrcNucleus,Int_t iNsecondaries):AliGenerator()
9{
10//Main ctor. Used to define radioactive source.
11 Double_t e[100],a[100];//arrays to store experimental points
12 Int_t nPoints;
13 switch(iSrcNucleus){
14 case kSr90: fPartId=kElectron; nPoints=46; //experimental part
15 a[ 0]=0.08605; a[ 1]=0.0878; a[ 2]=0.08705; a[ 3]=0.07855; a[ 4]=0.0709; a[ 5]=0.0647; a[ 6]=0.05015; a[ 7]=0.0372; a[ 8]=0.0268; a[ 9]=0.0215;
16 a[10]=0.0157; a[11]=0.01685; a[12]=0.01745; a[13]=0.01645; a[14]=0.0175; a[15]=0.01635; a[16]=0.01825; a[17]=0.0177; a[18]=0.01735; a[19]=0.0161;
17 a[20]=0.0159; a[21]=0.0176; a[22]=0.01605; a[23]=0.0161; a[24]=0.01495;a[25]=0.01595; a[26]=0.01525; a[27]=0.0138; a[28]=0.0121; a[29]=0.0101;
18 a[30]=0.01175; a[31]=0.01095; a[32]=0.0089; a[33]=0.0091; a[34]=0.0625; a[35]=0.0505; a[36]=0.0475; a[37]=0.0039; a[38]=0.0031; a[39]=0.0028;
19 a[40]=0.0025; a[41]=0.0017; a[42]=4.5e-4; a[43]=4.5e-4; a[44]=1.5e-4; a[45]=0;
20 break;
21 default: AliError("Wrong source nucleus specified"); return;
22 }
23 for(Int_t i=0;i<nPoints;i++) e[i]=0.001*(i*0.05+0.025); //kinetic energy GeV
24 fGenH1=new TH1F("Sr90","Sr90 generator hist",nPoints-1,0,e[nPoints-1]);
25 for(Int_t i=0;i<nPoints;i++) fGenH1->Fill(e[i],a[i]);
26 fNpart=iNsecondaries;
27}
28//__________________________________________________________________________________________________
29void AliGenRadioactive::Generate()
30{
31// Generate one trigger
32 Int_t nt=0;
33 Double_t ekin=0,p=0,theta=0,phi=0,x=0,y=0,z=0,px=0,py=0,pz=0,polx=0,poly=0,polz=0;
34 Double_t m=gAlice->PDGDB()->GetParticle(fPartId)->Mass();
35 for(Int_t i=0;i<fNpart;i++){
36 x=fOrigin.At(0)+fOsigma.At(0)*(Rndm()-0.5); y=fOrigin.At(1)+fOsigma.At(1)*(Rndm()-0.5); z=fOrigin.At(2)+fOsigma.At(2)*(Rndm()-0.5);
37 ekin=fGenH1->GetRandom(); p=TMath::Sqrt(ekin*(2*m+ekin));
38 theta=Rndm()*fThetaMax; phi=Rndm()*fPhiMax;
39 px=p*TMath::Cos(theta)*TMath::Cos(phi); py=p*TMath::Cos(theta)*TMath::Sin(phi); pz=p*TMath::Sin(theta);
40// AliDebug(1,Form("Origin=(%5.2f,%5.2f,%5.2f) Ekin=%5.3fMeV,P=%5.3fMeV (%5.2f,%5.2f,%5.2f)",x,y,z,1000*ekin,1000*p,1000*px,1000*py,1000*pz));
41 PushTrack(fTrackIt,-1,fPartId,px,py,pz,ekin+m,
42 x, y, z,0,
43 polx=0,poly=0,polz=0,kPPrimary,nt);//cm, GeV
44 }
45}