]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliLegoGenerator.cxx
Clean-up in includes.
[u/mrichter/AliRoot.git] / STEER / AliLegoGenerator.cxx
index bfda2539c5dbfb5156bb4e37519c360b44d5d1d2..e6ba5e14b94ad6abf2581e88c77c429d416ac09d 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.3  2000/10/26 14:15:54  morsch
-- Base class now
-- Change from theta, phi to general coordinates Coor1, Coor2
-- PropagateCylinder: bug in calculation of distance to limiting radius corrected.
+/* $Id$ */
 
-Revision 1.2  2000/07/13 16:19:09  fca
-Mainly coding conventions + some small bug fixes
-
-Revision 1.1  2000/07/12 08:56:25  fca
-Coding convention correction and warning removal
-
-Revision 1.16  2000/05/26 08:35:03  fca
-Move the check on z after z has been retrieved
-
-Revision 1.15  2000/05/16 13:10:40  fca
-New method IsNewTrack and fix for a problem in Father-Daughter relations
-
-Revision 1.14  2000/04/27 10:38:21  fca
-Correct termination of Lego Run and introduce Lego getter in AliRun
-
-Revision 1.13  2000/04/26 10:17:31  fca
-Changes in Lego for G4 compatibility
-
-Revision 1.12  2000/04/07 11:12:33  fca
-G4 compatibility changes
-
-Revision 1.11  2000/03/22 13:42:26  fca
-SetGenerator does not replace an existing generator, ResetGenerator does
-
-Revision 1.10  2000/02/23 16:25:22  fca
-AliVMC and AliGeant3 classes introduced
-ReadEuclid moved from AliRun to AliModule
-
-Revision 1.9  1999/12/03 10:54:01  fca
-Fix lego summary
-
-Revision 1.8  1999/10/01 09:54:33  fca
-Correct logics for Lego StepManager
-
-Revision 1.7  1999/09/29 09:24:29  fca
-Introduction of the Copyright and cvs Log
-*/
+//------------------------------------------------------------------------
+//        Generic Lego generator code
+//    Uses geantino rays to check the material distributions and detector's
+//    geometry
+//    Author: A.Morsch
+//------------------------------------------------------------------------
 
 #include "AliLegoGenerator.h"
 #include "AliRun.h"
+#include "AliMC.h"
+#include "AliLog.h"
 
 ClassImp(AliLegoGenerator)
 
-//___________________________________________
-
-AliLegoGenerator::AliLegoGenerator()
+//_______________________________________________________________________
+AliLegoGenerator::AliLegoGenerator():
+  fRadMin(0),
+  fRadMax(0),
+  fZMax(0),
+  fNCoor1(0),
+  fNCoor2(0),
+  fCoor1Min(0),
+  fCoor1Max(0),
+  fCoor2Min(0),
+  fCoor2Max(0),
+  fCoor1Bin(-1),
+  fCoor2Bin(-1),
+  fCurCoor1(0),
+  fCurCoor2(0)
 {
   //
   // Default Constructor
   //
   SetName("Lego");
-
-  fCoor1Bin  =  fCoor2Bin = -1;
-  fCurCoor1  =  fCurCoor2 =  0;
 }
 
+//_______________________________________________________________________
 AliLegoGenerator::AliLegoGenerator(Int_t nc1, Float_t c1min,
-                                  Float_t c1max, Int_t nc2, 
-                                  Float_t c2min, Float_t c2max,
-                                  Float_t rmin, Float_t rmax, Float_t zmax) :
-  AliGenerator(0), fRadMin(rmin), fRadMax(rmax), fZMax(zmax), fNCoor1(nc1),
-  fNCoor2(nc2), fCoor1Bin(nc1), fCoor2Bin(-1), fCurCoor1(0), fCurCoor2(0)
-  
+                                   Float_t c1max, Int_t nc2, 
+                                   Float_t c2min, Float_t c2max,
+                                   Float_t rmin, Float_t rmax, Float_t zmax):
+  AliGenerator(0), 
+  fRadMin(rmin),
+  fRadMax(rmax),
+  fZMax(zmax),
+  fNCoor1(nc1),
+  fNCoor2(nc2),
+  fCoor1Min(0),
+  fCoor1Max(0),
+  fCoor2Min(0),
+  fCoor2Max(0),
+  fCoor1Bin(nc1),
+  fCoor2Bin(-1),
+  fCurCoor1(0),
+  fCurCoor2(0)
 {
   //
   // Standard generator for Lego rays
   //
+  SetName("Lego");
   SetCoor1Range(nc1, c1min, c1max);
   SetCoor2Range(nc2, c2min, c2max);
-  SetName("Lego");
 }
 
-//___________________________________________
+//_______________________________________________________________________
 void AliLegoGenerator::Generate()
 {
-// Create a geantino with kinematics corresponding to the current bins
-// Here: Coor1 =  theta 
-//       Coor2 =  phi.
-   
+  // Create a geantino with kinematics corresponding to the current bins
+  // Here: Coor1 =  theta 
+  //       Coor2 =  phi.
+  
   //
   // Rootinos are 0
    const Int_t kMpart = 0;
@@ -108,11 +95,11 @@ void AliLegoGenerator::Generate()
    // Prepare for next step
    if(fCoor1Bin>=fNCoor1-1)
      if(fCoor2Bin>=fNCoor2-1) {
-       Warning("Generate","End of Lego Generation");
+       AliWarning("End of Lego Generation");
        return;
      } else { 
        fCoor2Bin++;
-       printf("Generating rays in phi bin:%d\n",fCoor2Bin);
+       AliDebug(1, Form("Generating rays in phi bin:%d",fCoor2Bin));
        fCoor1Bin=0;
      } else fCoor1Bin++;
 
@@ -140,15 +127,17 @@ void AliLegoGenerator::Generate()
    
    Float_t polar[3]={0.,0.,0.};
    Int_t ntr;
-   gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, kPPrimary, ntr);
+   gAlice->GetMCApp()->PushTrack(1, -1, kMpart, pmom, orig, polar, 0, kPPrimary, ntr);
    
 }
 
-//___________________________________________
-Float_t AliLegoGenerator::PropagateCylinder(Float_t *x, Float_t *v, Float_t r, Float_t z)
+//_______________________________________________________________________
+Float_t AliLegoGenerator::PropagateCylinder(Float_t *x, Float_t *v, Float_t r, 
+                                            Float_t z)
 {
-// Propagate to cylinder from inside
-
+  //
+  // Propagate to cylinder from inside
+  //
    Double_t hnorm, sz, t, t1, t2, t3, sr;
    Double_t d[3];
    const Float_t kSmall  = 1e-8;