* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.2 2000/07/13 16:19:09 fca
-Mainly coding conventions + some small bug fixes
+/* $Id$ */
-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;
// 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++;
Float_t polar[3]={0.,0.,0.};
Int_t ntr;
- gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, "LEGO ray", 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;