// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4.cc.omit,v 1.2 1999/12/05 17:50:11 gcosmo Exp $ 
// GEANT4 tag $Name: geant4-01-00 $ 
//
#include "G3toG4.hh"

//G4GeometryManager::G4GeometryManager()
//{
//    ofile << "G4GeometryManager: Open manager\n";
//}

//void G4GeometryManager::CloseGeometry()
//{
//    ofile << "G4GeometryManager::CloseGeometry  close geometry\n";
//}

G4VSolid::G4VSolid()
{
    ofile << "G4VSolid: Making solid\n";
}

G4VSolid::G4VSolid(G4String shape, G4double* )
{
    ofile << "G4VSolid: Making solid " << shape << '\n';
}

G4VSolid::G4VSolid(G4String shape, G4double* , G4Angles)
{
    ofile << "G4VSolid: Making solid " << shape << '\n';
}

G4Material::G4Material(G4String name, G4double dens)
{
    ofile << "G4Material: Making material '" << name << "' density " << dens << '\n';
}

void G4Material::add(G4double a, G4double z, G4double fraction)
{
    ofile << "   G4Material::add a,z,fraction " << a << " " << z << " " << fraction << '\n';
}

G4UserLimits::G4UserLimits(G4double stepmin, G4double stepmax)
{
    ofile << "G4UserLimits: stepmin " << stepmin << " max " << stepmax << '\n';
}

G4LogicalVolume::G4LogicalVolume(G4String name, G4VSolid*, G4Material*,
                                 G4MagneticField*, G4UserLimits*)
{
    myname = name;
    ofile << "G4LogicalVolume: Creating logical volume " << name << '\n';
}

void G4LogicalVolume::ApplyAttribute(G4String attribute, G4int ival)
{
    ofile << "G4LogicalVolume::ApplyAttribute " << attribute << " to volume " << myname
        << ", value " << ival << '\n';
}

G4VPhysicalVolume::G4VPhysicalVolume()
{
    ofile << "G4VPhysicalVolume: Make physical vol\n";
}

G4VPhysicalVolume* G4PVPlacement(G4String name, G4LogicalVolume*,
                                G4VPhysicalVolume* p, G4Transform*,
                                G4int, G4Only)
{
    ofile << "G4PVPLacement: Place phys vol " << name << '\n';
    return p;
}

G4VPhysicalVolume* G4PVIndex(G4String name, G4LogicalVolume*,
                            G4VPhysicalVolume* p, G4Transform*,
                            G4int, G4Only, G4double*,
                            G4int npars)
{
    ofile << "G4PVIndex: Place index vols " << name << " " << npars << '\n';
    return p;
}

void G4PVReplicas(G4String name, G4LogicalVolume*, G4VPhysicalVolume*,
                  EAxis, G4int ndiv, G4double range, G4double offset)
{
    ofile << "G4PVReplicas: Place replicas " << name << " " << ndiv << " " << range <<
        " " << offset << '\n';
}

void G4PVParametrized(G4String name, void* , G4LogicalVolume*,
                      G4VPhysicalVolume*, EAxis, G4int ndiv, 
                      G4double range, G4double offset)
{
    ofile << "G4PVParametrized: Place parametrized volumes " << name 
            << " " << ndiv << " " << range << " " << offset << '\n';
}

G4ProcessManager::G4ProcessManager(G4String name)
{
    ofile << "G4ProcessManager: " << " manager for " << name << '\n';
}

G4Decay::G4Decay()
{
    ofile << "G4Decay: Create decay object\n";
}

void G4Decay::AddMode(G4int mode, G4double br)
{
    ofile << "G4Decay::AddMode: add mode ID " << mode << " BR " << br
            << '\n';
}


G4ParticleDef::G4ParticleDef(G4String name, G4ProcessManager*,
                             G4double m, G4double q,
                             G4double life)
{
    ofile << "G4ParticleDef: Create particle " << name << " mass " << m <<
        " chg " << q << " life " << life << '\n';
}

void G4ParticleDef::SetDecay(G4Decay*)
{
    ofile << "G4ParticleDef::SetDecay: Set particle decay\n";
}

G4Box::G4Box(G4String, G4double*)
{
    ofile << "  G4Box: make BOX\n";
}

G4Trap::G4Trap(G4String, G4double*, G4Angles)
{
    ofile << "  G4Trap: make Trap\n";
}

G4Tubs::G4Tubs(G4String, G4double*, G4Angles)
{
    ofile << "  G4Tubs: make Tubs\n";
}

G4Cons::G4Cons(G4String, G4double*, G4Angles)
{
    ofile << "  G4Cons: make Cons\n";
}

G4Sphe::G4Sphe(G4String, G4double*, G4Angles)
{
    ofile << "  G4Sphe: make Sphe\n";
}

G4Para::G4Para(G4String, G4double*, G4Angles)
{
    ofile << "  G4Para: make Para\n";
}

G4Pgon::G4Pgon(G4String, G4double*)
{
    ofile << "  G4Pgon: make Pgon\n";
}

G4Pcon::G4Pcon(G4String, G4double*)
{
    ofile << "  G4Pcon: make Pcon\n";
}

G4Eltu::G4Eltu(G4String, G4double*)
{
    ofile << "  G4Eltu: make Eltu\n";
}

G4Hype::G4Hype(G4String, G4double*, G4Angles)
{
    ofile << "  G4Hype: make Hype\n";
}

G4Gtra::G4Gtra(G4String, G4double*, G4Angles)
{
    ofile << "  G4Gtra: make Gtra\n";
}

G4Ctub::G4Ctub(G4String, G4double*, G4Angles)
{
    ofile << "  G4Ctub: make Ctub\n";
}
