* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.1 2000/07/26 15:10:57 morsch
-Helper class to write geometry in ALIFE format in parallel with Geant geometry definition.
+/* $Id$ */
-*/
+//----------------------------------------------------------------------
+// Helper class to write geometry in ALIFE format
+// in parallel with Geant geometry definition.
+// Author: A.Morsch
+//----------------------------------------------------------------------
#include <AliALIFE.h>
ClassImp(AliALIFE)
- AliALIFE::AliALIFE(const char* file1, const char* file2)
+
+AliALIFE::AliALIFE(const char* file1, const char* file2)
{
// Constructor
fNBodies = 0;
fDefaultVolume2 = "DEFAU2";
}
- AliALIFE::AliALIFE()
+AliALIFE::AliALIFE()
{
// Default constructor
fBodyFile = "FlukaBody.inp";
void AliALIFE:: Cylinder(Float_t rmin, Float_t rmax,
Float_t zmin, Float_t zmax,
Float_t pos[3],
- char* Material, char* Field, char* Cuts)
+ const char* Material,
+ const char* Field,
+ const char* Cuts)
{
// Simple cylinder
//
// Bodies
// ^^^^^^
- char name1[5], name2[5], name3[5], name4[5];
+ char name1[6], name2[6], name3[6], name4[6];
// outer radius
sprintf(name1, "R%4.4d", fNBodies++);
}
void AliALIFE::OnionCylinder(Float_t* r, Int_t nr, Float_t zmin, Float_t zmax,
- Float_t pos[3], char** Materials,
- char** Fields, char** Cuts)
+ Float_t pos[3], const char** Materials,
+ const char** Fields, const char** Cuts)
{
//
// Concentric cylinders
Float_t rmax1, Float_t rmax2,
Float_t zmin, Float_t zmax,
Float_t pos[3],
- char* Material, char* Field, char* Cuts)
+ const char* Material,
+ const char* Field,
+ const char* Cuts)
{
// Simple cone
// outer radius
d=zmax-zmin;
+ sprintf(nameCou, "C%4.4d", fNBodies++);
if (rmax1 >= 0. && rmax2 >= 0.) {
if (rmax1!=rmax2) {
if (rmax1 > rmax2) {
r1=rmax2;
r2=rmax1;
}
- sprintf(nameCou, "C%4.4d", fNBodies++);
fprintf(fFile1,"%5s TRC%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n",
nameCou, pos[0], pos[1], pos[2], 0., 0., d);
fprintf(fFile1," %10.3f%10.3f\n",r1,r2);
} else {
- sprintf(nameCou, "C%4.4d", fNBodies++);
fprintf(fFile1,"%5s ZCC%10.3f%10.3f%10.3f\n",
nameCou, pos[0], pos[1], rmax1);
}
}else {
- strcpy(nameCou,fDefaultVolume1);
+ fDefaultVolume1 = nameCou;
}
// inner radius
+ sprintf(nameCin, "C%4.4d", fNBodies++);
if (rmin1 >= 0. && rmin2 >= 0.) {
if (rmin1!=rmin2) {
if (rmin1 != 0 && rmin2 !=0) {
r2=rmin1;
d=-d;
}
- sprintf(nameCin, "C%4.4d", fNBodies++);
fprintf(fFile1,"%5s TRC%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n",
nameCin, pos[0], pos[1], pos[2], 0., 0., d);
fprintf(fFile1," %10.3f%10.3f\n",r1,r2);
}
} else {
- sprintf(nameCin, "C%4.4d", fNBodies++);
fprintf(fFile1,"%5s ZCC%10.3f%10.3f%10.3f\n",
nameCin, pos[0], pos[1], rmin1);
}
}else {
- strcpy(nameCin,fDefaultVolume2);
+ fDefaultVolume2 = nameCin;
}
void AliALIFE::OnionCone (Float_t* r1, Float_t* r2, Int_t nr,
Float_t zmin, Float_t zmax,
- Float_t pos[3], char** Materials, char** Fields,
- char** Cuts)
+ Float_t pos[3], const char** Materials,
+ const char** Fields, const char** Cuts)
{
// Concentric cones
//
}
}
} else {
- strcpy(nameCin,fDefaultVolume1);
+ fDefaultVolume1 = nameCin;
}
nameCou, pos[0], pos[1], r1[i]);
}
} else {
- strcpy(nameCou,fDefaultVolume1);
+ fDefaultVolume1 = nameCou;
}
// Volumes
fprintf(fFile2,"EMFCUT=%s\n", "$UNSHIELDED");
fprintf(fFile2,"WW-FACTOR=%s\n", "$UNSHIELDED");
}
- if (hasInner) {
- fprintf(fFile2,"+%5s-%5s+%5s-%5s\n",
+ if (hasInner || isCylinder) {
+ if (!isCylinder) fprintf(fFile2,"+%5s-%5s+%5s-%5s\n",
nameCou, nameCin, nameZou, nameZin);
+ if (isCylinder) fprintf(fFile2,"+%5s+%5s-%5s\n",
+ nameCou, nameZou, nameZin);
} else {
fprintf(fFile2,"+%5s\n", nameCou);
hasInner=kTRUE;
void AliALIFE::PolyCone(Float_t* rmin, Float_t* rmax, Float_t* z,
Int_t nz,
Float_t pos[3],
- char* Material, char* Field, char* Cuts)
+ const char* Material,
+ const char* Field,
+ const char* Cuts)
{
//
// Equivalent to the Geant3 PCON
void AliALIFE::OnionPolyCone(Float_t** r, Float_t* z,
Int_t nr, Int_t nz,
Float_t pos[3],
- char** Materials, char** Fields, char** Cuts)
+ const char** Materials,
+ const char** Fields,const char** Cuts)
{
//
// Concentric PCONS
}
}
-void AliALIFE::Comment(char* Comment)
+void AliALIFE::Comment(const char* Comment)
{
// Insert comment line
fprintf(fFile1,"*%s\n", Comment);
}
-void AliALIFE::Finish()
+void AliALIFE::Finish(Bool_t iremove)
{
// Finish geometry definition
char s[BUFSIZ];
fclose(fFile1);
fclose(fFile2);
+ if (iremove) {
+ remove(fVolumeFile);
+ remove(fBodyFile);
+ }
}
+void AliALIFE::Copy(TObject&) const
+{
+ //
+ // Copy
+ //
+ Fatal("Copy","Not implemented!\n");
+}