]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenDoubleScan.cxx
Introducing new Rndm and QA classes
[u/mrichter/AliRoot.git] / EVGEN / AliGenDoubleScan.cxx
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$
18 Revision 1.3  2000/10/02 21:28:06  fca
19 Removal of useless dependecies via forward declarations
20
21 Revision 1.2  2000/06/09 20:37:51  morsch
22 All coding rule violations except RS3 corrected
23
24 Revision 1.1  2000/02/23 16:25:14  morsch
25 First commit of this file
26
27 */
28
29 #include "AliGenDoubleScan.h"
30 #include "AliRun.h"
31
32  ClassImp(AliGenDoubleScan)
33     
34  AliGenDoubleScan::AliGenDoubleScan()
35          :AliGenScan(-1)
36 {
37 }
38
39 AliGenDoubleScan::AliGenDoubleScan(Int_t npart)
40     :AliGenScan(npart)
41 {
42 // Constructor
43 }
44
45 //____________________________________________________________
46 AliGenDoubleScan::~AliGenDoubleScan()
47 {
48 // Destructor
49 }
50
51 //____________________________________________________________
52 void AliGenDoubleScan::Generate()
53 {
54     //
55     // Generate one trigger
56     //
57   
58     Float_t polar[3]= {0,0,0};
59     //
60     Float_t origin[3];
61     Float_t p[3];
62     Int_t nt;
63     Float_t pmom, theta, phi;
64     //
65     Float_t random[6];
66     Float_t dx,dy,dz;
67     
68     //
69     if (fNy > 0) {
70         dx=(fXmax-fXmin)/fNx;
71     } else {
72         dx=1e10;
73     }
74
75     if (fNy > 0) {
76         dy=(fYmax-fYmin)/fNy;
77     } else {
78         dy=1e10;
79     }
80     
81     if (fNz > 0) {
82       dz=(fZmax-fZmin)/fNz;
83     } else {
84         dz=1e10;
85     }
86     for (Int_t ix=0; ix<fNx; ix++) {
87       for (Int_t iy=0; iy<fNy; iy++) {
88           for (Int_t iz=0; iz<fNz; iz++){
89               Rndm(random,6);
90               origin[0]=fXmin+ix*dx+2*(random[0]-0.5)*fOsigma[0];
91               origin[1]=fYmin+iy*dy+2*(random[1]-0.5)*fOsigma[1];
92               origin[2]=fZmin+iz*dz+2*(random[2]-0.5)*fOsigma[2];            
93               pmom=fPMin+random[3]*(fPMax-fPMin);
94               theta=fThetaMin+random[4]*(fThetaMax-fThetaMin);
95               phi=fPhiMin+random[5]*(fPhiMax-fPhiMin);
96               p[0] = pmom*TMath::Cos(phi)*TMath::Sin(theta);
97               p[1] = pmom*TMath::Sin(phi)*TMath::Sin(theta);
98               p[2] = pmom*TMath::Cos(theta);
99               gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
100 //
101 // Generate 2nd particle at distance fDistance from  the first
102 //
103               Rndm(random,6);
104               Float_t phi2=2.*TMath::Pi()*random[0];
105               Float_t dx  =fDistance*TMath::Sin(phi2);
106               Float_t dy  =fDistance*TMath::Cos(phi2);        
107               origin[0]=origin[0]+dx;
108               origin[1]=origin[1]+dy;         
109               pmom=fPMin+random[1]*(fPMax-fPMin);
110               theta=fThetaMin+random[2]*(fThetaMax-fThetaMin);
111               phi=fPhiMin+random[3]*(fPhiMax-fPhiMin);
112               p[0] = pmom*TMath::Cos(phi)*TMath::Sin(theta);
113               p[1] = pmom*TMath::Sin(phi)*TMath::Sin(theta);
114               p[2] = pmom*TMath::Cos(theta);
115               gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
116           }
117       }
118   }
119 }
120
121
122
123
124
125
126
127
128
129
130
131
132