LCOV - code coverage report
Current view: top level - EVGEN - AliGenScan.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 72 1.4 %
Date: 2016-06-14 17:26:59 Functions: 1 12 8.3 %

          Line data    Source code
       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             : /* $Id$ */
      17             : 
      18             : // Realisation of AliGenerator that generates particles with
      19             : // vertices on a user defined grid.
      20             : // The vertex positions can be smeared. 
      21             : // Momentum vectors are defined through the methods provided by AliGenerator.
      22             : // Author: andreas.morsch@cern.ch
      23             : 
      24             : #include "AliGenScan.h"
      25             : 
      26           6 :  ClassImp(AliGenScan)
      27             :     
      28             :  AliGenScan::AliGenScan()
      29           0 :      :AliGenerator(-1), 
      30           0 :       fXCmin(0),
      31           0 :       fXCmax(0),
      32           0 :       fNx(1),
      33           0 :       fYCmin(0),
      34           0 :       fYCmax(0),
      35           0 :       fNy(1),
      36           0 :       fZmin(0),
      37           0 :       fZmax(0),
      38           0 :       fNz(1),
      39           0 :       fIpart(0)
      40           0 : {
      41             : // Constructor
      42             : //
      43             : //  Read all particles
      44           0 :     fNpart=-1;
      45           0 : }
      46             : 
      47             : AliGenScan::AliGenScan(Int_t npart)
      48           0 :     :AliGenerator(npart), 
      49           0 :       fXCmin(0),
      50           0 :       fXCmax(0),
      51           0 :       fNx(1),
      52           0 :       fYCmin(0),
      53           0 :       fYCmax(0),
      54           0 :       fNy(1),
      55           0 :       fZmin(0),
      56           0 :       fZmax(0),
      57           0 :       fNz(1),
      58           0 :       fIpart(0)
      59           0 : {
      60             : // Constructor
      61           0 :     fName  = "Scan";
      62           0 :     fTitle = "Generator for particles on a grid";
      63           0 : }
      64             : 
      65             : //____________________________________________________________
      66           0 : AliGenScan::~AliGenScan()
      67           0 : {
      68             : // Destructor
      69           0 : }
      70             : 
      71             : void AliGenScan::SetRange(Int_t nx, Float_t xmin, Float_t xmax,
      72             :                      Int_t ny, Float_t ymin, Float_t ymax,
      73             :                      Int_t nz, Float_t zmin, Float_t zmax)
      74             : {
      75             : // Define the grid
      76           0 :     fXCmin=xmin;
      77           0 :     fXCmax=xmax;
      78           0 :     fNx=nx;
      79           0 :     fYCmin=ymin;
      80           0 :     fYCmax=ymax;
      81           0 :     fNy=ny;
      82           0 :     fZmin=zmin;
      83           0 :     fZmax=zmax;
      84           0 :     fNz=nz;
      85           0 : }
      86             : 
      87             : //____________________________________________________________
      88             : void AliGenScan::Generate()
      89             : {
      90             :   //
      91             :   // Generate one trigger
      92             :   //
      93             :   
      94           0 :   Float_t polar[3]= {0,0,0};
      95             :   //
      96           0 :   Float_t origin[3];
      97           0 :   Float_t p[3];
      98           0 :   Int_t nt;
      99             :   Float_t pmom, theta, phi;
     100             :   //
     101           0 :   Float_t random[6];
     102             :   Float_t dx,dy,dz;
     103             :   
     104             :   //
     105           0 :   if (fNx > 0) {
     106           0 :       dx=(fXCmax-fXCmin)/fNx;
     107           0 :   } else {
     108             :       dx=1e10;
     109             :   }
     110             : 
     111           0 :   if (fNy > 0) {
     112           0 :       dy=(fYCmax-fYCmin)/fNy;
     113           0 :   } else {
     114             :       dy=1e10;
     115             :   }
     116             : 
     117           0 :   if (fNz > 0) {
     118           0 :       dz=(fZmax-fZmin)/fNz;
     119           0 :   } else {
     120             :       dz=1e10;
     121             :   }
     122           0 :   for (Int_t ix=0; ix<fNx; ix++) {
     123           0 :       for (Int_t iy=0; iy<fNy; iy++) {
     124           0 :           for (Int_t iz=0; iz<fNz; iz++){
     125           0 :               Rndm(random,6);
     126           0 :               origin[0]=fXCmin+ix*dx+2*(random[0]-0.5)*fOsigma[0];
     127           0 :               origin[1]=fYCmin+iy*dy+2*(random[1]-0.5)*fOsigma[1];
     128           0 :               origin[2]=fZmin+iz*dz+2*(random[2]-0.5)*fOsigma[2];            
     129           0 :               pmom=fPMin+random[3]*(fPMax-fPMin);
     130           0 :               theta=fThetaMin+random[4]*(fThetaMax-fThetaMin);
     131           0 :               phi=fPhiMin+random[5]*(fPhiMax-fPhiMin);
     132           0 :               p[0] = pmom*TMath::Cos(phi)*TMath::Sin(theta);
     133           0 :               p[1] = pmom*TMath::Sin(phi)*TMath::Sin(theta);
     134           0 :               p[2] = pmom*TMath::Cos(theta);
     135           0 :               PushTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
     136             :           }
     137             :       }
     138             :   }
     139           0 : }
     140             : 
     141             : 
     142             : 
     143             : 
     144             : 
     145             : 
     146             : 
     147             : 
     148             : 

Generated by: LCOV version 1.11