00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef BDSBeamPipe_h
00011 #define BDSBeamPipe_h 1
00012
00013 #include"globals.hh"
00014 #include "BDSMaterials.hh"
00015 #include "G4LogicalVolume.hh"
00016
00017 #include "G4FieldManager.hh"
00018 #include "G4ChordFinder.hh"
00019 #include "G4Mag_UsualEqRhs.hh"
00020 #include "G4UserLimits.hh"
00021 #include "G4VisAttributes.hh"
00022 #include "G4UniformMagField.hh"
00023 #include "G4IntersectionSolid.hh"
00024 #include "G4VSolid.hh"
00025 #include "G4Trd.hh"
00026 #include "G4Tubs.hh"
00027 #include "G4FieldManager.hh"
00028
00029 #include "BDSEnergyCounterSD.hh"
00030
00031 class BDSBeamPipe
00032 {
00033 public:
00034 BDSBeamPipe(const G4String& aName, G4double aLength, G4double aRadius,
00035 G4double angle=0);
00036 ~BDSBeamPipe();
00037
00038 G4LogicalVolume* GetLogicalVolume();
00039 G4LogicalVolume* GetInnerLogicalVolume();
00040 G4ThreeVector GetPos();
00041 G4RotationMatrix* GetRot();
00042
00043 void SetBPFieldManager(G4FieldManager* aFieldManager);
00044 void SetCoarseFieldManager(G4FieldManager* aFieldManager);
00045
00046 protected:
00047
00048 private:
00049 G4LogicalVolume* itsLogicalVolume;
00050 G4LogicalVolume* itsInnerLogicalVolume;
00051 G4LogicalVolume* itsCoarseInnerLogicalVolume;
00052 G4VisAttributes* SetVisAttributes();
00053
00054
00055 G4UserLimits* itsUserLimits;
00056 G4VisAttributes* itsVisAttributes;
00057
00058 G4ThreeVector itsPos;
00059 G4RotationMatrix* itsRot;
00060
00061 G4Trd* itsTrd1;
00062 G4Trd* itsTrd2;
00063 G4IntersectionSolid* itsTubeInTrd;
00064 G4IntersectionSolid* itsInnerTubeInTrd;
00065
00066 G4Tubs* itsTube;
00067 G4Tubs* itsInnerTube;
00068
00069 BDSEnergyCounterSD* itsECounter;
00070 };
00071
00072 inline G4LogicalVolume* BDSBeamPipe::GetInnerLogicalVolume()
00073 {return itsInnerLogicalVolume;}
00074
00075 #endif